Join Blender Studio for just €11.50/month and get instant access to all of our training and film assets!
Download the file created in this video here:
Thank you Simon, you are an amazing teacher. I learned so much from this due to your excellent explanation of the construction. Very neat and super versatile wee tree generator. I'm quite new to Blender Studio, but I'm so glad I signed up for it, I've learned loads already. Keep up the great work!
@Thea Leverton Rose Thanks a lot for all the kind words, I'm glad that the course is helping!
more people need to do alternatives to math. What an excellent explanation.
Around the 17th minute of the video, there's an issue when creating two transform geometry nodes to make them symmetrical and then cutting the leaves. When connecting to the mesh2 part of the mash boolean (which is vertically long and can accept multiple nodes), only the grid from the transform geometry node that was connected first is cut, and the leaves of the next connected node aren't cut, possibly because the boolean operation is not being processed. I am using Blender version 4.2.2 LTS on an iMac.
@sunmin kim There is a new setting in the Mesh Boolean
node to select a precision mode. This is set to Float
by default. Try setting it to Exact
instead. that should solve your issue.
solved it by setting the X coordinate in the combine XYZ node to -0.05, but I couldn’t find the math or geometry issue that create it.
Ran into a gap issue in the trim group, where I couldn’t close a small gap between branches.
When I collapse the Rotational Array down into a node group, I don't seem to be able to access that group when I apply a geometry nodes modifier to a different object, as you did with the cube at 14:42 in the video. Since the updates has there been a step added that I'm missing?
@Paul Chamberlain Since node tools have been added there is a Usage
panel in the node-group settings now to specify where the node-group should show up. There you need to enable Modifier
. This is set by default when you create an new node-group as a modifier, but when you create it in the node-tree it is not.
@Simon Thommes thanks for following up on these. The clarifications and updates based on the version developments have been lifesavers.
@Simon Thommes Thanks so much for the quick response, that solved the issue. Awesome course, I'm learning a lot from this!
This helps a lot! Blender has too much "if you know you know" going on, and learning be impossibly hard.
Incredibly well done. Ty!
Always, I am learning about GeometryNodes while translating English into Japanese. I think it's a very informative video! By the way, will Geometry Nodes become more mainstream than Animation nodes?
@Toshinari Yanagi Geometry Nodes are directly integrated into the Blender code. That means that the toolset is much more grounded and compatible with the rest of Blender. Animation Nodes, as an addon have the benefit that they can develop independently and are not restricted with their design and performance, which makes the development a bit more free and fast.
But in the long run, pretty much everything you can do with animation nodes should be available in Blender by itself, be that with Geometry Nodes, or future additional node systems.
Also: The original author of the Animation Nodes addon, Jacques Lucke, is the lead developer on the Geometry Nodes project. Afaik he himself is not much involved with maintaining and expanding animation nodes anymore.
@Simon Thommes Thanks for your reply. That was great to hear and very refreshing! I started with the animation node rather than the geometry node and was wondering which one I should keep using. But thanks to you I have solved it. ありがとうございました!
I am actually glad you didn't use the "To Radians" node from the beginning. I think I just realized why so many people view Radians to be superior to Degree, now. :D
@Alex Dumproff Nice! Yea, degrees are nice as they give you a pretty intuitive unit with easy to remember key values, but when you are doing trigonometry radians are usually the way to go
Мany thanks. The great job for us.
Thank you so much Simon! Great explanation. Already want to put it in practice.
I know this is late, but I am new.. What was the reason for adding a duplicate Multiply node for the bend at the end of the course?
@Mark Leniw The reason for the second multiply node is that I want to expose a factor to the modifier input. But I don't want to expose the factor as it is, because the scaling is not very useful. To get a better sensitivity when you are changing the slider I'm multiplying the input value with 0.02 in this case to get much smaller values.
At the end you mention "This was quite a large node tree to setup" -No, it was not. I came to learn this, I thought this was going to be the "warm up" exercise 😅 JKD. It's been amazing to follow along. Thanks for this video.
in 3.3 I can't find out where is the SCALE node. please point me out
@yang.animator I think you are referring to the Vector Math node in Scale mode.
Hi Simon, I'm using Blender 3.3.0, and when I shift + alt + click the Arc node, I do not see a "radius" attribute in the spreadsheet. Did something change, or did I set this up incorrectly? Thanks for your time.
@Chris Abbas It looks like that changed indeed. Apparently by default now the curve primitives don't have a default radius anymore, now that a new data structure is used for curves. But that doesn't effectively change anything. You can still set and use that radius attribute like before.
Blender is still in the process of undergoing the switch from the old curve type to the new one, so some differences like this are going to ocurr for a while, thanks for pointing it out :)
@Simon Thommes I see, thanks very much for the information! I appreciate your time, and this fantastic tutorial series. Cheers.
Hi with a background of programming, I really struggle understanding iterations and accessing. “for” example (0 based indexing pseudocode) how do I say with nodes :: i = 0; branchIWant = 2; for each branch; i++; if i = branchIWant, branchIWant.setColor(blue); 🐧🐉
@Tyler Smith This is not how geometry nodes work currently. There are plans to add the functionality of iterating in loops in the future as well, but currently that's not how it works. The way it works instead is basically that an operation is done on all elements of a domain in parallel using a set of inputs (attributes). So with your example this would work by taking the whole geometry and applying the material, but using the selection input to run the operation only on a subset of the geometry. That selection is a field that can be generated in various ways. Using the spline index and comparing it to a value is definitely one of those ways.
But the most important thing to understand here is that there is a clear data flow for the geometry and every operation uses the inputs that are attached to the geometry as attributes. The future idea of using loops is not going to replace this as the main workflow, but give an alternative/new opporunities.
@Simon Thommes Hi [image didn't embed/upload]... so I tried dragging out from the Rotational Array frame's [Index] to a [Greater than :: 2] node to a [set material :: blue] from the previous trim side's panel's [set material :: tree], but that makes part of each rotated branch blue, instead of several whole branches blue... (it looks like that indexes the branchMesh vertices instead of Rotational Array frame [mesh line] index...) Thanks for your previous comment; instead of thinking of it as loops then the question can become how do I make a subset of my tree geometry (1 or some branches) blue instead of green. Whenever you get the chance; thank you for your time!🐧🐉
When I used the first transform with 90 degree rotation along Y axis my result with boolean difference was plane in the shape of a branch slice. It wasn't "cut in half". It was just the very middle slice. I had to enable "Hole tolerant" to get the desired effect (i.e. exactly one half of the branch sliced off.
Also after connecting the second transform for correcting normals and mirroring — I can see nothing in the viewport. With "Hole tolerant" or without that option turned on. Thoughts what I might be doing wrong?
@Eimantas Vaičiūnas I'm not sure what the issue is. I tried doing the same steps again as I show in the video and it works fine for me. One thing that could result in the same effect would be if you rotated the first plane in the wrong direction on the Z axis. Other than that the boolean node can sometimes fail, even with Hole Tolerant
on. Try wiggling the Z rotation value and see if it works for other angles.
Otherwise maybe try redoing the previous steps.
@Simon Thommes I had the same problem as @Eimantas. Apparently, the original values of the original Arc geometry need to be just right. Slight differences in the Y/Z values for middle and end will 'toggle' between the cross-section and a the desired slice effect.
@Simon Thommes I redid everything from the beginning and somehow this time all started working. I went through those steps slowly and repeatedly and all went well. Thanks!
@Eimantas Vaičiūnas i was having similar issues. I expect that my cutting plane was not quite wider in the XY dimensions and it was creating a cutting error. I made the plane generously more wide than the leaves and it worked as illustrated. Hope it helps others
am I wrong in assuming that geometry nodes are like coding with python but instead of writing thee codes you use the already defined nodes like puzzle pieces?
@chriskamau5 To some degree, yes. The functions that are exposed to you with geometry nodes are very different to what is exposed in the python API, and they are much more performant than what you could implement with python only. So in that sense they are quite different. But in the general idea, geometry nodes are a visual programming language and you can think of using them like coding.
For the tree bending part, could you have switched out the initial 'Mesh Line' node you used for the Layers for an arc or some other curve?
@Jim Conrad Yes, definitely. The difference is that then you'd also have to make sure the instance rotation follows the tangent of the curve. But that's a great idea, there are always multiple ways to doe something with nodes :)
Thank you Simon!
Crazy 😜
This course is so well-designed, Simon! I love the mix of theory and practical applications. I enjoy your clear explanations most of all.
@Kevin Healy Thank you :)
This one felt way more digestible than the advanced rock scattering in some way. I got a question in mind also: What if we want to texture the model we're creating with geometry nodes way more complex rather than just assigning a color. When we change the size and all, how the textures would look that way? Like where comes the uv unwrapping and assigning different texture maps in play and do they response to the changes of the size of the model automatically? Because after manually you unwrap a thing and texture, scaling just messes up the textures etc.
@Fatih Pehlevan There are no tools for UV unwrapping specifically in Geometry Nodes yet. Those will come eventually though. You can opt for procedural shading methods where you don't rely on UVs or try to output Attributes that you use as texture coordinates, like UVs. UVs are also just a vector attribute.
@Simon Thommes I don't think procedural shading will be an option for me because I'll export things to Unreal. I'm gonna create a parkour for a game and thinking about creating different pieces of the parkour with using a geometry nodes setup because they'll have a lot of common parts in them. Kind of resembles the rock generator. I'll probably texture parkour pieces in Unreal or Substance Painter so I have a feeling that I'll still need to uv unwrap every piece manually to get good results with texturing in a different software. I'm also a newbie to geometry nodes so maybe I need to do more research into this to understand how the second part you mentioned in your comment can help me in uv unwrapping and exporting process.
@Fatih Pehlevan For UV unwrapping comlex model procedurally you will need to wait for geometry nodes to have nodes for this out-of-the-box or use additional scripts that automate the process separately instead. The other thing that I was describing of build the UVs with nodes is really quite cumbersome and complicated, involves a bunch of math and is only really viable for quite simple models because of that.
@Simon Thommes Got it. Thank you for being generous and sparing your time to read and answer my questions Simon. Much appreciated!
awesome tutorial! thanks
I wish we had such a great tutorial in China.thank you very much!
This has been outstanding! Thank you very much!
thak you so much for the Course I love it
Join to leave a comment.