Clay strips brush leaves cracks on mesh #123768

Open
opened 2024-06-26 07:01:46 +02:00 by Shyy-Anzr · 13 comments

System Information
Operating system: Windows-10-10.0.17763-SP0 64 Bits
Graphics card: NVIDIA GeForce GTX 1050 Ti/PCIe/SSE2 NVIDIA Corporation 4.6.0 NVIDIA 516.94

Blender Version
Broken: version: 4.2.0 Beta, branch: blender-v4.2-release, commit date: 2024-06-26 00:39, hash: 224307b9aa48
Worked: never

Short description of error
Undoing big Clay Strips brush stroke does not completely undo affected backfaces, leaving maze-like cracks on mesh.

Curiously, when I was doing video I initially wanted to circle the artifacts with Annotation Tool by holding D key without exiting Sculpt Mode, but immediately as I did that the bug stopped appearing until I re-entered Sculpt Mode. This bug is very fickle and it's important that you don't do any extra steps when reproducing it to not scare it off.

Exact steps for others to reproduce the error

  1. Create a default torus.
  2. Add Multires with five levels.
  3. Enter sculpt mode, select Clay Strips
  4. Do a stroke big enough so backfaces are affected too.
  5. Press Ctrl+Z.
  6. Observe cracks on backfaces.

If hard to reproduce, try to start with attached .blend file and watch video for exact technique.

**System Information** Operating system: Windows-10-10.0.17763-SP0 64 Bits Graphics card: NVIDIA GeForce GTX 1050 Ti/PCIe/SSE2 NVIDIA Corporation 4.6.0 NVIDIA 516.94 **Blender Version** Broken: version: 4.2.0 Beta, branch: blender-v4.2-release, commit date: 2024-06-26 00:39, hash: `224307b9aa48` Worked: never **Short description of error** Undoing big Clay Strips brush stroke does not completely undo affected backfaces, leaving maze-like cracks on mesh. Curiously, when I was doing video I initially wanted to circle the artifacts with Annotation Tool by holding D key without exiting Sculpt Mode, but immediately as I did that the bug stopped appearing until I re-entered Sculpt Mode. This bug is very fickle and it's important that you don't do any extra steps when reproducing it to not scare it off. **Exact steps for others to reproduce the error** 1. Create a default torus. 2. Add Multires with five levels. 3. Enter sculpt mode, select Clay Strips 4. Do a stroke big enough so backfaces are affected too. 5. Press Ctrl+Z. 6. Observe cracks on backfaces. If hard to reproduce, try to start with attached .blend file and watch video for exact technique.
Shyy-Anzr added the
Type
Report
Severity
Normal
Status
Needs Triage
labels 2024-06-26 07:01:47 +02:00
Member

4.2 at 95a74a02bc seems to still work.

On latest 4.3 ctrl Z straightforward crashes.

4.2 at 95a74a02bcc6 _seems to_ still work. On latest 4.3 ctrl Z straightforward crashes.
Member

Crash on assert:

__pthread_kill_implementation (@pthread_kill@@GLIBC_2.34:81)
__pthread_kill_internal (@pthread_kill@@GLIBC_2.34:59)
__GI___pthread_kill (@pthread_kill@@GLIBC_2.34:59)
__GI_raise (@raise:10)
__GI_abort (@abort:46)
_BLI_assert_abort (source/blender/blenlib/intern/BLI_assert.c:51)
void blender::MutableSpan<bool>::fill_indices<int>(blender::Span<int>, bool const&) const (source/blender/blenlib/BLI_span.hh:531)
blender::ed::sculpt_paint::undo::restore_position_grids(blender::MutableSpan<CCGElem *>, const CCGKey &, blender::ed::sculpt_paint::undo::Node &, blender::MutableSpan<bool>) (source/blender/editors/sculpt_paint/sculpt_undo.cc:515)
blender::ed::sculpt_paint::undo::restore_list(bContext *, Depsgraph *, blender::ed::sculpt_paint::undo::StepData &) (source/blender/editors/sculpt_paint/sculpt_undo.cc:936)
blender::ed::sculpt_paint::undo::step_decode_undo_impl(bContext *, Depsgraph *, blender::ed::sculpt_paint::undo::SculptUndoStep *) (source/blender/editors/sculpt_paint/sculpt_undo.cc:1870)
blender::ed::sculpt_paint::undo::step_decode_undo(bContext *, Depsgraph *, blender::ed::sculpt_paint::undo::SculptUndoStep *, const bool) (source/blender/editors/sculpt_paint/sculpt_undo.cc:1905)
blender::ed::sculpt_paint::undo::step_decode(bContext *, Main *, UndoStep *, eUndoStepDir, bool) (source/blender/editors/sculpt_paint/sculpt_undo.cc:1985)
::undosys_step_decode(bContext *, Main *, UndoStack *, UndoStep *, eUndoStepDir, bool) (source/blender/blenkernel/intern/undo_system.cc:221)
BKE_undosys_step_load_data_ex(UndoStack*, bContext*, UndoStep*, UndoStep*, bool) (source/blender/blenkernel/intern/undo_system.cc:821)
BKE_undosys_step_undo_with_data_ex(UndoStack*, bContext*, UndoStep*, bool) (source/blender/blenkernel/intern/undo_system.cc:868)
BKE_undosys_step_undo_with_data(UndoStack*, bContext*, UndoStep*) (source/blender/blenkernel/intern/undo_system.cc:873)
BKE_undosys_step_undo(UndoStack*, bContext*) (source/blender/blenkernel/intern/undo_system.cc:879)
::ed_undo_step_direction(bContext *, eUndoStepDir, ReportList *) (source/blender/editors/undo/ed_undo.cc:289)
::ed_undo_exec(bContext *, wmOperator *) (source/blender/editors/undo/ed_undo.cc:511)
::wm_operator_invoke(bContext *, wmOperatorType *, const wmEvent *, PointerRNA *, ReportList *, const bool, bool) (source/blender/windowmanager/intern/wm_event_system.cc:1587)
Crash on assert: ``` __pthread_kill_implementation (@pthread_kill@@GLIBC_2.34:81) __pthread_kill_internal (@pthread_kill@@GLIBC_2.34:59) __GI___pthread_kill (@pthread_kill@@GLIBC_2.34:59) __GI_raise (@raise:10) __GI_abort (@abort:46) _BLI_assert_abort (source/blender/blenlib/intern/BLI_assert.c:51) void blender::MutableSpan<bool>::fill_indices<int>(blender::Span<int>, bool const&) const (source/blender/blenlib/BLI_span.hh:531) blender::ed::sculpt_paint::undo::restore_position_grids(blender::MutableSpan<CCGElem *>, const CCGKey &, blender::ed::sculpt_paint::undo::Node &, blender::MutableSpan<bool>) (source/blender/editors/sculpt_paint/sculpt_undo.cc:515) blender::ed::sculpt_paint::undo::restore_list(bContext *, Depsgraph *, blender::ed::sculpt_paint::undo::StepData &) (source/blender/editors/sculpt_paint/sculpt_undo.cc:936) blender::ed::sculpt_paint::undo::step_decode_undo_impl(bContext *, Depsgraph *, blender::ed::sculpt_paint::undo::SculptUndoStep *) (source/blender/editors/sculpt_paint/sculpt_undo.cc:1870) blender::ed::sculpt_paint::undo::step_decode_undo(bContext *, Depsgraph *, blender::ed::sculpt_paint::undo::SculptUndoStep *, const bool) (source/blender/editors/sculpt_paint/sculpt_undo.cc:1905) blender::ed::sculpt_paint::undo::step_decode(bContext *, Main *, UndoStep *, eUndoStepDir, bool) (source/blender/editors/sculpt_paint/sculpt_undo.cc:1985) ::undosys_step_decode(bContext *, Main *, UndoStack *, UndoStep *, eUndoStepDir, bool) (source/blender/blenkernel/intern/undo_system.cc:221) BKE_undosys_step_load_data_ex(UndoStack*, bContext*, UndoStep*, UndoStep*, bool) (source/blender/blenkernel/intern/undo_system.cc:821) BKE_undosys_step_undo_with_data_ex(UndoStack*, bContext*, UndoStep*, bool) (source/blender/blenkernel/intern/undo_system.cc:868) BKE_undosys_step_undo_with_data(UndoStack*, bContext*, UndoStep*) (source/blender/blenkernel/intern/undo_system.cc:873) BKE_undosys_step_undo(UndoStack*, bContext*) (source/blender/blenkernel/intern/undo_system.cc:879) ::ed_undo_step_direction(bContext *, eUndoStepDir, ReportList *) (source/blender/editors/undo/ed_undo.cc:289) ::ed_undo_exec(bContext *, wmOperator *) (source/blender/editors/undo/ed_undo.cc:511) ::wm_operator_invoke(bContext *, wmOperatorType *, const wmEvent *, PointerRNA *, ReportList *, const bool, bool) (source/blender/windowmanager/intern/wm_event_system.cc:1587) ```
YimingWu added
Module
Sculpt, Paint & Texture
Status
Confirmed
and removed
Status
Needs Triage
labels 2024-06-26 08:44:38 +02:00
Member

poke poke @HooglyBoogly apparently broken by 59d84a4c42

poke poke @HooglyBoogly apparently broken by 59d84a4c422887d0772dcde104c1a361c4f373a2
YimingWu added
Severity
High
and removed
Severity
Normal
labels 2024-06-26 08:47:42 +02:00
Author

I know that this issue exist in 4.1, 4.0, and even in 3.6 too(just checked). That's why I cannot date it's introduction.

I know that this issue exist in 4.1, 4.0, and even in 3.6 too(just checked). That's why I cannot date it's introduction.
Member

Humm I guess then the assert crash is actually a different thing... I can revert that to get no crash at this time, but I am not really able to reproduce the "cracks on backfaces" look. It's either crash or working as I'm expecting

Humm I guess then the assert crash is actually a different thing... I can revert that to get no crash at this time, but I am not really able to reproduce the "cracks on backfaces" look. It's either crash or working as I'm expecting
Author

Here's a video where I reproduced it in 3.6.7.

Here's a video where I reproduced it in 3.6.7.
Author

Checked on 3.6.13 LTS, same story. Also tested on different machine with different GPU model and driver version number. Same.

This could be more apparent because of my brush settings for Clay Strips or something with startup file. If there's still a problem with reproduction, try donut.blend in the original post. It should have my brush and scene settings included, if I'm understanding correctly.

Checked on 3.6.13 LTS, same story. Also tested on different machine with different GPU model and driver version number. Same. This could be more apparent because of my brush settings for Clay Strips or something with startup file. If there's still a problem with reproduction, try `donut.blend` in the original post. It should have my brush and scene settings included, if I'm understanding correctly.
Hans Goudey self-assigned this 2024-06-26 13:48:31 +02:00
Hans Goudey added
Type
Bug
and removed
Type
Report
labels 2024-06-27 19:54:20 +02:00
Member

Thanks for the report. The issue with cracks appearing with the clay strips brush is a known issue right now unfortunately. But I resolved the crash now so the situation should be improved.

Thanks for the report. The issue with cracks appearing with the clay strips brush is a known issue right now unfortunately. But I resolved the crash now so the situation should be improved.
Blender Bot added
Status
Resolved
and removed
Status
Confirmed
labels 2024-06-27 19:55:48 +02:00
Author

Should it be closed then? The crash was separate issue not reported by me and I don't know any duplicates of this issue to follow.

Should it be closed then? The crash was separate issue not reported by me and I don't know any duplicates of **this** issue to follow.
Blender Bot added
Status
Confirmed
and removed
Status
Resolved
labels 2024-06-27 21:13:49 +02:00
Hans Goudey added
Severity
Normal
and removed
Severity
High
labels 2024-06-27 21:55:37 +02:00
Hans Goudey changed title from Undo doesn't work completely for multires sculpting with big brushstrokes, leaves cracks on mesh to Clay strips brush leaves cracks on mesh 2024-06-27 21:55:49 +02:00
Member

Good point, thanks.

Good point, thanks.
Hans Goudey added
Type
Known Issue
and removed
Type
Bug
labels 2024-07-15 16:37:20 +02:00
Hans Goudey removed their assignment 2024-08-01 20:13:10 +02:00
Member

A note from @Nicola-Dessi in the module chat:

I was playing with some settings and realized that using a higher radius_scale in do_brush_action seems to fix this bug

I don't know why though, sqrt2 looks correct from a theoretical point of view

Ah, in fact the main problem is with tip roundness at 1 because the logic in BKE_brush_has_cube_tip is flawed. Always returning true for the clay strips brush fixes 99% of the problems. Should I open another bug report?

After some more playing with the brush I'm 90% certain the values for the radius_scale are just wrong. The values chosen seem to only consider the max distance in the xy plane of the brush, which is sqrt2 when tip roundess is at 0, but the clay strips also has a strong influence in the z axis and therefore the max distance should be sqrt3.

A note from @Nicola-Dessi in the module chat: > I was playing with some settings and realized that using a higher radius_scale in do_brush_action seems to fix this bug > I don't know why though, sqrt2 looks correct from a theoretical point of view > Ah, in fact the main problem is with tip roundness at 1 because the logic in BKE_brush_has_cube_tip is flawed. Always returning true for the clay strips brush fixes 99% of the problems. Should I open another bug report? > After some more playing with the brush I'm 90% certain the values for the radius_scale are just wrong. The values chosen seem to only consider the max distance in the xy plane of the brush, which is sqrt2 when tip roundess is at 0, but the clay strips also has a strong influence in the z axis and therefore the max distance should be sqrt3.
Member

If there's no further side effects of said change, I'm for it. That way we don't need to manually tune the depth cutoff value for the clay strip brush each time.

If there's no further side effects of said change, I'm for it. That way we don't need to manually tune the depth cutoff value for the clay strip brush each time.

I should add that plane offset and z-scale (which as I said in chat I would just keep at 100% instead of 125%) should also be considered when calculating the center point and radius to use in pbvh_gather_generic.

I should add that plane offset and z-scale (which as I said in chat I would just keep at 100% instead of 125%) should also be considered when calculating the center point and radius to use in pbvh_gather_generic.
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset System
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Code Documentation
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
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
Viewport & EEVEE
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Asset Browser Project
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
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
Module
Viewport & EEVEE
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Severity
High
Severity
Low
Severity
Normal
Severity
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
5 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#123768
No description provided.