# Dyntopo Refactor: Testing Notes ## Overview - General performance improvements - Dyntopo remeshing is using its own "Spacing" and "Radius" settings for better performance - Attributes are preserved and interpolated while remeshing (Like color attributes and UV maps) - Toggle to optionally ignore UV maps - "Smooth Boundaries" options for relaxing and creasing of edge attributes - Exact preservation of boundaries during remeshing - Choose between different boundary smoothing methods - Creasing and pinning settings for preserving boundaries and their shape (Great for hard surfaces) - "No Dyntopo" toggle to disable remeshing for all or specific brushes - No longer hard coded for every brush - Faster way to disable Dynamic Topology remeshing **To be reverted for now:** - Topology Rake with additional Curvature setting - "Weight by Area" for more even topology distribution while smoothing - "Projection" slider to preserve original shape while smoothing - "Inherit" toggles in dynamic topology settings ## Feedback ### Dynamic Topology Panel - [x] Revert to original UI layout of & naming with dropdown menus of 'main' branch - If needed the Subdivide/Collapse toggles don't need to be a dropdown - [ ] Rename "DynTopo" toggle to "Live Remeshing" - [ ] Rename "Scale dyntopo radius" to just "Radius" - [ ] Add "Preserve UV Maps" (Currently "Ignore UV Maps" in options panel. Shold be moved, renamed and flipped in behavior) - [ ] "Quality" slider is confusing. Should get more testing and potentually even removed if the behavior when set to 1.0 is ideal - [ ] Performance seems very poor when set to 1 - [x] Remove "Relax During Remeshing"? (No relaxing by default) - [x] Remove "Detail Range" - [ ] Remove "Repeat" ? - [x] Remove "Draw Color Cells" - [ ] Remove "Interactive" - [ ] Remove "Developer" - [ ] Remove "Emulate Brush" ### Options Panel - [ ] Renaming and grouping for clarity ("Relax" & "Crease" left of the toggles) - [x] Make Pin sliders only availible for Face Sets - [ ] Expose "Edge Pin" option for face set shape preservation - [x] "Sharp Limit" slider shouldn't affect remeshing quality if "Crease by Angle" is disabled - If this effect is still desireable it could also be split into another setting specific for remeshing - [ ] "Relax UV Seams" toggle isn't doing anything - [x] Remove Show Original <img src="https://hackmd.io/_uploads/BJo01p48h.png" width="400"> - [ ] Some settings here are brush settings. This is not typically the best place for them to be.. - We should make "Pin" and "Limit" sliders scene settings and remove the Unified toggle. This would be the right way to go since these settings only work if the scene toggle is enabled anyway. - [ ] Crease Face Sets toggle cannot be toggled when greyed out. This should be made possible. ### Overlays - [x] Remove Sculpt IDs ### Brush Settings Panel - [ ] "No Dyntopo" toggle - [ ] Avoid negative naming in toggles. Could rename to "Live Remeshing", just like for the header panel. - [ ] Move exclusively into "Advanced" brush settings - [ ] All brushes (which are reasonable) should support dyntopo by default - [ ] Brushes that won't support dyntopo should not even offer the "No Dyntopo" option - [ ] Cloth - [ ] Slide/Relax? - It might be useful. Needs to be tested. - [ ] Pose - [ ] Boundary - [ ] Multires Erase & Smear ### Remeshing Quality - [x] Iterative Remeshing quality - [x] First iteration needs to start on Press - [x] Target resolution should be reached in the first iteration (EDIT: This is now achievalbe with the "Quality" slider). - [x] Initial triangulation needs to be improved - [x] Fix subtle smoothing and shifting during iterative remeshing - [ ] Attribute reprojection - [x] Improve preservation of UV maps and color attributes. - [x] Remeshed surfaces creates hard edges in Face Corner Color atrributes - [ ] Face Corner color attributes are getting random colored vertices on remesh - [x] Cleanup option causes issues - [x] Random deletion of triangles ### Menu Operaters - [ ] Expand broken - [ ] Modal shortcuts don't work - [ ] Causes artefacts with face sets - [ ] Only expands the same face set color - [ ] On cancel flood fills the entire mesh in another face set - [x] "Initialize Face Sets" operators broken - [ ] **`bpy.ops.sculpt.face_set_invert_visibility()`** not working - [x] "Extract Face Set" broken ### Tools - [x] Painting Face Corner color attributes not working - [ ] Smear brush not doing anything ### Undo Issues - [x] Undoing paint strokes leaves first daub of first stroke on the surface ### Crashes - [x] Multires Smear with "No Dyntopo" disabled - [x] Trim operators - [x] Mask Slice operators ### Needs improving - [x] Smooth brush via **<kbd>Shift</kbd>** should use Dyntopo, when "No Dyntopo" is disabled on the Smooth brush & active brush - [ ] No Dyntopo support for - [ ] Grab? Thumb for reference does have dyntopo support and works well. But over long strokes the deformation becomes a bit unpredictable. - [x] Draw Face Sets (Perhaps could align new traingles to brush effect fro clean bounaries?) - [x] Mask - [ ] Dynamic Topology panel disapears when making non-brush tools in the toolbar active # Notes for followup PRs ### General Improvements - [ ] Projected falloff on Grab brush can cause massive performance issues (Needs easily reproducable file) - [ ] Switching between modes or objects is very slow if Dynamic Topology is enabled. - Perhaps this can be sped up? - Or when using the Transfer Mode operator to another object it can be prevented (postponed until switching to a non-sculpt mode). - [ ] Using Clay Strips for too long eventually causes huge lag ## UI **UI Overhaul** - Merge "Remesh" and "Dyntopo" panel - Instead of using "dyntopo" and "voxel", use "Surface" and "Volume" remesh - Add radio button to switch between them instead of a toggle - Toggle in the header toggles the "Live Remeshing" setting - Rename "Detailing" to "Detail Units" (More consistent with other naming conventions) - Rename options within to "View", "Scene" & "View & Radius" - Remove "Manual" Detailing setting (now obsolete) - Keep the name "Detail Size" between different "Detail Unit" settings (In main it switches naming between "Detail Percentage" and "Resolution") - Share the Constant detail size and voxel size between both remeshing methods (More convinient) - Use Units for both values | Default | Set to Surface | Disabled Toggle | | -------- | -------- | -------- | | ![](https://hackmd.io/_uploads/rkCTx4IH2.png) | ![](https://hackmd.io/_uploads/SkDuBa4Ln.png) | ![](https://hackmd.io/_uploads/B1VuHT4Uh.png) | **Topology & Curvature Rake** - Workflow and use cases need a closer look - Recommended use infrequently via a dedicated "Curvature Remesh" brush - Not recommended on any other brushes because of performance issues - Only applicable on organic models - Only applicable on medium resolution models (Could be imprved for high res meshes)? - Only applicable if used in combination with Smoothing effect (Perhaps also "Projection" for shape preservation?) - Better when used with "Weight by Area" for more evenly distributed topology? - Jitters a lot and increasingly destroys shapes and scrambles attribute reprojection - Group Rake settings with Auto-Smooth? **Smoothing** - Weight by Area vs Detail Aware Smoothing. Needs testing - It is likely preferable to smooth the mesh without sliding and redistributing topology. [Detail aware smoothing](https://archive.blender.org/developer/D9385) could be the better feature to include. ![](https://hackmd.io/_uploads/H1kJIeSH2.png) **Dynamic topology - inherit** Inherit settings was a bit tricky to understand. I suggest to replace the word "inherit" with "use global setting" /Bystedt ![](https://storage.googleapis.com/blender-chat/r3Jx5ugeNPpZscrbD/uploads/qGWeJ7eZNFKwnTukA/ydoCbbowwaGLbsamR/yiFNjqQ7H5fB69u3j?GoogleAccessId=blender-chat%40blender-chat.iam.gserviceaccount.com&Expires=1684533919&Signature=OEmi4dzmb2lI0xhO%2Bmh7M0pmyXxPVEToUO%2B15HXRghpUakFbbRyxCAGObiyoKdd8At%2FrUfH8pjwV4SWAbGdwRJh7N21pzMiq%2FumGePjWIcmsSYH6Qvmx9nOboKH1fnnsx8eRkQ7kGbqNmiqOSjNpn%2F0qr71hRyqDRdpp%2BWEJSfcuW2TovLc3toXvHLZws9mOexRjMt0StrfRv596y7mP4%2B12PxgMyDOEg0oVwhzNADzJMyjcHVK%2BideCXZBMyeFq7ecv1KvFlOmS57hZkfWmb8otcJKubH5Er7by3nbC7T%2FIx6Heefb%2BlRSDhPVrGoXv0JiAU74y5L3v7GJUPXkdZw%3D%3D&response-content-disposition=inline) * We need some way to adjust dyntopo settings per brush. Simplify and snake hook are the big brushes that need this (simplify is supposed to ignore the scene subdivide/collapse settings, while snake hook IIRC needs closer dyntopo spacing). /joeedh - I suggest to hardocode this for now as temproary solution. The Inherit setting needs more UI work and shouldn't block the dyntopo PR from getting accepted. /Julien Kaspar ## Ideas - [ ] Add "Detail Aware Collapsing" - A setting to not collapse smaller details based on angle. - Similar to "Sharp Limit" angle in "Crease by Angle" but for remeshing instead of smoothing. ## Ideas for future features - [ ] Add "Smooth Strength" slider, similar to Corner Pin slider in options and every brush settings - Easier changing of smooth strength on **<kbd>Shift</kbd>** without switching tools - Add unified toggle - Under the hood user "Smooth Strength" for smooth brushes instead of "Strength" - [ ] Grey out Remeshing panel and options within if a Multires modifier or Shape Keys are detected on the object. - [ ] Also disable remeshing operators if Shape Keys are detected - [ ] Add detail size operator for dyntopo and voxel remeshing to the header menus - Easier discoverability and changing of the shortcut - Wait for mouse cursor input when used from the menu