This node takes in a mesh and bisects it along a defined plane (using an offset and a normal).
The bisected mesh is not split but has new edge loops along the plane intersection.
The node also outputs selection fields for the positive side (in the direction of the normal of the plane),
the negative side, and the cut edges.
Details
- Reviewers
- None
Diff Detail
- Repository
- rB Blender
- Branch
- temp-node-geo-mesh-bisect (branched from master)
- Build Status
Buildable 18842 Build 18842: arc lint + arc unit
Event Timeline
Hey, started on a similar WIP 2-3 weeks ago also based on the bisect operator (but I just supported the existing functionality as is, see below). The idea was to implement the operator for pointclouds and curve geometry as well, as you posted this WIP I just wanted to check your plans regarding features for the node and if you intend to support other geometry types. If you have no intention to support other forms of geometry I'll continue looking into solving those problems and integrate them once/if this WIP is done, otherwise I'll drop the project.
My only other concern is if the fill (or clip) options is not important? Wouldn't such features make it more user friendly since this approach require multiple nodes to achieve desired outcomes?
There is also P2338, but that project is currently on ice as I understand it.
Best regards
Hi, I've had a quick look and found an issue when bisecting a mesh(mountain) and trying to separate only Cut Edges(contour). I'm getting discontinued edges instead of one continual line
I'm using this version.
Example:
Also I'd like to know if you plan to extend the functionality of Bisect node so Offset and Normal inputs would be Fields?
@Mattias Fredriksson (Osares) For now, I only plan on supporting meshes. And I do want to add a fill option, but there is not a good and efficient way of doing it at the moment. I have a test that I am still working on. We will see.
@Miro Horváth (dreamak) This is most likely a problem with the bisect_distance. You can see in the patch that it's hardcoded to 0.001f and that I plan to add it as a parameter.
As for the input field question: How would you imagine this would work? I could see this being interesting for different instances of a mesh maybe, but otherwise I am not sure how field inputs would work (to define the bisect plane).
@Miro Horváth (dreamak) This is most likely a problem with the bisect_distance. You can see in the patch that it's hardcoded to 0.001f and that I plan to add it as a parameter.
@Falk David (filedescriptor) I'm not a programmer(don't understand the code below), but it does sound weird that bisect_distance should be causing this issue. I mean if I use Positive/Negative Side as Selection on Separate Geometry node, in both cases I can't see the edge anyhow broken(discontinued), see below.
Therefore I'd expect the same(continuous line) from Cut Edges without playing around with bisect_distance parameter, but again I'm not familiar with the underlying code.
As for the input field question: How would you imagine this would work? I could see this being interesting for different instances of a mesh maybe, but otherwise I am not sure how field inputs would work (to define the bisect plane).
There are two distinct examples I have in my mind. Please note that I don't know if either "Offset and Normal inputs as Fields" or performing Bisect Mesh functionality in a loop(future Loops functionality that is being discussed at devtalk) would support these examples better.
Example 1.
Countour lines generation(like in the file I linked above), I'd like to stack cutting planes along vertical axis in 1m steps, so Normal input would be constant(0,0,1), but Offset would shift by 1 in Z axis. Currently I'd have to do it manually by chaining Bisect Mesh next to each other. The expect result is a set of countour lines.
Example 2.
Back then when GN was in diapers I did a quick experiment to Cell Fracture a cube. Similarly I'd like to Bisect a mesh n-times where each time I'd like to have Offset and Normal randomized. Again, I'm not sure if having Offset/Normal inputs as Fields or using future Loops implementation is a better solution here.
@Miro Horváth (dreamak) Ok so on the topic of field inputs it does seem like what you want is to repeatedly add cuts. This is solved with loops, field won't do what you want here (to be honest I don't even know what that would do). With fields you would specify an offset/normal for every element in a domain on the mesh. As you can imagine that would create cuts based on every vertex normal for example, which sounds nonsensical to me...
Regrading the bisect distance, I think you might be right and I might be doing something wrong here. Would you mind sharing your file for me to test?
@Falk David (filedescriptor) This is my train of thoughts for the Example 1. mentioned above. Basically using a Mesh line to provide cutting plane offsets.
Regrading the bisect distance, I think you might be right and I might be doing something wrong here. Would you mind sharing your file for me to test?
It's linked in my first post.
It's linked in my first post.
Ah, sorry!
Yea I think that will be much better with the "geometry loop" instead of fields.
Hi @Falk David (filedescriptor), I tested the fix and there's much less(minimum) discontinued lines now, but playing with Epsilon value doesn't seem to help to remove gaps completely(see below).
I combined the result with the original terrain mesh and found out that contour line always gets discontinued exactly at two adjacent quad's edges.
So I added Triangulate node before Bisect node and that fixes the problem.
I hacked looping Bisect node in several altitudes and got procedural contour lines generator, great job @Falk David (filedescriptor), thank you!!!
How can I download and try your code? I have an idea with the radial mirror, that I want to recreate with Geometry nodes. Bisect functions will be very handy for that.
@Vasil (FeralMan) You can download the D13300 patch from here: https://builder.blender.org/download/patch/
(I think the build needs to be updated to the latest version though, I'll get on that)
Edit: New build is running. Should be ready around 14h00 CET (14.12.2021).
Hi,
is there any chance to have this node available soon ? would be very handy in the scope of generating true 3d contour lines of topographic meshes.
Best,
V.
Well, maybe the new functionality of mesh boolean node can do the job for my purpose.
https://docs.blender.org/manual/en/3.4/modeling/geometry_nodes/mesh/mesh_boolean.html#output
Is there a good alternate method to bmesh? Bisect is one of those nodes that is definitely needed. The more people are able to not touch booleans, the better.
there is a bisect node group shared by Christophe Mermoud in here https://developer.blender.org/T95445, it works better than boolean, might help you.
there is a bisect node group shared by Christophe Mermoud in here https://developer.blender.org/T95445, it works better than boolean, might help you.
Thank you Caner for the hint! and thanks Christophe for that.
V.











