Sculpt Mode workflow with multiple objects #71951

Closed
opened 2019-11-27 00:14:51 +01:00 by Pablo Dobarro · 16 comments
Member

This task lists some changes that can be done to improve the workflow in sculpt mode when working on sculpts with multiple objects.
This is not meant to be a multi object sculpt mode design task, just some tweaks and optimizations that can be done on top of the current Sculpt Mode.

Performance
The use case of sculpting on a scene with multiple objects of 5M vertices is more common than sculpting on a single mesh of 70M vertices. Brush and drawing performance are usually OK on 5 - 10M vertices meshes, but working with multiple high poly objects is hard due to the constant data recalculation that happens when working with them.
Enter/Exit sculpt mode and switching between objects should be as fast as possible. To improve that we can:

  • Multithread the PBVH building
  • Tag objects explicitly when they need a PBVH rebuild. Rebuilding introduces a huge amount of lag to the viewport and tools (partially fixed by D6269) that makes sculpt mode hard to use if you are working with multiple high poly objects. If it is possible, ##SculptSession## data (PBVH, mesh connectivity...) should not be recalculated unless it's necessary.

Keymap and Settings
Some settings can be updated to improve the workflow:

  • Use click and drag to start the ##sculpt.brush_stroke## operator instead of click. This way we will have available the click, shift + click, ctrl + click and alt + click events for other operators:

    • Use a modifier + click event to switch between objects. This should also work when the emulate 3 button mouse option is enabled (which is usually enabled when using a pen tabled without 2 buttons on the pen).
    • We can click on a part of the mesh to move the viewport rotation center to that area. Currently you need to start a stroke to change the view rotation center.
    • Use other click events for some common use options, like inverting or clearing the mask.
      This is an easy change to make in the keymap, but it conflicts with the keymap of the transform tool, so that needs to be solved first.
  • Disable lock object modes in the sculpt template and sculpt workspace.

Viewport

  • Make no active objects that are in sculpt mode darker. This should help to differentiate which one is the active object that is going to be affected by the strokes. This should be enabled automatically in Single, Material, Object and Random color modes, but it should not be enabled in Vertex or Texture color mode to avoid affecting the painted colors in a different object.

  • Add xray fesnel (D6266) or a similar effect when working with xray enabled in sculpt mode. We may need additional tweaks to the xray shading mode as sculpt mode does not have any extra element to visualize the object you are working on (like the mesh cage in edit mode).

This task lists some changes that can be done to improve the workflow in sculpt mode when working on sculpts with multiple objects. This is not meant to be a multi object sculpt mode design task, just some tweaks and optimizations that can be done on top of the current Sculpt Mode. **Performance** The use case of sculpting on a scene with multiple objects of 5M vertices is more common than sculpting on a single mesh of 70M vertices. Brush and drawing performance are usually OK on 5 - 10M vertices meshes, but working with multiple high poly objects is hard due to the constant data recalculation that happens when working with them. Enter/Exit sculpt mode and switching between objects should be as fast as possible. To improve that we can: - Multithread the PBVH building - Tag objects explicitly when they need a PBVH rebuild. Rebuilding introduces a huge amount of lag to the viewport and tools (partially fixed by [D6269](https://archive.blender.org/developer/D6269)) that makes sculpt mode hard to use if you are working with multiple high poly objects. If it is possible, ##SculptSession## data (PBVH, mesh connectivity...) should not be recalculated unless it's necessary. **Keymap and Settings** Some settings can be updated to improve the workflow: - Use click and drag to start the ##sculpt.brush_stroke## operator instead of click. This way we will have available the click, shift + click, ctrl + click and alt + click events for other operators: - Use a modifier + click event to switch between objects. This should also work when the emulate 3 button mouse option is enabled (which is usually enabled when using a pen tabled without 2 buttons on the pen). - We can click on a part of the mesh to move the viewport rotation center to that area. Currently you need to start a stroke to change the view rotation center. - Use other click events for some common use options, like inverting or clearing the mask. This is an easy change to make in the keymap, but it conflicts with the keymap of the transform tool, so that needs to be solved first. - Disable lock object modes in the sculpt template and sculpt workspace. **Viewport** - Make no active objects that are in sculpt mode darker. This should help to differentiate which one is the active object that is going to be affected by the strokes. This should be enabled automatically in Single, Material, Object and Random color modes, but it should not be enabled in Vertex or Texture color mode to avoid affecting the painted colors in a different object. - Add xray fesnel ([D6266](https://archive.blender.org/developer/D6266)) or a similar effect when working with xray enabled in sculpt mode. We may need additional tweaks to the xray shading mode as sculpt mode does not have any extra element to visualize the object you are working on (like the mesh cage in edit mode).
Author
Member

Added subscriber: @PabloDobarro

Added subscriber: @PabloDobarro
Member

Added subscriber: @JulienKaspar

Added subscriber: @JulienKaspar
Pablo Dobarro was assigned by Jeroen Bakker 2019-11-27 08:07:53 +01:00

Added subscriber: @MetinSeven-1

Added subscriber: @MetinSeven-1

Added subscriber: @michaelknubben

Added subscriber: @michaelknubben

In terms of clearing and inverting the mask: I've currently got X and A set to that (although, it makes more sense with the default keymap to have A toggle between mask all and mask nothing, but then x becomes pointless)
Ofcourse I'm in favour of also having that on the mouse, but it's a suggestion for those of us who use the keyboard heavily during sculpting.

In terms of clearing and inverting the mask: I've currently got X and A set to that (although, it makes more sense with the default keymap to have A toggle between mask all and mask nothing, but then x becomes pointless) Ofcourse I'm in favour of *also* having that on the mouse, but it's a suggestion for those of us who use the keyboard heavily during sculpting.
Member
  • We can click on a part of the mesh to move the viewport rotation center to that area. Currently you need to start a stroke to change the view rotation center.

Just want to point out that this is already possible with Alt + MMB clicking.

> - We can click on a part of the mesh to move the viewport rotation center to that area. Currently you need to start a stroke to change the view rotation center. Just want to point out that this is already possible with Alt + MMB clicking.

Added subscriber: @pattogo

Added subscriber: @pattogo

Added subscriber: @brecht

Added subscriber: @brecht

Untagging design tasks from specific releases, in general these should only be tagged with the relevant modules and listed on the module page.

Untagging design tasks from specific releases, in general these should only be tagged with the relevant modules and listed on the module page.

Removed subscriber: @MetinSeven-1

Removed subscriber: @MetinSeven-1

Added subscriber: @ckohl_art

Added subscriber: @ckohl_art

Added subscriber: @DirSurya

Added subscriber: @DirSurya

Added subscriber: @BartekMoniewski

Added subscriber: @BartekMoniewski

Removed subscriber: @DirSurya

Removed subscriber: @DirSurya
Member

Changed status from 'Confirmed' to: 'Resolved'

Changed status from 'Confirmed' to: 'Resolved'
Member

I think all of the tasks here are done. Any further feature implementations or improvements can be discussed at a later point.

I think all of the tasks here are done. Any further feature implementations or improvements can be discussed at a later point.
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
9 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#71951
No description provided.