Filling a Volume with Roots using the Shortest Edge Path Node
Вставка
- Опубліковано 11 січ 2025
- In this video, we will take a look at a way to make volumetric roots (veins, nerves, whatever) inside of a solid mesh. We will create something I call an edge lattice and a technique I used in another recent video.
Distribute Points in Mesh: • Blender 3.3 LTS: Makin...
This one gets a little in the weeds, but I hope I didn't make it too confusing.
*Ways to Support this Channel*
Channel Source Files at Patreon: / johnnymatthews
Free Assets at Gumroad: johnnygizmo.gu...
---------------------------------------------------------
Affiliate Links for Channel Sponsor XP-PEN
Artist 13.3 Pro - Tablet Display - amzn.to/3EvI6hT
Artist 15.6 Pro - Tablet Display - amzn.to/3Ox9v7U
XP-PEN Meow Meow Drawing Glove - amzn.to/3U3XiZk (THIS IS SUPER CUTE!)
TRANSFER ATTRIBUTE
Thanks for the nice tutorial!
For those stuck at 12:35. An alternative method that worked for me is to:
1. Create the following nodes: Raycast, Dot Product, Equal, Delete Geometry, Position.
2. Connect "Geometry" from the "Group Input" node to the "Target Geometry" of the "Raycast" node.
3. Connect the "Position" to the "Ray Direction" of the "Raycast" node and the lower "Vector" input of the "Dot Product" node.
4. Connect the "Hit Normal" of the "Raycast" to the upper "Vector" input of the "Dot Product".
5. Connect "Value" of "Dot Product" to input "A" of "Equal" node.
6. Set "Equal" node to: Float, Equal, input B=0, Epsilon=0 and connect the "Result" to the "Selection" of the "Delete Geometry" node.
7. Connect the output "Geometry" of the "Align Edge Lattice" to the input "Geometry" of the "Delete Geometry". Make sure the "Delete Geometry" is set to "Point" and "All".
8. Enjoy.
I just replace "Transfer attribute" node by "Sample Nearest Surface" node and it's work just fine!
2:56 Defaults are Vertices Z, Default 3, min 1, max 1000. Size Z, Default 1000mm, Min, 0.0, Max inf. He goofed and did Vertices Z as the size, then fixed it, and then adjusted Vertices X and Y to the Z default.
Yup I messed up
This is an extremely cool effect.
I think the randomness should be relative to the lattice dimensions, so it's in terms of the size of a single voxel. That way you can set it to half the voxel size and get pretty convincing randomness that's not yet too much as a default.
Also, trickier to do, but if you can get this to work on different lattices (for instance the lattice formed by the Rhombic dodecahredron, the stellated rhombic dodecahedron, or trickier still, the Weaire-Phelan lattice) you can likely get even better results.
All three of those lattices can be gotten by modifying the regular cube lattice in specific ways
Thanks and good ideas!
12:37 On version 3.6.5, there is no longer the transfer attribute node. Is there another known method to do the same thing ?
Very cool and easy to follow. Thanks for sharing it!
You're very welcome!
amazing like always. thank you Johnny!
You're welcome!
Wow! Underrated channel. Amazing tutorial. Thank you!
You’re very welcome!
Simply gorgeous, thank you very much for this tutorial 👏
You’re welcome 😊
Wow! This is so cool! I don’t honestly understand a lot of it but it’s a very cool result!! I wonder how hard it would be to make something made with this node tree manifold for resin 3D printing 🤔 I’m looking to make a bunch of different things with roots and this would def speed up the workflow immensely. Thanks for sharing btw!
very cool concept
Nice demo! When seeing the new Shortest Edge Path Node, I knew it would have some cool applications. Also, the "Edge Lattice" and a similar "Point Cloud" (same thing but without the edges) would be super useful as a built-in Geo Nodes primitives
circa 12:35: Since Transfer Attribute is not available in Blender 3.4, I tried using two Sample Nearest nodes (Face selected), one with Normal node input, the other with Position node input. The Lattice remained intact - no geometry removed.
Anyone have a suggestion?
I used "Sample Nearest Surface", set to vector mode, with the Normal as the "Value" (and a second for Position). It worked for me.
@@LeonCzolgolz this is mostly working for me, but when trying it with a Suzanne head, i'm also getting some points outside of her bounding box :(
For me, Sample_index together with Sample_Nearest (to get the index to be used in Sample_index) set of nodes in Blender 3.6. :: Similar settings for the other channels - I am sampling from points - instead of faces
hey man, is there a chance that you can share a photo of your solution? I just don't get it. Thanks a lot in advance!@@andersonbrandaosudario3425
That's really cool. I am just getting started w/ Blender and going through lots of videos. I am interested, seeing this, to know how one might go about adding faces to a set of vertices which have been created this way.
What a lovely explanation! :)
Thank you! 😃
This naming collapsed node tip, how on earth I didn't think about it while making sth over 100 node groups 👀
Edit: btw shortest path also works if you just put a lot off tetrahedrons, randomly instanced in volume and go with merge by distance.
Hello. Can these nodes be modified to use hair particles instead of tubes. Like making a taper curve with a bevel object that its volume is hair and that follow the curve of the taper curve from the beginning point till the end. been trying to do it but found your method more useful. thank you
Hello! Good tutorial, but I'm stuck at 9:52. How did you create the node group? I know it's possible to create them by pressing CTRL+G, but if I do that, the group of nodes stays connected to the "group input" and I can't work any further :/ Can someone help me?
yes, same here, I pressed tab after ctrl+g
Great tips!
Glad you think so!
Wow dude, I may have to watch this a few times. So much packed in there... how on earth did you figure this out?
So having a go at it!
This one was a little nutty, but it worked 🤣
@@JohnnyMatthews well you kept it engaging, I watched it from start to finish. It's an important method I think, am surprised blender having got something like this built into a new node.. was looking for something like this on 3.4 but struggled.
I know the feeling, when I'm making video I usually set off thinking "oh this will be 10mins" then end up making 30mins worth 😆
Awesome! Thank you!
Your welcome! Glad you like it
great video, thank you very much! 👏👏
You are welcome!
This is so dope!!!!!
Glad you like it!
I do it like this.
Grid extrude than instances kn points using a simple mesh line that merge by distance.
Super Tutorial!, Thankss
You’re very welcome!
The outside check doesn't seem to be accounting for concave objects?
This is brilliant. However, as geometry node structures start to get this complex we're going to need the kind of modularity you get in C++ code, for example, I have created a number of geometry node structures (mainly to do with organic growth). When I come back to them however, I find them difficult to decipher. Ideally I'd like to be making modular building blocks that I could plug together. I'm sure this is possible. I just need to stop chasing butterflies for a while and invest some time on the methodology.
Couldn't the first 10 minutes of edge lattice creation be replaced by simply adding a cube primitive followed by a Delete Geometry on Faces?
No inside edges that way
sure, go ahead, blow my mind, i wasn't planning to use it for anything else anyway
😁😂🤣
hello i have a issue, in the new update of blender the Transfer Attribute was replaced by Sample NEarest Surface , i follow the step of the tutorial but i can't get the Z Edges of my spherical primitive, can you help me?
pleaseeee heeeeeeeeeeeeeelp
@@PiononoMatic I have the same problem. Can't get sample nearest to result in deleting the correct geometry. Searched high and low, can't find examples or documentation that helps.
If you found a solution, please post it here. Thanks
Amazing. I know some geometry nodes stuff, but this is on another level. Can't help to wonder how the roots would look growing. How would I go about animating that? I tried manipulating the Spline Parameters, but it only manipulates the thickness of the roots. (Also, I heard lattuce at first 😅)
Found it! There is a trim curve node you add before the Set Curve Radius. Awesome.
Hi Johnny. It may be off topic, but I have a question. How is subtraction done in vectors? I created a mesh and it has 1.3k vertex. But the sphere has 482 vertex. In this case, how does the subtract process take place? So every point cannot be subtracted from each other. Is not it? If the vertex numbers are not equal, then how does this process work? So of course I know the math between two vectors. But what if the vector numbers are not equal?
Ah, the transfer attribute uses several modes. In this case we use closest face interpolated. So it is not using the points of the sphere directly.
@@JohnnyMatthews Yes, that explains everything. Thank you :)
While being amazed I am reminded again - the default values dont work for node groups. Everything just zeros out.
Is there a reason you know of for that, or is it another part of the UI that needs the reset to Default code inserted ???
In the N panel in your node groups, go to the group tab. Then click on an input. You can set a min, max or default there.
@@JohnnyMatthews I know that - my irritation is that pressing backspace over the node group or its individuals values is not using those defaults we can set. As I already said, everything just resets to zero. Not to default. Its an obvious bug.
Thanks for the answer...
❤❤❤
Right back at ya!
Wow ! Amazing ! I m searching for this kind of nodegroup for a while ! Can you share this in a downloadable file please ? Because I am more a 3d artist than a programmer you know...and doing this is kind of a different logic. Thanks for sharing 👍 love it !
www.dropbox.com/s/9oy347ghypb5lp1/tree.blend?dl=0
Thanks a lot man that's so kind. I'm having a lot of fun with it. 💪i had to limit the grid resolution to make it usable but that's fine. It remembers an addon named MST minimum spanning trees. But now with performances enhanced thats great!!
why epic UE5 just not make similar system(geonodes) but make hundred unintuitive system
Couldn't you just extrude individual faces then remove only faces? I think it would've been a lot easier
Probably! There are probably half a dozen ways to accomplish this! It’s just where my brain went 🙂
...
mesh primitives wat? i dont have that