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