Blender Studio
  • Films
  • Projects
  • Training
  • Characters
  • Tools
  • Blog
  • Join
  • BLENDER.ORG

    • Download

      Get the latest Blender, older versions, or experimental builds.

    • What's New

      Stay up-to-date with the new features in the latest Blender releases.

    LEARNING & RESOURCES

    • Blender Studio

      Access production assets and knowledge from the open movies.

    • Manual

      Documentation on the usage and features in Blender.

    DEVELOPMENT

    • Developers Blog

      Latest development updates, by Blender developers.

    • Documentation

      Guidelines, release notes and development docs.

    • Benchmark

      A platform to collect and share results of the Blender Benchmark.

    • Blender Conference

      The yearly event that brings the community together.

    DONATE

    • Development Fund

      Support core development with a monthly contribution.

    • One-time Donations

      Perform a single donation with more payment options available.

Training Highlights
Stylized Rendering with Brushstrokes
Geometry Nodes from Scratch
Procedural Shading Fundamentals
Stylized Character Workflow

Training types
Course Documentation Production Lesson Workshop

Training categories
Animation Geometry Nodes Lighting Rendering Rigging Shading
Film Highlights
Wing It!
2023
Charge
2022
Sprite Fright
2021
Spring
2019
Project Highlights
Project DogWalk
Interactive
Gold
Showcase
BCON24 Identity
Showcase
Fighting with Grease Pencil
Article
Course
Geometry Nodes from Scratch
Basics
  1. 01

    Theory - Basics

    Free
  2. 02

    Example - Rock Generator

Data Structure
  1. 01

    Theory - Data Structure

  2. 02

    Example - Simple Rock Scattering

Fields
  1. 01

    Theory - Fields

  2. 02

    Example - Advanced Rock Scattering

  3. 03

    Example - Tree Generator

Attribute Propagation
  1. 01

    Theory - Attribute Propagation

  2. 02

    Example - Grass Tuft Generator

Extras
  1. 01

    Hair Assets in Blender 3.5

    Free
  2. 02

    Make Procedural Fur in Blender 3.5

    Free
  3. 03

    Simulation Nodes in Blender 3.6 LTS

    Free
  4. 04

    Node Tools in Blender 4.0

    Free
  5. 05

    Matrix Socket in Blender 4.2

    Free
  6. 06

    Interactive Node Tools in Blender 4.2

    Free
  7. 07

    Gizmos, For-Each Zone and more new Geometry Nodes features - Blender 4.3

    Free
Files
  1. Low Poly Assets
  2. Low Poly Example Scene
  3. Array Tools Free
  4. Doodle Cloud Free
  5. Spaceship Generator Free
  6. Geometry Components Demo

Login to view this content

Join Blender Studio for just €11.50/month and get instant access to all of our training and film assets!

Login Join Blender Studio
Simon Thommes
Simon Thommes Author
License CC-BY
Report Problem
Fields

Example - Tree Generator

Download the file created in this video here:

tree_generator_tutorial.blend
Blender File · 940.2 KB · CC-BY tree_generator_tutorial.blend
Download File

Join to leave a comment.

60 comments
Alfred Lam
Alfred Lam
Jan. 29th, 2025

Really short on time. Just wondering, is there anything that is covered in the video that isn't include in the example file?

Thanks.

Simon Thommes
Simon Thommes
Jan. 29th, 2025

@Alfred Lam While the video obviously contains more explanation and reasoning, the resulting node-tree should be identical.

Alfred Lam
Alfred Lam
Jan. 29th, 2025

Just wondering why do you need a "Store Named Attribute" node for "uv_map". From the node tree, it wasn't used anywhere. Is it a special trick or something? Muting it doesn't seems to make much of a difference!

Simon Thommes
Simon Thommes
Jan. 29th, 2025

@Alfred Lam This video is over 30 minutes long and I recorded it years ago. Could you specify where in the video you are talking about?

Alfred Lam
Alfred Lam
Jan. 31st, 2025

@Simon Thommes That node is in the example file, but wasn't mentioned in the video.

Simon Thommes
Simon Thommes
Jan. 31st, 2025

@Alfred Lam There is automatic versioning for new Blender versions in place that adds nodes to make node setups compatible with new versions of Blender. So this node is added automatically. If you open the file wiuth the Blender version it was originally created with, this won't happen and you will see that the node isn't actually in the file.

Thea Leverton Rose
Thea Leverton Rose
Dec. 18th, 2024

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!

Simon Thommes
Simon Thommes
Dec. 18th, 2024

@Thea Leverton Rose Thanks a lot for all the kind words, I'm glad that the course is helping!

Jerry Perkins (mx1001)
Jerry Perkins (mx1001)
Oct. 25th, 2024

more people need to do alternatives to math. What an excellent explanation.

sunmin kim
sunmin kim
Oct. 3rd, 2024

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.

Simon Thommes
Simon Thommes
Oct. 3rd, 2024

@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.

Rory Harper
Rory Harper
Sept. 3rd, 2024

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.

Rory Harper
Rory Harper
Sept. 3rd, 2024

Ran into a gap issue in the trim group, where I couldn’t close a small gap between branches.

Paul Chamberlain
Paul Chamberlain
June 5th, 2024

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?

Simon Thommes
Simon Thommes
June 5th, 2024

@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.

Rory Harper
Rory Harper
Sept. 3rd, 2024

@Simon Thommes thanks for following up on these. The clarifications and updates based on the version developments have been lifesavers.

Paul Chamberlain
Paul Chamberlain
June 5th, 2024

@Simon Thommes Thanks so much for the quick response, that solved the issue. Awesome course, I'm learning a lot from this!

Duncan Smith
Duncan Smith
Oct. 8th, 2023

This helps a lot! Blender has too much "if you know you know" going on, and learning be impossibly hard.

Dr Tyrell
Dr Tyrell
June 11th, 2023

Incredibly well done. Ty!

Toshinari Yanagi
Toshinari Yanagi
June 2nd, 2023

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?

Simon Thommes
Simon Thommes
June 2nd, 2023

@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.

Toshinari Yanagi
Toshinari Yanagi
June 5th, 2023

@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. ありがとうございました!

Alex Dumproff
Alex Dumproff
May 19th, 2023

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

Simon Thommes
Simon Thommes
May 22nd, 2023

@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

Elena Bragina
Elena Bragina
April 23rd, 2023

Мany thanks. The great job for us.

Jordi Fusté
Jordi Fusté
April 16th, 2023

Thank you so much Simon! Great explanation. Already want to put it in practice.

Mark Leniw
Mark Leniw
Feb. 13th, 2023

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?

Simon Thommes
Simon Thommes
Feb. 13th, 2023

@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.

Pierre Schiller
Pierre Schiller
Nov. 24th, 2022

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.

yang.animator
yang.animator
Nov. 22nd, 2022

in 3.3 I can't find out where is the SCALE node. please point me out

Simon Thommes
Simon Thommes
Nov. 22nd, 2022

@yang.animator I think you are referring to the Vector Math node in Scale mode.

Chris Abbas
Chris Abbas
Nov. 17th, 2022

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.

Simon Thommes
Simon Thommes
Nov. 17th, 2022

@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 :)

Chris Abbas
Chris Abbas
Nov. 18th, 2022

@Simon Thommes I see, thanks very much for the information! I appreciate your time, and this fantastic tutorial series. Cheers.

Tyler Smith
Tyler Smith
Oct. 24th, 2022

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); 🐧🐉

Simon Thommes
Simon Thommes
Oct. 25th, 2022

@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.

Tyler Smith
Tyler Smith
Oct. 25th, 2022

@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!🐧🐉

Eimantas Vaičiūnas
Eimantas Vaičiūnas
July 28th, 2022

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.

Eimantas Vaičiūnas
Eimantas Vaičiūnas
July 28th, 2022

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?

Simon Thommes
Simon Thommes
Aug. 1st, 2022

@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.

James Perry
James Perry
Feb. 4th, 2023

@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.

Eimantas Vaičiūnas
Eimantas Vaičiūnas
Aug. 6th, 2022

@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!

Show more replies
Rory Harper
Rory Harper
Sept. 3rd, 2024

@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

Kinyanjui Kamau
Kinyanjui Kamau
July 19th, 2022

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?

Simon Thommes
Simon Thommes
July 19th, 2022

@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.

Jim Conrad
Jim Conrad
June 29th, 2022

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?

Simon Thommes
Simon Thommes
June 30th, 2022

@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 :)

Shikher Pandey
Shikher Pandey
June 25th, 2022

Thank you Simon!

Stephen Mackenzie
Stephen Mackenzie
June 14th, 2022

Crazy 😜

Kevin Healy
Kevin Healy
June 11th, 2022

This course is so well-designed, Simon! I love the mix of theory and practical applications. I enjoy your clear explanations most of all.

Simon Thommes
Simon Thommes
June 21st, 2022

@Kevin Healy Thank you :)

Fatih Pehlevan
Fatih Pehlevan
May 28th, 2022

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.

Simon Thommes
Simon Thommes
May 30th, 2022

@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.

Fatih Pehlevan
Fatih Pehlevan
May 31st, 2022

@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.

Simon Thommes
Simon Thommes
May 31st, 2022

@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.

Fatih Pehlevan
Fatih Pehlevan
May 31st, 2022

@Simon Thommes Got it. Thank you for being generous and sparing your time to read and answer my questions Simon. Much appreciated!

Frank99
Frank99
May 26th, 2022

awesome tutorial! thanks

陈雨冬
陈雨冬
May 26th, 2022

I wish we had such a great tutorial in China.thank you very much!

Roey Bussear
Roey Bussear
May 25th, 2022

This has been outstanding! Thank you very much!

Jamison
Jamison
May 25th, 2022

thak you so much for the Course I love it

Films Projects Training Blog Blender Studio for Teams
Pipeline and Tools
  • CloudRig
  • Blender Kitsu
  • Brushstroke Tools Add-on
  • Blender Studio Extensions
Characters
  • Mikassa
  • Whale
  • Ballan Wrasse
  • Snow
Studio
  • Terms & Conditions
  • Privacy Policy
  • Contact
  • Remixing Music
Blender Studio

The creators who share.

Artistic freedom starts with Blender The Free and Open Source 3D Creation Suite