Noticed something, if you make grid equal numbers width and height but prime numbers you don't have to check if it's centered with this hexagon in the middle.
@@Erindale I mean there is no offset up/down or l/r with mask, but I guess you can easily check it. I just watched 12 Monkeys so sometimes just trying prime numbers.
@@Erindale ..and theres definitely correlation between number of hexagons in ring and prime sometimes prime +1 sometimes prime -1 sometimes it skips one prime sometimes not.
For anyone having issues with centering the hexagons/There's no tick on the offset; Take the Vector output of your multiply just before your first Set Position and plug it into the Offset of the second Set Position. No idea why it works, it just does.
You 100% will! That's how I learned it all just through working in Blender and asking questions. If I learned this in school, I've long since forgotten...
Just keep following tutorials and following ones where you're out of your comfort zone. Just give it a little time and you'll pick up tons of useful skills and become faster at implementing them with your personal projects! That's what I've been doing and it seems to be working, haha!
@@umbrella0148 I am by no means an expert or master in any of the respective disciplines within Blender, and giving advice to anyone is usually foolish in general, let alone about a software. But my life's experience has reaffirmed that the more well-rounded you are, the better off you will be.
I love how you take the time to explain most of the maths involved, but I must say I'm still waiting on the dot product explanation that'll eventually show up in one of your tutorials one of these days. I always need to google a bit to remind my university classes when you get to one of these.
Haha I need to read up on that one myself! I always just think of it as how similar 2 vectors are. If they're the same it's 1 and if they're opposite then -1 and a gradient in between 😅 I never got as far as vector math at school so I just learned it by how it makes things look in Blender...
this is the video that finally convinced me that "Erindale-level" stuff is possible for me, and I'm supporting/following you on Patreon now. The math explanations were nice and simple!
Watched it from the start until you start playing with the tides, then had to pause the video to grab my jaw from the floor ahah, beautiful. I'll definitely be taking some time off to replicate it here. Thanks for sharing!
It feels like I've had my eyes opened to the wonders of what complex geometry nodes can do! Thanks for making this tutorial, as it's very useful and pretty simple to follow (for the most part) and it has been quite useful after doing some basic geometry nodes tutorials!
Thank you for going out of your way to make this, i have no idea how to get started with geometry nodes at all, though i absolutely love learning new modeling techniques. So fascinating!
I recreated this and then randomly messaged all of my friends 'hey, describe your favorite land formation' so I made them some personalized backgrounds ;) definitely subscribing!
That was an absolutely wonderful tutorial, I'm pretty familiar with material nodes but I haven't looked at the new geometry nodes with all the changes happening. There was so much information in this video, I'm sure I'll refer to it many times.
Thanks so much! There are some small changes (like needing to realise instances manually at the end for the bevel to work) and more options as well in 3.1 alpha!
This is such a good way to learn geometry nodes. I just made one and learned so much, only thing I did different was put all the controls on the geometry nodes modifier tab thing and didn't use empties. Great tutorial and fantastically fun result!
Just going over this for the second time! :) Appears the Set Position node just got changed and there is no check box for Offset. You have to now manually bring over the original Set Position vector, for anyone watching this in the future.
@@ifinxz take the vector you created that is plugged into the first Set Position node and also connect it into the offset socket of the second Set Position node.
Thank you and my hat is off to you for continuing to make these videos despite geo nodes constantly changing. At times it must feel like being a one legged cat trying to bury a turd on a frozen pond.
@@Erindale Heeeey, please, i hope you are going to do one for us, if u can put it in blender market or canopy it would be great because i will be happy to pay for it.
@@drumboarder1 is algebra, trigonometry, geometey, vector math, all that stuff, but for blender (and usually the same math is usefull for unity for example, for game development)
This is amazing. Thank you so much for taking the time to figure this out and explaining in perfect detail on RUclips. This is a great tutorial for getting into the mindset of geometry nodes!
@@Erindale as a noob in blender yet somewhat skilled mid front developer I would really appreciate any info on ways to implement bl files with geo nodes input interactive for external databases. The sheer thought of implementing interactive bl files on web gives me a very hard boner :)
Your magic constant .433 is actually sqrt(3)/4 which is very very close to .433 but the actual value is closer to 0.4330127018922193233818615853764680917357013134525951570139517448 Whenever I have stuff that has such constants, I like to just make a value node and call it the name of the value, set it to that value, and then collapse it.
Best way is to add another geo nodes modifier and add a Distribute Points on Faces node. Use a Normal node and put it through a Vector math node set to Dot Product and the second vector should be (0,0,1). Use a Compare Floats on the output and where plug the output into the selection socket of the distribute node. The float compare will lot you set how close to your input vector it gets masked.
For those curious, the Set Position node doesn't have the Offset checkbox in 3.0 release At around 12:58 Use a Input - Position node first in the position slot, then plug your offset into the offset pin. worked for me
I'm amazed how you managed to do this without a "coding node" like Houdini has. It's astounding how fast Blender has managed to to pump out geometry nodes but it really needs a way to access points by code.
It will come for sure. I think the developers were wanting to get the general workflow paradigm ironed out before giving people access to completely bypass it 😅 not that it would do me any good though as I can't code to save my life...
@@Erindale it’s apparent that you have the logical thinking skills so you would probably pick it up pretty quickly. At least enough to be able to skip over all the math nodes.
38:27 I see what you did there XD Your vids are awesome and very hard to understand, but I know that the day I understand them, I've leveled up. Great work!
Early last year I had to create hexagonal environments…..how I wish this tutorial had been around back then. I’ll definitely follow it through for next time and also just help getting to grips with nodes and procedural modelling. Thanks very much for this!
the adding of the vegetation and making it look pretty would be great as I understand it involves using the normal direction but don't know how and certainly not in the new builds.
Best way is to add another geo nodes modifier and add a Distribute Points on Faces node. Use a Normal node and put it through a Vector math node set to Dot Product and the second vector should be (0,0,1). Use a Compare Floats on the output and where plug the output into the selection socket of the distribute node. The float compare will lot you set how close to your input vector it gets masked.
Thanks so much for this, this tutorial and the one about hexagon tiles helped me a lot understanding the math behind this so I'm now making something similar in unity for a hobby project I'm working on.
11:50 - "Nice and simple"...LOL O!M!G!, took nearly 20 nodes to get the same result as the method of 2 nodes you showed us in the beginning...Sir, you are a math wiz it would seem! I love this tutorial because you explain everything as you do it and most importantly, why you are doing it. Please keep up your amazing work. I am off to look at shaders now as you suggest, it would make this type of work easier when you have an understanding of those nodes first. Thanks for the rabbit hole...
Thank you Very much for this. I went over it all step by step with taking physical notes and researching things new to me that came up to get the max learning out of it. I easily spent 8 hours disecting this and still need to go over some of my Notes yet.
@@Erindale Great Value in fact. I've been roaming around quite a few Blender Tutorials recently, but few of them left me feeling quite as ignorant and blind as this one did. - So i will definately check out some more of your tutorials in the future.
You can make a hexagon of hexagons by starting with a line converted to points for an index as you did, and then instancing a curve circle with six segments scaled to the ID plus 1 all at 0,0,0, so you get a set of concentric hexagons. Then you realise the instances, do a curve to points based on length (for some reason, I've found it necessary for the length to be very slightly longer than the radius, like, 1.001x) and instance hexagons on the points. No need to make a wobbly grid or worry about the 1.73/0.866/0.43 issue or make a mask using the dot product. All those numbers are related, btw. 0.866 is half the square root of three, but it's also the sine of 60 degrees, which is why it and numbers relating to it keep popping up when you're using triangular or hexagonal grids.
@@wanderingturtle1705 Hm. Hard to do without screenshots. Basically, add a curve primitive: line. Convert it to as many points as you want concentric hexagons using the "curve to points" node using the "count" parameter. Then put that into a "set position" node, and plug a vector of 0,0,0 into the "position" socket so all the points are centred. Then create a curve primitive: circle, and make it a hexagon by giving it six sides. Then, do an "instance on points" using the hexagon as the thing being instanced, and plug the "scale" socket into an input: ID and a math node that adds 1 to that value. Now you have a set of concentric hexagons. Now, do another curve to points with that, and this time use the "length" parameter instead of the "count" one, and enter a value of very slightly over 1 into the dialog box. Hey presto. You have a set of points in a tessellating hexagonal pattern that you can us to instance hexagons, or anything else you want in that pattern. Triangles also work, but you have to rotate some of them.
I haven't looked at geometry nodes in months, look back over here and everything's new and different, love it!🤩 Halfway through now, though the maths are a bit much for a wednesday morning, you really do a great job explaining this! 🦾 Aii, soldiering on now!
Hahah yeah a lot of low level nodes only still. My geo nodes toolkit will get the fields update in the next few days though so that'll make stuff like this much easier!
Great video, Great for an introduction to geo nodes as well :) . I've been trying to get vegetation to generate on top like the thumbnail. I have read some of the comments that you have explained how to do this but can't seem to get it working, do I need to create a whole new geo node or add to the existing one? Thanks
I'd do it in a new node tree so it can be after a bevel modifier if you wanted. I'd join the discord as there'll be people who can help you and share screenshots etc
Loved this tutorial, great to see the new system. I'm having fun playing with the hexagon world. One question, using the 3.0 beta, the bevel modifier only affected the 'sea' hexagon, not the instanced hexagons from the collection. I ended up having to add a bevel modifier to the cylinders themselves. Did I miss something?
I think this changed the day after I recorded it 😅 You now need to stick a Realise Instances node at the end and you'll be able to bevel. But, like in my case, realising instances makes things run a bit slower. Especially when there were a lot of instances.
Somehow You dragged me all the way up and now I'm enjoying the vista from the top of my own hexascape. Even though I don't fully understand the maths that make or break it ;) Oh btw could You post the link to the water material? Thanks for sharing Your knowledge!
That water material is part of the Materialiq add-on you can find on BlenderMarket! It's a paid add-on but it gives a good range of materials. Glad you got to the tutorial result!
In solid view, go up to the drop down on the right of the shading buttons, set it to flat, random, cavity set to both. That's what I have my startup file set as. It's the random bit that gives the colours
Love this! I don't know if you will see this but from the top of your head would you suggest any book that explains how to effectively use math for art (generative stuff, nodes, shaders, etc) so that one can better understand this side of "art". Thank you for your tutorials! They are of great help.
You fell into my RUclipss because I've been getting into geo nodes lately, but I checked out a couple of your Node-vember videos. I've seen some impressive stuff done with vector displacement nodes in materials, but your shit blew me away! If you guys want a straight up clinic on material vector displacement go to this dude's Playlists and check out the Nodevember 2020 one. You'll see stuff you didn't know was possible, unless you're already a badass like this guy I guess. Ha!
I actually haven't done the final module in your geonode course yet, is this the same material? When I was doing your course I was testing myself every day to recreate the scene from scratch without your help, then I got distracted for about 2 months, now I'm going to continue.
Yeah the final session i added after covers how to make the full scene in the new fields system! If you can follow this tutorial though then maybe try and make the scene yourself with fields and if you get stuck anywhere, cross reference the video!
absolutely amazing. Thank you for such a well explained and timed video. 👍 Once question though, what are you using toward the start, in Solid Mode, that gives the hexagons that soft kinda bevelled appearance?
@@Erindale Thank you for the speedy response. It is after you show Christos' version and more at like 15 - 20mins in. As you're building out the nodes, the objects in your solid view have slightly rounded edges and look quite different to my solid view, with sharp edges.
@@lux5798 oh I got you, when in solid view, go up to the drop down button to the right of the 4 shading options. I set mine to Flat, random, cavity which I set to both
Height map colour will just go through a subtraction for mid-level, multiply for strength and then that sets the height. The only thing to set up different is the vector input to map the image. Easiest way is to take a position input node into a vector map range. Then use a bounding box node on your whole grid to get the min max for the from min, from max, of the map range. To min/Max will be (0,0,0) and (1,1,1) as a full UV area and then that plugs into your image texture node
Hi Erindale, after almost two years your tutorial is still excellent and perfectly clear. One thing I can't get: why when you center the grid on the Origin, you use Scale, instead of Divide (by -2)?
So why multiply by 0.5 instead of divide by 2? It's just cheaper to multiply than divide in terms of how computers actually process the maths. You cant always avoid a divide (like if you're needing to do 1/variable) but if you can use multiply, it's generally better.
I just watched the video today and absolutely loved it. Was easy and fun to follow along, didn't get bogged down - unlike the node sheet - at all! Though I do have only one issue, which is when I add a bevel modifier *after* the geo-node modifier, it doesn't bevel at all. Is there a specific reason why it might be so? I followed the tutorial to the letter with a few minor modifications to numbers alone.
You'll need to add a realise instances node at the end to get the bevel working now. When I made the tutorial the bevel modifier would realise instances implicitly but this behaviour was changed to make sure the artist was in control of that step!
I think the best way to generate a hexagon grid is to start with one hexagon (a curve circle with resolution 6). Then turn it to an instance (geom to instance) and then duplicate as many times as you want layers (duplicate elements node) and then apply scale instances node with scale factor set to its duplicatuon index, then realize instances and curve to point with count set to (again) duplicatuon index but multiplied by 6. This worked perfectly for me. That’s all you need to get the points to instanciate cylinders at. The bonus is that it comes out nice and centered. Just 6 nodes! Hope this helps someone. I could probably provide a screenshot if someone’s interested.
You can also get a grid, offset every other row 50% and triangulate. That's good enough to instance on points but if you want to get hexagons directly you can also dual mesh
Ah yeah grid, offset and triangulate is a cool idea as well! I’m not sure what dual mesh means. Still got lots to learn about blender but I have to say I am proud of the way I came up with which is basically 6 nodes replacing the first 20 minutes of this video. It comes out centered and there is no creating of mesh that will just be matsked out anyway. That should save some processing power. Also it eliminates the need to have the X, Y size inputs entirely. Just clean and and precise and very readable 👌
Turns out that I was already subbed to your channel LMAO. I went to subscribe cause this channel seemed cool and I was interested in more of your videos, but then I noticed I already subbed. So you somehow pulled my subscriptionship twice. Respect+
I never got the hang geo nodes, so this was an amazing tutorial to follow. Also, if you think about it, you just made a infinite map that you can zoom in and out of, move around and make greater resolution. I'm gonna try generating trees and rocks and maybe some other stuff, villages even, but that will be later. All In All, great tutorial
Essentially how most open world games work. The player is the centre and the map loads and unloads as they move through it. That's why in Minecraft, the draw distance has such a big effect on performance.
@@Erindale I thought that they had some predefined map which has its boundaries, and the only part that is loaded is where the pleyer is. But if it is infinite like the noise texture than thats great.
Thanks Erin, this is amazing. But I have a problem with the offset step. in the official version Set position doesn't have a check box. Instead it has a XYZ boxes. And i tried to follow the vidieo but am stuck.
Instead of ticking the box to tell the node that you've plugged in an offset vector, now we just plug the offset vector directly into the offset vector socket.
This is such a neat tutorial! I have a dumb question though. I am pretty new to geometry nodes (and I am not an experienced blender artist but want to learn more). In your geometry node shader graph some of the nodes connections are done with solid lines and some are done with dashed lines, is this just a change you have made to your settings or do the connections mean something different when the lines are dashed versus solid? Sorry if this was explained in a previous video.
Okay admittingly I was still in the middle of watching when I wrote this question, he doesn't know but if someone else knows that would still be cool to be told!
So a dashed line has a field in it like Position or Index or Normal etc. Solid lines are constants like on the bounding box node outputs. A field is just different because it gets specifically computed for every mesh element (normally vertices).
Erin. Thank you very much for the fantastic tutorial. I'm beginner in Blender and love your tutorials. I see you reply to most of the questions. It is fantastic. May I have a question? You mentioned that at the time of making the tutorial the image texture node was not available. Now it is. Could you give me some tip about, If I use image texture, how to color the hexagons according to the color of the underlying texture or even better how to calculate the average color of the area below each hexagon column and then how to apply that color to the material which is assigned to the hexagon, so that way I could make a kind of mozaik from any picture? Thank you very much in advance.
Alright so images are mapped to the 0..1 XY space. You're going to want to create your own vector based on the position that fits your hexagon grid. It doesn't have to be too hard, just position - separateXYZ - map range on X and Y to set -n..n to become 0..1 - combinexyz and plug into your image texture. You could do the same maths in the shaders but using object coordinates instead of position. Or to pass data across you're going to want to use a Transfer Attribute node with the points you're Instancing on as the target and the image as the attribute. Interpolation should be Nearest. You need to use a scale instances node to scale your hexagon tiles down to 0 and then realise them. Plug these into another Transfer Attribute node as the target but this time set it to transfer by index. Plug the first transfer into the attribute of this new transfer. In parallel, take your unmodified hexagon instances and realise them. That final transfer node can be plugged into the Group Output node and be given a name on the modifier. In your shaders you can use the Attribute input node to pull that attribute and use it for your shader. This process is a bit easier with my toolkit add-on as there's an Attribute to Instances node in there that saves you from having to set that up.
@@Erindale Wow. You are amazing. I don't expected to receive answer so quickly. I watched your GN101 tutorials all day today. I don't say I understand exactly what you are recommending, but I already have a clue about the things you mentioned. I'm definitely considering purchasing your kit. And will try to work out the solution based on your recommendations. A big thank you. Keep up these fantastic tutorials.
Here's a trick that works now: Create a parallelogram quadrilateral and fill it. Subdivide it as many times as you need. Triangulate it, and dual it with the dual mesh node. This should produce a quick hex grid.
Finally finishe the tutorial and it came out great. I have a few questions since it seems these are explained in other tutorials. When I am working in 3.1 and earlier versions all my geometry is grey. I did not see how you started at green and it automatically assigned new colors as you added new objects. is that a plugin or setting? You mention the plugin for the water material and node wrangler. are there other plugins that you are using? is there another video that talks about installing them and setting up blender? Thanks
The coloured viewport is just in the viewport shading options. The little down arrow to the right-hand side of the shading type balls, in there I set it to flat, random, and I set cavity to both. As for plugins, the material comes from Materialiq which is just a material library but doesn't do anything to the actual functionality of Blender. Node Wrangler is a default add-on and just needs enabling in the add-on preferences (edit> Preferences>Add-ons). Otherwise I just have my own toolkit but that's not something I use in most tutorials as I want people to be able to use the vanilla tools.
@@Erindale Wow thanks. Didn't realize that shading feature was in there at all. Its amazing how many features are hidden in Blender. thanks for the update.
You should try do a penrose tiling with pentagons. I believe that there should be a mine craft style game based on the penrose tiling because it will make the world infinitely explorable even without noise based randomness, and each player could explore this unique mathematical phenomenon together.
I'm following along in Blender 3.1 alpha and I notice that the Set Position node has changed slightly. Instead of the checkbox for Offset, there's a vector entry (blue dot) that you need to connect to. (12:49)
@@harrywarriner4973 Instead of connecting the Scale socket to the Position socket and checking Offset, connect the Scale socket directly to the Offset socket to achieve the same result. If you connect to the Position socket, you can then change the Offset in X, Y or Z directions. Just a bit different in 3.1. Hope this helps.
You need to use the REALISE INSTANCES node at the end for the Bevel to now work! Seems to have been updated since I recorded this.
Noticed something, if you make grid equal numbers width and height but prime numbers you don't have to check if it's centered with this hexagon in the middle.
@@genesis2303 no way really?!
@@Erindale I mean there is no offset up/down or l/r with mask, but I guess you can easily check it. I just watched 12 Monkeys so sometimes just trying prime numbers.
@@Erindale ..and theres definitely correlation between number of hexagons in ring and prime sometimes prime +1 sometimes prime -1 sometimes it skips one prime sometimes not.
How do you add more more colors to the world? i tried adding more, but only the first 4 colors would show.
For anyone having issues with centering the hexagons/There's no tick on the offset;
Take the Vector output of your multiply just before your first Set Position and plug it into the Offset of the second Set Position.
No idea why it works, it just does.
The position socket is for explicitly defining the position and the offset socket is for adding a vector to the existing position.
Thanks!! I almost quit because of this lol
Thank you for your assistance.
why is there no tick on the offset tho?
Thank you! You're an angel.
Me watching this is like a first grader attending a calculus lecture. One day I hope I understand what I'm actually doing while following these.
You 100% will! That's how I learned it all just through working in Blender and asking questions. If I learned this in school, I've long since forgotten...
I know I’m going to go pick up my wooden numbers blocks :p
Just keep following tutorials and following ones where you're out of your comfort zone. Just give it a little time and you'll pick up tons of useful skills and become faster at implementing them with your personal projects! That's what I've been doing and it seems to be working, haha!
@@justin7649 but its how seamless some ppl plug in nodes, makes me wonder if I should study math foremost.
@@umbrella0148 I am by no means an expert or master in any of the respective disciplines within Blender, and giving advice to anyone is usually foolish in general, let alone about a software. But my life's experience has reaffirmed that the more well-rounded you are, the better off you will be.
These are so relaxing to watch. I just watched all of it, without any intention to actually recreate it haha
I love how you take the time to explain most of the maths involved, but I must say I'm still waiting on the dot product explanation that'll eventually show up in one of your tutorials one of these days. I always need to google a bit to remind my university classes when you get to one of these.
Haha I need to read up on that one myself! I always just think of it as how similar 2 vectors are. If they're the same it's 1 and if they're opposite then -1 and a gradient in between 😅
I never got as far as vector math at school so I just learned it by how it makes things look in Blender...
You can't go wrong with Freya!
ruclips.net/video/MOYiVLEnhrw/видео.html
@@Erindale As in the example you used, how can you make the materials have a gradient, so it doesn't harshly switch from one material to another?
this is the video that finally convinced me that "Erindale-level" stuff is possible for me, and I'm supporting/following you on Patreon now. The math explanations were nice and simple!
Glad you're getting stuck in! There's really not too much more complex than this, it's all about layering up building blocks.
@@Erindale and the logic of how to do that!
Watched it from the start until you start playing with the tides, then had to pause the video to grab my jaw from the floor ahah, beautiful. I'll definitely be taking some time off to replicate it here. Thanks for sharing!
It feels like I've had my eyes opened to the wonders of what complex geometry nodes can do! Thanks for making this tutorial, as it's very useful and pretty simple to follow (for the most part) and it has been quite useful after doing some basic geometry nodes tutorials!
Thanks so much! Glad it's been helpful!
There is simpler ways to do this, but I love the reasoning and math that his tutorial brings to the table. This is an awesome tutorial thanks.
Thank you for going out of your way to make this, i have no idea how to get started with geometry nodes at all, though i absolutely love learning new modeling techniques. So fascinating!
I recreated this and then randomly messaged all of my friends 'hey, describe your favorite land formation' so I made them some personalized backgrounds ;) definitely subscribing!
That's such a nice idea!! Thanks
That was an absolutely wonderful tutorial, I'm pretty familiar with material nodes but I haven't looked at the new geometry nodes with all the changes happening. There was so much information in this video, I'm sure I'll refer to it many times.
Thanks so much! There are some small changes (like needing to realise instances manually at the end for the bevel to work) and more options as well in 3.1 alpha!
This is such a good way to learn geometry nodes. I just made one and learned so much, only thing I did different was put all the controls on the geometry nodes modifier tab thing and didn't use empties. Great tutorial and fantastically fun result!
Great to hear! Geo Nodes have a lot of potential!
amazing, not only because you used hexagon but also cuz the final result is impressive and cool
Just going over this for the second time! :) Appears the Set Position node just got changed and there is no check box for Offset. You have to now manually bring over the original Set Position vector, for anyone watching this in the future.
Thanks for sharing this tip!
Thanks!
got the problem, please explain more, I don't understand how to do :-(
@@ifinxz take the vector you created that is plugged into the first Set Position node and also connect it into the offset socket of the second Set Position node.
@@GifCoDigital thank you, I will try again tomorrow :)
Awesome as always Erin!!! it all comes 2gether with geonodes as of recent Fields introduction!!! Sooo exciting.. Kudos
I came up for air and wow, great stuff. You have solid teaching skills.
Thanks Kev!
Thank you and my hat is off to you for continuing to make these videos despite geo nodes constantly changing. At times it must feel like being a one legged cat trying to bury a turd on a frozen pond.
That is the first time I've heard that analogy thank you I will use it always
Erin, do you plan to make a CG math course for beginners? I think it would be a great product for all your node magic fans :)
I was planning on doing one actually! It'll definitely have to be after Nodevember though now 😁
@@Erindale I'd like to vote for CG Math too!
@@Erindale Heeeey, please, i hope you are going to do one for us, if u can put it in blender market or canopy it would be great because i will be happy to pay for it.
What is CG math?
@@drumboarder1 is algebra, trigonometry, geometey, vector math, all that stuff, but for blender (and usually the same math is usefull for unity for example, for game development)
I'm waiting for the nodes to mature and settle before I dive in, your work is beauty!
Definitely getting there now! I might still wait for 3.0 to freeze next week as there will still be some more coming
Many thanks for this rich tutorial. I just had a reminiscence of Softimage ICE vibes. Blender is beautiful
hell yeah! I'm still using Softimage as main 3D package. But learning Blender right now to switch to it in future. :-)
I'm excited for fields! Its easier to wrap my head around compared to attributes. Thanks for the excellent video!
Yeah for sure! I was ootl for ages and worried about how long it would take to learn but it was like 2 days to get it down. So much better!
I really love the style and clamness when you explain what every node does. So satisfying to follow along! Thank you soo much!
This is amazing. Thank you so much for taking the time to figure this out and explaining in perfect detail on RUclips. This is a great tutorial for getting into the mindset of geometry nodes!
The use of the dot product was genius. It would have taken me an hour to think of that.
Couldn't we just use a flat cylinder primitive with 6 sides instead of all the math?
That gives me an awe. Second time I consider subscribing on patreon regardless of actual content output
Thanks so much!
@@Erindale as a noob in blender yet somewhat skilled mid front developer I would really appreciate any info on ways to implement bl files with geo nodes input interactive for external databases. The sheer thought of implementing interactive bl files on web gives me a very hard boner :)
Your magic constant .433 is actually sqrt(3)/4 which is very very close to .433 but the actual value is closer to 0.4330127018922193233818615853764680917357013134525951570139517448
Whenever I have stuff that has such constants, I like to just make a value node and call it the name of the value, set it to that value, and then collapse it.
-0.433013 m is close enough innit
nice
I'd love to know how to add vegetation/meshes procedurally on top!! Thanks for this tutorial, i absolutely appreciate your hard work, thanks!
Best way is to add another geo nodes modifier and add a Distribute Points on Faces node. Use a Normal node and put it through a Vector math node set to Dot Product and the second vector should be (0,0,1). Use a Compare Floats on the output and where plug the output into the selection socket of the distribute node. The float compare will lot you set how close to your input vector it gets masked.
@@Erindale Thank you!! ♥
@@everInfinity Have you made it?
@@Erindale Please another part for this one
For those curious, the Set Position node doesn't have the Offset checkbox in 3.0 release
At around 12:58
Use a Input - Position node first in the position slot, then plug your offset into the offset pin.
worked for me
You don't need to use the position node in the first socket, the offset will assume you mean offset relative to the current position 🙂
Thank you! was looking for this
I'm amazed how you managed to do this without a "coding node" like Houdini has. It's astounding how fast Blender has managed to to pump out geometry nodes but it really needs a way to access points by code.
It will come for sure. I think the developers were wanting to get the general workflow paradigm ironed out before giving people access to completely bypass it 😅 not that it would do me any good though as I can't code to save my life...
@@Erindale it’s apparent that you have the logical thinking skills so you would probably pick it up pretty quickly. At least enough to be able to skip over all the math nodes.
Wow~!!! This is some cool stuff~!!!
I used to model hexagon world with just array and manual height adjustments. but this is just insane~!!!
Hadn't really played with Geometry Nodes much before... this tutorial was really helpful with a fun result! Great stuff!
38:27 I see what you did there XD
Your vids are awesome and very hard to understand, but I know that the day I understand them, I've leveled up. Great work!
just another great tutorial of THE famous Erindale
this is pretty much mind blowing
It'll get easier and less math-y over time as more nodes are added! We can already do loads with the tools though!
What an amazing end result! Really pretty
Hi, if you're into blender tutorials, you can visit my channel where you can find a playlist of some cool tutorials.
Early last year I had to create hexagonal environments…..how I wish this tutorial had been around back then. I’ll definitely follow it through for next time and also just help getting to grips with nodes and procedural modelling. Thanks very much for this!
the adding of the vegetation and making it look pretty would be great as I understand it involves using the normal direction but don't know how and certainly not in the new builds.
Best way is to add another geo nodes modifier and add a Distribute Points on Faces node. Use a Normal node and put it through a Vector math node set to Dot Product and the second vector should be (0,0,1). Use a Compare Floats on the output and where plug the output into the selection socket of the distribute node. The float compare will lot you set how close to your input vector it gets masked.
@@Erindale
Thanks for the tutorial!
I also got bad noise in cycles x and switching from game ready nvidia drivers to studio drivers fixed it for me.
Ah thank you!! I changed to game ready a few days ago so maybe it coincided with that. I'll jump back to studio drivers 🙏
Thanks so much for this, this tutorial and the one about hexagon tiles helped me a lot understanding the math behind this so I'm now making something similar in unity for a hobby project I'm working on.
it's amazing to me that these videos are free
11:50 - "Nice and simple"...LOL O!M!G!, took nearly 20 nodes to get the same result as the method of 2 nodes you showed us in the beginning...Sir, you are a math wiz it would seem! I love this tutorial because you explain everything as you do it and most importantly, why you are doing it. Please keep up your amazing work. I am off to look at shaders now as you suggest, it would make this type of work easier when you have an understanding of those nodes first. Thanks for the rabbit hole...
Thank you! Enjoy Pandora's box!
Thank you Very much for this.
I went over it all step by step with taking physical notes and researching things new to me that came up to get the max learning out of it. I easily spent 8 hours disecting this and still need to go over some of my Notes yet.
Amazing dedication! I'm glad it offered something of value!
@@Erindale Great Value in fact. I've been roaming around quite a few Blender Tutorials recently, but few of them left me feeling quite as ignorant and blind as this one did. - So i will definately check out some more of your tutorials in the future.
@@Erindale In Fact i think i will just subscribe to some of your courses in the near future.
You can make a hexagon of hexagons by starting with a line converted to points for an index as you did, and then instancing a curve circle with six segments scaled to the ID plus 1 all at 0,0,0, so you get a set of concentric hexagons. Then you realise the instances, do a curve to points based on length (for some reason, I've found it necessary for the length to be very slightly longer than the radius, like, 1.001x) and instance hexagons on the points. No need to make a wobbly grid or worry about the 1.73/0.866/0.43 issue or make a mask using the dot product.
All those numbers are related, btw. 0.866 is half the square root of three, but it's also the sine of 60 degrees, which is why it and numbers relating to it keep popping up when you're using triangular or hexagonal grids.
I'm really new to Blender big ask but could you unpack this for me a little more. I'd love to try this novel approach.
@@wanderingturtle1705 Hm. Hard to do without screenshots.
Basically, add a curve primitive: line. Convert it to as many points as you want concentric hexagons using the "curve to points" node using the "count" parameter. Then put that into a "set position" node, and plug a vector of 0,0,0 into the "position" socket so all the points are centred. Then create a curve primitive: circle, and make it a hexagon by giving it six sides. Then, do an "instance on points" using the hexagon as the thing being instanced, and plug the "scale" socket into an input: ID and a math node that adds 1 to that value. Now you have a set of concentric hexagons.
Now, do another curve to points with that, and this time use the "length" parameter instead of the "count" one, and enter a value of very slightly over 1 into the dialog box.
Hey presto. You have a set of points in a tessellating hexagonal pattern that you can us to instance hexagons, or anything else you want in that pattern. Triangles also work, but you have to rotate some of them.
@@andrewharing2637 Thanks very much for taking the time to write this! I'm going to give it a shot now, wish me luck!
@@wanderingturtle1705 Good luck!
I think I was asleep during high school trigonometry. Damn. But your knowledge is mind blowing. Thanks for the tutorials.
Yeah same! I've ended up relearning everything from scratch through Blender 😅
@@Erindale can’t wait for the day we can just plug 🔌 into who’s knowledge we want and download what we need. I’m sure that day is not to far off.
just amazing tutorial, I would love to be able to decorate each hexagon randomly
If you realise instances at the end you can instance new things on the surface as much as you want!
i literally can't understand how this makes sense to you. like i know how to do some things in blender but i could never do this by myself.
After a point you just suddenly click with it!
this is madness
20:20 come ON i did not suffer through precalculus just to forget SOH CAH TOA at any point in my life
Looks like a perfect ground for a Amiga Mechforce sequel.
I haven't looked at geometry nodes in months, look back over here and everything's new and different, love it!🤩 Halfway through now, though the maths are a bit much for a wednesday morning, you really do a great job explaining this! 🦾 Aii, soldiering on now!
Hahah yeah a lot of low level nodes only still. My geo nodes toolkit will get the fields update in the next few days though so that'll make stuff like this much easier!
Beyond brilliant my man, bravo!
Thanks so much!
This is truly top notch stuff.
Thanks so much!
Awesome. Thank you. I had to set material in the node to get the water. I'm very fresh using blender ;). Thanks again.
I actually paused the video and I'm like what is going on. Trying to jump ahead. Haha. Many minutes later .... 🙄
Great video, Great for an introduction to geo nodes as well :) . I've been trying to get vegetation to generate on top like the thumbnail. I have read some of the comments that you have explained how to do this but can't seem to get it working, do I need to create a whole new geo node or add to the existing one? Thanks
I'd do it in a new node tree so it can be after a bevel modifier if you wanted. I'd join the discord as there'll be people who can help you and share screenshots etc
@@Erindale Is this discord open to the public? I didnt see it in the description.
Loved this tutorial, great to see the new system. I'm having fun playing with the hexagon world. One question, using the 3.0 beta, the bevel modifier only affected the 'sea' hexagon, not the instanced hexagons from the collection. I ended up having to add a bevel modifier to the cylinders themselves. Did I miss something?
I think this changed the day after I recorded it 😅 You now need to stick a Realise Instances node at the end and you'll be able to bevel. But, like in my case, realising instances makes things run a bit slower. Especially when there were a lot of instances.
@@Erindale Thanks!
@@Erindale Thanks. I had the same issue, and yes, that node really slows things down. However, amazing tutorial. Thanks.
as a workaround, you can apply the modifier on the instancied object instead of the hexagon
Just brilliant! THANK YOU! Dg
Incredible work as per usual!
If you like watching blender tutorials, I think you might be interested in visiting my channel where there is a playlist of some nice tutorials.
Just coming out of this, I have a strong desire to tell a story in a world like this.
Procedurally generating your own worlds gives you an almost infinite amount of inspirational opportunity!
wow, excellent tutorial video, it took me a while to do but very clear instruction and direction, cant wait for your next video
Well done working through it!
Thank you for this video! Was a lot of help for someone totally new to geometry nodes
Glad it helped!
Fantastic tutorial, You have such great knowledge of math in general haha, thanks!
Somehow You dragged me all the way up and now I'm enjoying the vista from the top of my own hexascape. Even though I don't fully understand the maths that make or break it ;)
Oh btw could You post the link to the water material? Thanks for sharing Your knowledge!
That water material is part of the Materialiq add-on you can find on BlenderMarket! It's a paid add-on but it gives a good range of materials.
Glad you got to the tutorial result!
So awesome, thanks for the tutorial!
Thanks Zorro
Very cool. I learned a lot.
How did you make it have the colors (before adding the texture)?
When I try it's the blender default grey.
Amazing tutorial btw! I subbed :)
In solid view, go up to the drop down on the right of the shading buttons, set it to flat, random, cavity set to both. That's what I have my startup file set as. It's the random bit that gives the colours
@@Erindale Thanks so much!
Love this! I don't know if you will see this but from the top of your head would you suggest any book that explains how to effectively use math for art (generative stuff, nodes, shaders, etc) so that one can better understand this side of "art". Thank you for your tutorials! They are of great help.
Afraid I don't know any books on this stuff! If you want to get more into the math side then I'd recommend checking out 3blue1brown on RUclips
Thank you Erindale (thank you, thank you, thank you) for this video.
The new system is powerful but definitely takes some getting into! More content to follow
Mind blown at 23:26
Great job and thanks for showing your workflow.
Are you looking for blender tutorials? I upload them on my channel so visit it and you can find a playlist of the turoials.
You fell into my RUclipss because I've been getting into geo nodes lately, but I checked out a couple of your Node-vember videos. I've seen some impressive stuff done with vector displacement nodes in materials, but your shit blew me away! If you guys want a straight up clinic on material vector displacement go to this dude's Playlists and check out the Nodevember 2020 one. You'll see stuff you didn't know was possible, unless you're already a badass like this guy I guess. Ha!
Haha thank you! Yeah things got a bit out of hand last year 😁
Thanks for teaching me how to get gradients which are centered at origin
the best video i have ever seen
I actually haven't done the final module in your geonode course yet, is this the same material? When I was doing your course I was testing myself every day to recreate the scene from scratch without your help, then I got distracted for about 2 months, now I'm going to continue.
Yeah the final session i added after covers how to make the full scene in the new fields system! If you can follow this tutorial though then maybe try and make the scene yourself with fields and if you get stuck anywhere, cross reference the video!
11/10 beautiful
this is so cool
Thanks!
absolutely amazing. Thank you for such a well explained and timed video. 👍 Once question though, what are you using toward the start, in Solid Mode, that gives the hexagons that soft kinda bevelled appearance?
Do you mean at around 01:00? That's Christos Stavridis' version which is properly bevelled and rendered.
@@Erindale Thank you for the speedy response. It is after you show Christos' version and more at like 15 - 20mins in. As you're building out the nodes, the objects in your solid view have slightly rounded edges and look quite different to my solid view, with sharp edges.
@@lux5798 oh I got you, when in solid view, go up to the drop down button to the right of the 4 shading options. I set mine to Flat, random, cavity which I set to both
@@Erindale perfect! Thank you. 🙏 Have a great weekend.
Your tutorials are pure genius ! I'm trying to replace the noise texture by a height map but for now, can't find the right way to do it.... :)
Height map colour will just go through a subtraction for mid-level, multiply for strength and then that sets the height. The only thing to set up different is the vector input to map the image. Easiest way is to take a position input node into a vector map range. Then use a bounding box node on your whole grid to get the min max for the from min, from max, of the map range. To min/Max will be (0,0,0) and (1,1,1) as a full UV area and then that plugs into your image texture node
@@Erindale thank you for your answer. I'm trying to figure it out how to apply your explanation.... you're fast! I don't get everything.... yet !
Looks sweet
Hi Erindale, after almost two years your tutorial is still excellent and perfectly clear. One thing I can't get: why when you center the grid on the Origin, you use Scale, instead of Divide (by -2)?
So why multiply by 0.5 instead of divide by 2? It's just cheaper to multiply than divide in terms of how computers actually process the maths. You cant always avoid a divide (like if you're needing to do 1/variable) but if you can use multiply, it's generally better.
@@Erindale Thanks, so the Scale operation is equivalent to a multiplication?
That's right yeah, "multiply by scalar". Scale by 2 is the same as multiply by (2,2,2)
@@Erindale Thaks, I apologize for the silly question: the concept of scaling a point seemed a little awkward.
I just watched the video today and absolutely loved it. Was easy and fun to follow along, didn't get bogged down - unlike the node sheet - at all!
Though I do have only one issue, which is when I add a bevel modifier *after* the geo-node modifier, it doesn't bevel at all. Is there a specific reason why it might be so? I followed the tutorial to the letter with a few minor modifications to numbers alone.
You'll need to add a realise instances node at the end to get the bevel working now. When I made the tutorial the bevel modifier would realise instances implicitly but this behaviour was changed to make sure the artist was in control of that step!
@@Erindale I figured that out not long after my comment, thank you so much for the reply! Truly enjoyed your video.
I think the best way to generate a hexagon grid is to start with one hexagon (a curve circle with resolution 6). Then turn it to an instance (geom to instance) and then duplicate as many times as you want layers (duplicate elements node) and then apply scale instances node with scale factor set to its duplicatuon index, then realize instances and curve to point with count set to (again) duplicatuon index but multiplied by 6. This worked perfectly for me. That’s all you need to get the points to instanciate cylinders at. The bonus is that it comes out nice and centered. Just 6 nodes!
Hope this helps someone. I could probably provide a screenshot if someone’s interested.
You can also get a grid, offset every other row 50% and triangulate. That's good enough to instance on points but if you want to get hexagons directly you can also dual mesh
Ah yeah grid, offset and triangulate is a cool idea as well! I’m not sure what dual mesh means. Still got lots to learn about blender but I have to say I am proud of the way I came up with which is basically 6 nodes replacing the first 20 minutes of this video. It comes out centered and there is no creating of mesh that will just be matsked out anyway. That should save some processing power. Also it eliminates the need to have the X, Y size inputs entirely. Just clean and and precise and very readable 👌
Turns out that I was already subbed to your channel LMAO. I went to subscribe cause this channel seemed cool and I was interested in more of your videos, but then I noticed I already subbed. So you somehow pulled my subscriptionship twice. Respect+
Do you want to learn new things and cool stuff about blender? Visit my channel and you can find a playlist to watch more blender tutorials.
I never got the hang geo nodes, so this was an amazing tutorial to follow.
Also, if you think about it, you just made a infinite map that you can zoom in and out of, move around and make greater resolution. I'm gonna try generating trees and rocks and maybe some other stuff, villages even, but that will be later.
All In All, great tutorial
Amazing good luck! Glad it's helped!
A small world with an infinite landscape if you move the empties, can be somehow implemented in games with small size but an infinite map.
Essentially how most open world games work. The player is the centre and the map loads and unloads as they move through it. That's why in Minecraft, the draw distance has such a big effect on performance.
@@Erindale I thought that they had some predefined map which has its boundaries, and the only part that is loaded is where the pleyer is.
But if it is infinite like the noise texture than thats great.
Thankfully we can use image textures now :D
I was waiting so bad for your tutorial of the new geometry nodes workflow....
Hope it was worth the wait :D
Thanks Erin, this is amazing. But I have a problem with the offset step. in the official version Set position doesn't have a check box. Instead it has a XYZ boxes. And i tried to follow the vidieo but am stuck.
Instead of ticking the box to tell the node that you've plugged in an offset vector, now we just plug the offset vector directly into the offset vector socket.
@@Erindale THANK YOU!
incredible stuff mate.
Thanks so much!!
This is such a neat tutorial! I have a dumb question though. I am pretty new to geometry nodes (and I am not an experienced blender artist but want to learn more). In your geometry node shader graph some of the nodes connections are done with solid lines and some are done with dashed lines, is this just a change you have made to your settings or do the connections mean something different when the lines are dashed versus solid? Sorry if this was explained in a previous video.
Okay admittingly I was still in the middle of watching when I wrote this question, he doesn't know but if someone else knows that would still be cool to be told!
So a dashed line has a field in it like Position or Index or Normal etc. Solid lines are constants like on the bounding box node outputs. A field is just different because it gets specifically computed for every mesh element (normally vertices).
11:49: "So, nice and simple..." 🤣
Coolest thing I've seen using geometry nodes. I really enjoyed the math part. Fantastic job.
Thanks Stelios ✌️
Liked and subscribed! Thank you!
Erin. Thank you very much for the fantastic tutorial. I'm beginner in Blender and love your tutorials. I see you reply to most of the questions. It is fantastic. May I have a question? You mentioned that at the time of making the tutorial the image texture node was not available. Now it is. Could you give me some tip about, If I use image texture, how to color the hexagons according to the color of the underlying texture or even better how to calculate the average color of the area below each hexagon column and then how to apply that color to the material which is assigned to the hexagon, so that way I could make a kind of mozaik from any picture? Thank you very much in advance.
Alright so images are mapped to the 0..1 XY space. You're going to want to create your own vector based on the position that fits your hexagon grid. It doesn't have to be too hard, just position - separateXYZ - map range on X and Y to set -n..n to become 0..1 - combinexyz and plug into your image texture. You could do the same maths in the shaders but using object coordinates instead of position. Or to pass data across you're going to want to use a Transfer Attribute node with the points you're Instancing on as the target and the image as the attribute. Interpolation should be Nearest. You need to use a scale instances node to scale your hexagon tiles down to 0 and then realise them. Plug these into another Transfer Attribute node as the target but this time set it to transfer by index. Plug the first transfer into the attribute of this new transfer. In parallel, take your unmodified hexagon instances and realise them. That final transfer node can be plugged into the Group Output node and be given a name on the modifier. In your shaders you can use the Attribute input node to pull that attribute and use it for your shader.
This process is a bit easier with my toolkit add-on as there's an Attribute to Instances node in there that saves you from having to set that up.
@@Erindale Wow. You are amazing. I don't expected to receive answer so quickly. I watched your GN101 tutorials all day today. I don't say I understand exactly what you are recommending, but I already have a clue about the things you mentioned. I'm definitely considering purchasing your kit. And will try to work out the solution based on your recommendations. A big thank you. Keep up these fantastic tutorials.
@@Erindale what does set -n..n mean? how do I set that up?
Here's a trick that works now:
Create a parallelogram quadrilateral and fill it. Subdivide it as many times as you need. Triangulate it, and dual it with the dual mesh node. This should produce a quick hex grid.
Oooooooh you have RUclips :O :O . Follow you on TW, and i've learned a lot from your tweets!. Greetings, master!
👋 yes! I love twitter but RUclips has a lot more concentrated content
Finally finishe the tutorial and it came out great. I have a few questions since it seems these are explained in other tutorials. When I am working in 3.1 and earlier versions all my geometry is grey. I did not see how you started at green and it automatically assigned new colors as you added new objects. is that a plugin or setting?
You mention the plugin for the water material and node wrangler. are there other plugins that you are using? is there another video that talks about installing them and setting up blender?
Thanks
The coloured viewport is just in the viewport shading options. The little down arrow to the right-hand side of the shading type balls, in there I set it to flat, random, and I set cavity to both.
As for plugins, the material comes from Materialiq which is just a material library but doesn't do anything to the actual functionality of Blender. Node Wrangler is a default add-on and just needs enabling in the add-on preferences (edit> Preferences>Add-ons). Otherwise I just have my own toolkit but that's not something I use in most tutorials as I want people to be able to use the vanilla tools.
@@Erindale Wow thanks. Didn't realize that shading feature was in there at all. Its amazing how many features are hidden in Blender. thanks for the update.
You should try do a penrose tiling with pentagons. I believe that there should be a mine craft style game based on the penrose tiling because it will make the world infinitely explorable even without noise based randomness, and each player could explore this unique mathematical phenomenon together.
Hi, if you're into blender tutorials, you can visit my channel where you can find a playlist of some cool tutorials.
Please don't comment on every comment with this. It's not the way to grow your channel...
Is it possible without a loop? It would be amazing but I think you'd need to grow the world out from the player position 🤔
@@Erindale I was thinking just a premade matrix of finite size for the placement of the blocks, rather than generating it during runtime
@@Erindale Okay, Sorry, I'll not do this again ;)
I'm following along in Blender 3.1 alpha and I notice that the Set Position node has changed slightly. Instead of the checkbox for Offset, there's a vector entry (blue dot) that you need to connect to. (12:49)
Yes indeedy. And in 3.0 add well now
why cant see the replys ?
Please could you expalain what we have to do here to achieve the same results?
@@harrywarriner4973 Instead of connecting the Scale socket to the Position socket and checking Offset, connect the Scale socket directly to the Offset socket to achieve the same result. If you connect to the Position socket, you can then change the Offset in X, Y or Z directions. Just a bit different in 3.1. Hope this helps.
thx you saved me! :)
Uauuuuu. Sou brasileiro e estou evoluindo muito com suas aulas. Obrigado. (Translate this)