Films Training Blog
Pipeline and Tools Characters
Pipeline and Tools Characters
search Login Join
favorite

Development Fund

Support Blender Core Development with a monthly contribution.

theaters

Blender Studio

The creators who share. Access production content and knowledge from the Open Movies.

code

Blender Developer Blog

Latest news and updates on Blender development.

people

Get Involved

Join the community and help with design, development, docs and more.

bar_chart

Open Data

A platform to collect and display the Blender Benchmark results.

menu_book

Blender Docs

Documentation on Blender's features, tools and API.

Blender Conference

The yearly event that brings together the Blender community in one place.

download

Get Blender

Download the latest Blender version, or try the beta!

Films
Training
Blog
Pipeline and Tools
Characters
Search
Login
Join

Course

Geometry Nodes from Scratch
feed Course Overview
Basics keyboard_arrow_down
  1. 01

    Theory - Basics

    Free
  2. 02

    Example - Rock Generator

Data Structure keyboard_arrow_down
  1. 01

    Theory - Data Structure

  2. 02

    Example - Simple Rock Scattering

Fields keyboard_arrow_down
  1. 01

    Theory - Fields

  2. 02

    Example - Advanced Rock Scattering

  3. 03

    Example - Tree Generator

Attribute Propagation keyboard_arrow_down
  1. 01

    Theory - Attribute Propagation

  2. 02

    Example - Grass Tuft Generator

Files keyboard_arrow_down
  1. insert_drive_file

    Low Poly Assets

    visibility_off
  2. insert_drive_file

    Low Poly Example Scene

    visibility_off
  3. insert_drive_file

    Array Tools

    visibility_off
  4. insert_drive_file

    Doodle Cloud

    visibility_off
  5. insert_drive_file

    Spaceship Generator

    visibility_off
  6. insert_drive_file

    Geometry Components Demo

    visibility_off

Course

Geometry Nodes from Scratch
Basics keyboard_arrow_down
  1. 01

    Theory - Basics

    Free
  2. 02

    Example - Rock Generator

Data Structure keyboard_arrow_down
  1. 01

    Theory - Data Structure

  2. 02

    Example - Simple Rock Scattering

Fields keyboard_arrow_down
  1. 01

    Theory - Fields

  2. 02

    Example - Advanced Rock Scattering

  3. 03

    Example - Tree Generator

Attribute Propagation keyboard_arrow_down
  1. 01

    Theory - Attribute Propagation

  2. 02

    Example - Grass Tuft Generator

Files keyboard_arrow_down
  1. insert_drive_file

    Low Poly Assets

  2. insert_drive_file

    Low Poly Example Scene

  3. insert_drive_file

    Array Tools

    Free
  4. insert_drive_file

    Doodle Cloud

    Free
  5. insert_drive_file

    Spaceship Generator

    Free
  6. insert_drive_file

    Geometry Components Demo

You need to login to view this content

You can join Blender Studio for €11.50/month and get access to all of our training & film content instantly!

Login Join Blender Studio

Fields

Example - Tree Generator

16th May 2022

info License: CC-BY
flag Report Problem

Published by

Simon Thommes

Download the file created in this video here: tree_generator_tutorial.blend

31 Comments

Join to comment publicly.

Kevin Healy

11th June 2022 - 02:00

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

21st June 2022 - 00:50

@Kevin Healy Thank you :)

Jamison

25th May 2022 - 18:22

thak you so much for the Course I love it

Roey Bussear

25th May 2022 - 19:24

This has been outstanding! Thank you very much!

陈雨冬

26th May 2022 - 03:24

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

Frank99

26th May 2022 - 20:31

awesome tutorial! thanks

Shikher Pandey

25th June 2022 - 06:16

Thank you Simon!

Jim Conrad

29th June 2022 - 20:46

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

30th June 2022 - 10:11

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

Pierre Schiller

24th November 2022 - 20:12

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.

Fatih Pehlevan

28th May 2022 - 17:48

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

30th May 2022 - 11:10

@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

31st May 2022 - 13:17

@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

31st May 2022 - 14:30

@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

31st May 2022 - 20:11

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

Stephen Mackenzie

14th June 2022 - 02:05

Crazy 😜

Kinyanjui Kamau

19th July 2022 - 05:46

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

19th July 2022 - 12:33

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

Eimantas Vaičiūnas

28th July 2022 - 20:15

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

28th July 2022 - 20:29

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

1st August 2022 - 11:10

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

Eimantas Vaičiūnas

6th August 2022 - 15:16

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

James Perry

4th February 2023 - 13:25

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

Tyler Smith

24th October 2022 - 23:27

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

25th October 2022 - 12:48

@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

25th October 2022 - 23:57

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

Chris Abbas

17th November 2022 - 01:06

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

17th November 2022 - 16:52

@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

18th November 2022 - 00:32

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

yang.animator

22nd November 2022 - 08:56

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

Simon Thommes

22nd November 2022 - 12:02

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

Blender Studio

The Creators Who Share.

Facebook Logo Twitter Logo YouTube Logo
  • Films
  • Blog
  • Training
Pipeline and Tools
  • Cloud Rig
  • Blender Kitsu
  • Contact Sheet Add-on
  • Blender Purge
  • Blender Cloud Services
Characters
  • Einar
  • Security Bot
  • Huginn
  • Pack Bot
Studio
  • Terms & Conditions
  • Privacy Policy
  • Contact
  • Remixing Music
  • Blender.org
Loading...