Sculpt: Clay strip sculpts on back face when front face only is turned on #116458

Open
opened 2023-12-22 02:25:44 +01:00 by HF · 11 comments

System Information
Operating system: Windows-10-10.0.19042-SP0 64 Bits
Graphics card: NVIDIA GeForce RTX 3070/PCIe/SSE2 NVIDIA Corporation 4.6.0 NVIDIA 546.33

Blender Version
Broken: version: 4.0.1, branch: blender-v4.0-release, commit date: 2023-11-16 16:40, hash: d0dd92834a08
Worked: (newest version of Blender that worked as expected)

Short description of error
sculpt on back face (or occluded region) when front face only is turned on see video

Exact steps for others to reproduce the error
Turn on sculpt front face only, make back face really close to front face, sculpt.

bug.blend
video1
video2

**System Information** Operating system: Windows-10-10.0.19042-SP0 64 Bits Graphics card: NVIDIA GeForce RTX 3070/PCIe/SSE2 NVIDIA Corporation 4.6.0 NVIDIA 546.33 **Blender Version** Broken: version: 4.0.1, branch: blender-v4.0-release, commit date: 2023-11-16 16:40, hash: `d0dd92834a08` Worked: (newest version of Blender that worked as expected) **Short description of error** sculpt on back face (or occluded region) when front face only is turned on see video **Exact steps for others to reproduce the error** Turn on sculpt front face only, make back face really close to front face, sculpt. [bug.blend](https://projects.blender.org/attachments/81fcaf32-e049-438a-b094-f8720d5a7eba) [video1](https://projects.blender.org/attachments/6d402293-4d63-4e46-a36c-995126592a1a) [video2](https://projects.blender.org/attachments/1670dfb8-3bab-44ba-b8e5-1cd2398f288a)
HF added the
Priority
Normal
Type
Report
Status
Needs Triage
labels 2023-12-22 02:25:45 +01:00
Member

Hi, thanks for the report. I'm not able to confirm this in 4.1
Could it be that the normals are pointing outwards (i.e. front face). Have you checked with face orientation overlay?
Can you share .blend file?

Hi, thanks for the report. I'm not able to confirm this in 4.1 Could it be that the normals are pointing outwards (i.e. front face). Have you checked with `face orientation` overlay? Can you share .blend file?
Pratik Borhade added
Status
Needs Information from User
and removed
Status
Needs Triage
labels 2023-12-22 05:32:20 +01:00
Author

image
orientation is fine

here is another video, this time it sculpted on the other side of the mouth, I thought topology auto masking is supposed to prevent that, and based on how the other side is behaving, it basically broke, I think it's a bug

![image](/attachments/16db2f65-51b2-40c0-806f-94a56a4e9fab) orientation is fine here is another video, this time it sculpted on the other side of the mouth, I thought topology auto masking is supposed to prevent that, and based on how the other side is behaving, it basically broke, I think it's a bug
Author

this only happens when the brush is too big im using the clay strip brush

this only happens when the brush is too big im using the clay strip brush
Member

Thanks. I see. So you are sculpting on front faces but somehow other faces of the mesh are affected by strokes. Could you check if any global auto-masking option is causing this: image

Thanks. I see. So you are sculpting on front faces but somehow other faces of the mesh are affected by strokes. Could you check if any global auto-masking option is causing this: [image](/attachments/09ee7906-cb97-4a01-9cc6-5a5a689228eb)
Author

no, nothing is checked there

no, nothing is checked there
Member

Thanks, can confirm in your file. Possibly due to small object size and falloff. Though this does not happen with other brushes.

Thanks, can confirm in your file. Possibly due to small object size and falloff. Though this does not happen with other brushes.
Pratik Borhade changed title from sculpt on back face when front face only is turned on to Sculpt: Clay strip scllupts on back face when front face only is turned on 2023-12-22 08:02:12 +01:00
Pratik Borhade changed title from Sculpt: Clay strip scllupts on back face when front face only is turned on to Sculpt: Clay strip sculpts on back face when front face only is turned on 2023-12-22 08:02:26 +01:00
Member

I don't think this has anything to do with the "Front Faces Only" option. That option just excludes faces that don't face the view.

This bug has been the most crippling issue for using any of these brushes imo: Clay, Clay Strips, Flatten, Fill & Scrape.
I think the issue became more noticable roughly around 2.81 when the area plane position was shifted to be at the exact cursor position instead of the mean point of the geometry within the cursor.

image

The issue seems to be that the falloff curve is not used for the flattening effect these brushes have. The full Strength is always used for flattening, resulting in geometry in the outer radius of the brush being pulled just as strong as in the center.

I have a couple of ideas:

An easy fix could be to use the falloff curve for the flattening effect of the brushes as well.
Although this will not work for brushes like Clay Strips that use the "Hardness" and "Tip Roundness" settings to shift the 0/0 point of the falloff curve.
Testing it would be good though.

It could also help to introduce falloff settings to scale the height and depth of the falloff along the Z axis of the area plane. Basically like the "Plane Trim" setting on Flatten brushes, but relative to the brush radius and with a falloff curve instead of as a bool.
That way the ripping of unwanted geometry can be reduced for Clay, Fill and Scrape brushes in the direction that suits them.

I don't think this has anything to do with the "Front Faces Only" option. That option just excludes faces that don't face the view. This bug has been the most crippling issue for using any of these brushes imo: Clay, Clay Strips, Flatten, Fill & Scrape. I think the issue became more noticable roughly around 2.81 when the area plane position was shifted to be at the exact cursor position instead of the mean point of the geometry within the cursor. ![image](/attachments/9959fa3f-e744-4e53-8d40-5ff0e9858538) The issue seems to be that the falloff curve is not used for the flattening effect these brushes have. The full Strength is always used for flattening, resulting in geometry in the outer radius of the brush being pulled just as strong as in the center. I have a couple of ideas: An easy fix could be to use the falloff curve for the flattening effect of the brushes as well. Although this will not work for brushes like Clay Strips that use the "Hardness" and "Tip Roundness" settings to shift the 0/0 point of the falloff curve. Testing it would be good though. It could also help to introduce falloff settings to scale the height and depth of the falloff along the Z axis of the area plane. Basically like the "Plane Trim" setting on Flatten brushes, but relative to the brush radius and with a falloff curve instead of as a bool. That way the ripping of unwanted geometry can be reduced for Clay, Fill and Scrape brushes in the direction that suits them.
305 KiB
Member

I am a bit confused how the falloff is used for brushes like Clay Strips.
It can easily seem like the Falloff isn't a "Sphere" like the brush settings imply, but instead a cylinder (sculpt plane with depth).
The Clay Strips falloff also seems to have far more depth than the radius.

Some more investigation in this issue would be nice.

I am a bit confused how the falloff is used for brushes like Clay Strips. It can easily seem like the Falloff isn't a "Sphere" like the brush settings imply, but instead a cylinder (sculpt plane with depth). The Clay Strips falloff also seems to have far more depth than the radius. Some more investigation in this issue would be nice.
Julien Kaspar added this to the Sculpt, Paint & Texture project 2024-02-13 17:56:13 +01:00
Raul Fernandez Hernandez self-assigned this 2024-02-20 05:08:24 +01:00

Is more obvious in those brushes but any brush with large enough radius relative to the mesh will start altering vertices in its sphere of influence messing up with that type of geometry with occluded parts.
Along with @JulienKaspar suggestions about the falloffs it may be worth exploring occlusion as an extra constraint.

Is more obvious in those brushes but any brush with large enough radius relative to the mesh will start altering vertices in its sphere of influence messing up with that type of geometry with occluded parts. Along with @JulienKaspar suggestions about the falloffs it may be worth exploring occlusion as an extra constraint.
Member

@farsthary I agree that any brush can have this behavior. But the flattening towards the sculpt plane is too strong/deep in particular.

Occlusion might not be a good fit here. It will be too aggressive in excluding vertices in surface details and cause a lot of noise.
Maybe a simple solution like adjusting the falloff shape for the flattening effect is enough to work?

Another idea could be to use geodesic surface distances based on the brush size instead of a sphere.
This was already prototyped once for the grab brush. Having this work in a performant way on any brush could solve the issue.
The idea back then was to use this behavior when "Topology Auto-Masking" is enabled (use_automasking_topology).
In fact, that sort of geodesic distance implementation could solve a lot of issues with accidentally affecting backfacing and disconnected geometry. Right now we mostly rely on exclusion based on normal direction which tends to fail.

@farsthary I agree that any brush can have this behavior. But the flattening towards the sculpt plane is too strong/deep in particular. Occlusion might not be a good fit here. It will be too aggressive in excluding vertices in surface details and cause a lot of noise. Maybe a simple solution like adjusting the falloff shape for the flattening effect is enough to work? Another idea could be to use geodesic surface distances based on the brush size instead of a sphere. This was [already prototyped once for the grab brush](https://archive.blender.org/developer/differential/0010/0010068/#251636). Having this work in a performant way on any brush could solve the issue. The idea back then was to use this behavior when "Topology Auto-Masking" is enabled (`use_automasking_topology`). In fact, that sort of geodesic distance implementation could solve a lot of issues with accidentally affecting backfacing and disconnected geometry. Right now we mostly rely on exclusion based on normal direction which tends to fail.

Yes, geodesic distance will be ideal for this, may be better to introduce it in a follow up enhancement PR and for this one improving the falloffs.

Yes, geodesic distance will be ideal for this, may be better to introduce it in a follow up enhancement PR and for this one improving the falloffs.
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
4 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#116458
No description provided.