Delete Geometry node face mode behaves unexpectedly when used after Join Geometry #99664

Open
opened 2022-07-13 11:53:32 +02:00 by Zhen Dai · 15 comments

System Information
Operating system: Windows-10-10.0.18363-SP0 64 Bits
Graphics card: NVIDIA GeForce RTX 3080/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 471.68

Blender Version
Broken: version: 3.2.1, branch: master, commit date: 2022-07-05 15:44, hash: a2d59b2dac
Worked: N/A (problem exists on 3.1.2)

Short description of error

Not sure if this is by design, but I find that the following behaviour unexpected:

  • By itself, a Mesh Line output connected to Delete Geometry + Geometry Proximity node using Face mode won't delete anything.
  • However, when such a Mesh Line is joined with a Grid primitive, then Delete Geometry + Geometry Proximity in Face mode will cause all of Mesh Line to be deleted, regardless of distances.

Screenshot 2022-07-13 175154.jpg

Screenshot 2022-07-13 175147.jpg

Screenshot 2022-07-13 175140.jpg

Exact steps for others to reproduce the error

  • Download the blend and observe Mesh Line is preserved.
  • Unmute Grid node link to Join Geometry, and observe Mesh Line is now gone.

line-deletion.blend

**System Information** Operating system: Windows-10-10.0.18363-SP0 64 Bits Graphics card: NVIDIA GeForce RTX 3080/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 471.68 **Blender Version** Broken: version: 3.2.1, branch: master, commit date: 2022-07-05 15:44, hash: `a2d59b2dac` Worked: N/A (problem exists on 3.1.2) **Short description of error** Not sure if this is by design, but I find that the following behaviour unexpected: - By itself, a Mesh Line output connected to Delete Geometry + Geometry Proximity node using Face mode won't delete anything. - However, when such a Mesh Line is joined with a Grid primitive, then Delete Geometry + Geometry Proximity in Face mode will cause all of Mesh Line to be deleted, regardless of distances. ![Screenshot 2022-07-13 175154.jpg](https://archive.blender.org/developer/F13290102/Screenshot_2022-07-13_175154.jpg) ![Screenshot 2022-07-13 175147.jpg](https://archive.blender.org/developer/F13290101/Screenshot_2022-07-13_175147.jpg) ![Screenshot 2022-07-13 175140.jpg](https://archive.blender.org/developer/F13290100/Screenshot_2022-07-13_175140.jpg) **Exact steps for others to reproduce the error** - Download the blend and observe Mesh Line is preserved. - Unmute Grid node link to Join Geometry, and observe Mesh Line is now gone. [line-deletion.blend](https://archive.blender.org/developer/F13290110/line-deletion.blend)
Author

Added subscriber: @Zhen-Dai

Added subscriber: @Zhen-Dai

#102190 was marked as duplicate of this issue

#102190 was marked as duplicate of this issue
Member

Added subscriber: @JacquesLucke

Added subscriber: @JacquesLucke
Member

Changed status from 'Needs Triage' to: 'Needs User Info'

Changed status from 'Needs Triage' to: 'Needs User Info'
Member

When I open the file it looks different from you screenshot. Can you also maybe simplify it a little bit more. It doesn't seem necessary to deal with materials or to have a Geometry Proximity node in there.
image.png

When I open the file it looks different from you screenshot. Can you also maybe simplify it a little bit more. It doesn't seem necessary to deal with materials or to have a Geometry Proximity node in there. ![image.png](https://archive.blender.org/developer/F13290115/image.png)
Author

@JacquesLucke sorry for the trouble, I was trying to make the deletion quad stands out, i hope this version is more clear. (and my result for reference.)

line-deletion-new.blend

Screenshot 2022-07-13 181859.jpg

Screenshot 2022-07-13 181912.jpg

@JacquesLucke sorry for the trouble, I was trying to make the deletion quad stands out, i hope this version is more clear. (and my result for reference.) [line-deletion-new.blend](https://archive.blender.org/developer/F13290128/line-deletion-new.blend) ![Screenshot 2022-07-13 181859.jpg](https://archive.blender.org/developer/F13290130/Screenshot_2022-07-13_181859.jpg) ![Screenshot 2022-07-13 181912.jpg](https://archive.blender.org/developer/F13290129/Screenshot_2022-07-13_181912.jpg)
Member

Added subscriber: @wannes.malfait

Added subscriber: @wannes.malfait
Member

Changed status from 'Needs User Info' to: 'Confirmed'

Changed status from 'Needs User Info' to: 'Confirmed'
Member

I think this is a bug, but it will require some big changes to the delete geometry node to fix.

I think the problem is the following:

  • When "separating" geometry, the node only keeps those elements which are in the selection. This works perfectly fine.
  • When "deleting" geometry, the node does a separation on the inverse of the selection. This fails in the example above, because the points on the line are not on any faces, and will therefore get deleted regardless of the selection.

So what needs to change is that, when the domain is faces or edges, the points/edges which are "loose", i.e. not on an element of the domain, should be kept regardless of the selection when deleting. This is because the selection doesn't say anything about these elements.

For the separate geometry node, this would mean that the Inverted output also contains these "extra" elements.

I think this is a bug, but it will require some big changes to the delete geometry node to fix. I think the problem is the following: - When "separating" geometry, the node only keeps those elements which are in the selection. This works perfectly fine. - When "deleting" geometry, the node does a separation on the inverse of the selection. This fails in the example above, because the points on the line are not on any faces, and will therefore get deleted regardless of the selection. So what needs to change is that, when the domain is faces or edges, the points/edges which are "loose", i.e. not on an element of the domain, should be kept regardless of the selection when deleting. This is because the selection doesn't say anything about these elements. For the separate geometry node, this would mean that the `Inverted` output also contains these "extra" elements.
Member

Hm seems reasonable. It feels like it would be better to split up Separation and Deletion a bit more then, and maybe just share some common functions.
It feels wrong to output these extra elements in the Separate node.

I'm a bit more concerned right now that the file looks different in 3.3 compared to 3.2, probably an unrelated bug though.
delete_geometry_deletes_too_much.blend

Hm seems reasonable. It feels like it would be better to split up Separation and Deletion a bit more then, and maybe just share some common functions. It feels wrong to output these extra elements in the Separate node. I'm a bit more concerned right now that the file looks different in 3.3 compared to 3.2, probably an unrelated bug though. [delete_geometry_deletes_too_much.blend](https://archive.blender.org/developer/F13290145/delete_geometry_deletes_too_much.blend)
Member

In #99664#1389633, @JacquesLucke wrote:
Hm seems reasonable. It feels like it would be better to split up Separation and Deletion a bit more then, and maybe just share some common functions.
It feels wrong to output these extra elements in the Separate node.

I think it makes sense to add them, since this way, when you join the two outputs, you get back the original geometry (except maybe at the boundary). Otherwise, part of the geometry just disappears for seemingly no reason.

I'm a bit more concerned right now that the file looks different in 3.3 compared to 3.2, probably an unrelated bug though.
delete_geometry_deletes_too_much.blend

I feel like that might be caused by this: {c4e11122c537}. I think this adds different behaviour when the selection is empty for example, but not entirely sure.

> In #99664#1389633, @JacquesLucke wrote: > Hm seems reasonable. It feels like it would be better to split up Separation and Deletion a bit more then, and maybe just share some common functions. > It feels wrong to output these extra elements in the Separate node. I think it makes sense to add them, since this way, when you join the two outputs, you get back the original geometry (except maybe at the boundary). Otherwise, part of the geometry just disappears for seemingly no reason. > I'm a bit more concerned right now that the file looks different in 3.3 compared to 3.2, probably an unrelated bug though. > [delete_geometry_deletes_too_much.blend](https://archive.blender.org/developer/F13290145/delete_geometry_deletes_too_much.blend) I feel like that might be caused by this: {c4e11122c537}. I think this adds different behaviour when the selection is empty for example, but not entirely sure.
Member

I think it makes sense to add them, since this way, when you join the two outputs, you get back the original geometry (except maybe at the boundary). Otherwise, part of the geometry just disappears for seemingly no reason.

Hm not so sure about that. If I separate faces I kind of expect to only get faces. Also I'm still thinking about the generalization of the node where it has a id input instead of a selection can can split the mesh into more than two parts. Then it would be very non obvious where the extra elements should go. If anything, those should be put into a separate output. But it might be better to just have separate nodes to get loose points and loose edges instead.
As you mention, you don't get the original geometry back anyway, so that's not an important requirement to me.

I think this adds different behaviour when the selection is empty for example, but not entirely sure.

I'm bisecting this now.

> I think it makes sense to add them, since this way, when you join the two outputs, you get back the original geometry (except maybe at the boundary). Otherwise, part of the geometry just disappears for seemingly no reason. Hm not so sure about that. If I separate faces I kind of expect to only get faces. Also I'm still thinking about the generalization of the node where it has a id input instead of a selection can can split the mesh into more than two parts. Then it would be very non obvious where the extra elements should go. If anything, those should be put into a separate output. But it might be better to just have separate nodes to get loose points and loose edges instead. As you mention, you don't get the original geometry back anyway, so that's not an important requirement to me. > I think this adds different behaviour when the selection is empty for example, but not entirely sure. I'm bisecting this now.
Member

You're right, it's caused by c4e11122c5. Will check if that can be fixed, otherwise I'll revert the change.

You're right, it's caused by c4e11122c5. Will check if that can be fixed, otherwise I'll revert the change.
Member

We could probably also rename the Inverted output of the Separate Geometry node to Rest or so. Then it would be more obvious that it can also contain e.g. loose points when the domain is set to Face. We should still keep node setups which depend on the current Inverted output working though. That probably means that we'd have to add another Separate Geometry node in versioning with an inverted selection input. Alternatively, we could also have three outputs in the node.

We could probably also rename the `Inverted` output of the `Separate Geometry` node to `Rest` or so. Then it would be more obvious that it can also contain e.g. loose points when the domain is set to Face. We should still keep node setups which depend on the current `Inverted` output working though. That probably means that we'd have to add another `Separate Geometry` node in versioning with an inverted selection input. Alternatively, we could also have three outputs in the node.
Added subscribers: @PaulGeraskin, @Vyach, @mod_moder, @HooglyBoogly
Philipp Oeser removed the
Interest
Nodes & Physics
label 2023-02-10 08:43:51 +01:00
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
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#99664
No description provided.