7:40 - Perfect! Reviewing the constructed node tree, explained as you did here is fantastic. Ths way more artist will start picking up the mindset behind nodes in Blender. Thank you, Erindale!
OMG that was so clear AND I learned a useful technique. I will probably add wires to everything. So glad that there was an example of the 2 different subdivides
Yes! I didn't really think before about how important it is that those attributes also follow through the mesh operations and it is going to be even more important when we start doing things like extrusions and bevels.
You can capture the index, then subdive the geo, then capture the index of the new geo again, and then compare both captured indexes. Then use that result as a selection for the set position. This way you can select and move only the "new" vertices. Thanks Erindale for the tutorial!! :)
@@Erindale Always! … and I was really psyched when I saw your artwork featured on the 2.93 splash screen too. You’re a true artist - digital or otherwise.
Useful video. Figured out how it works few days ago and it is really not so obvious. The another thing is not so obvious is attribute statistic. It can produce wrong result with wrong context, when you input complex geometry. For example curves, instanced on points, instanced on curve.
Really looking forward to the next tutorial. I get how to de-contextualize fields, that meant sense to me, but I can't for the life of me find how to re-contextualize fields...
This is really helping me understand Geometry Nodes much better. Thank You!!! I'm still struggling on how to do filtering of XYZ coordinates of points in a field (position field) to make selections dynamically on a simple base mesh run through a remesh modifier (set to block) that creates many more points than the base mesh. For instance, I only want the highest z value for all points that have the same value for x and y (e.g., x =1 and y=2, and there are four points with differing z value and it would select the highest z value, then rinse and repeat for each set where the x and y are evaluated for the highest z value filtering out any points that contain the same x and the same y value below the highest z value for each). If I move my base mesh points it would create new points in the remesh and recalculate the highest z values in the same way. My understanding of how to filter using math nodes or booleans is limited but I'm assuming that is the way to do it - I've just been frustratingly lost in how to do this and think if anyone would know it would be Erindale!
I'd recommend asking this on my Discord and maybe with a screenshot of what you're wanting! If I'm understanding right then it should just be something like position > separate XYZ > z into compare node to get your z mask and then similarly for X and Y as needed
When we have a mesh line node, could it be possible to have Mesh Line node that has as count as field? So that I could Instance a bunch a lines with Instance of point with different counts or / and other propertys? What are best work around.
If you're using it as a line then you could use the curve line instead and resample each line after instancing. Otherwise there's a duplicate elements node in I think 3.1 or definitely 3.2 if you are just using it to make more points in the same spot
Excellent tutorial, I like the way you explain the concepts rather than just a follow along demonstration. I notice that Blender is changing geometry nodes frequently and dramatically - not only adding but depreciating so a lot of other tutorials I have tried don't work. Is your paid course up to date with the latest Blender version and will you update it as and when Blender changes?
Could someone please distinguish between the math node's 'compare' function and the compare floats node? I got the same (set position selection) result when tinkering.
Math node will save a 0.0 or 1.0 float and the Compare Floats node will save an on or off Boolean. Booleans take a quarter the memory and process faster on the CPU 👍
Couple of questions :) 1. The position data is an array of vectors, consisting of three floats, how does Capture Attribute know which float to capture in the vector for each index, or does it just capture all of them? So all 9 floats in this case? 2. Capture Attribute node is before Subdivide Mesh, but it is computed as if the line has already been subdivided. Fields computes backwards, but then why does the node tree not work when Subdivide Mesh is before Capture Attribute? Shouldn't it give the same result?
Vectors won't be broken up into floats unless you choose to manually with a separateXYZ node so they just get written to the mesh as a new attribute. In this case what I'm capturing is the index at the point I capture it it'll just contain 0 and 1. After the subdiv adds a new vertex, it'll interpolate 0.5 for that new one so now it'll be 0, 0.5, 1. If I captured the index after the subdiv instead, it'll just be the indices for all the verts, which, if there are 3, would be 0, 1, 2. To keep the maths simpler, I just captured the index prior to the subdiv.
@@Erindale ok I see now, what you plug into the value of the Attribute Capture node, is what it will try to capture. I incorrectly thought it was using the index, but would return the position if you select float type and point. The fact that subdivision node will interpolate an index from an integer to a float is a surprise to me, I would think that the index values would just remain as integers, so I would expect 0, 0, 1.
So this is actually why we want to capture the index as a float value instead of changing the node to integer. If you store as an integer it'll do as you say there.
Great tutorial! Thanks! I have recently purchased your course on Canopy as well. I devoured it in a day. I highly recommend it to anyone curious about geometry nodes. Great content! I have a question for you about your Capture Attribute setup if you don't mind (I know you're very busy). More specifically why it is Float and not Integer. I have a strong Python background and have worked in Apache Hadoop and Spark (and PySpark) for 8 years so I do understand indices, data types and column attributes/properties (in both an SQL and Python-panda context) and how important it is to keep integers as integers, floats as floats, strings as strings etc... Why is it that from the Index node (with the Index output being an Integer i.e., green socket) and Compare node (set to Integer), we don't get the wanted masking (i.e., pinning down index 0 and 1)? In your setup, you set everything as float and the compare node rightfully limits the selection to Index 0 and 1 (Index, not vector positions as per spreadsheet). Why doesn't it work with Integers, knowing that Indices are integers? When using integers in both the Capture Attribute node and the Compare node (say, plug in A for B equals 0), we don't get the desired result i.e., Index 0 alone should be pinned down. It's very odd to me. Many thanks for you help! It is most appreciated! 🙂
Hey! The reason is in how we can take advantage of how Blender will interpolate captured values. You're right that the index is an integer so when we have a line we have index 0 and 1. And then when we subdivide that line we're adding new vertices. Instead of just marking them with a value of 0 as they weren't in the captured data, Blender will try and approximate what the value should be. So if we go up to 5 verts, we'll just interpolate, 0, 0.25, 0.5, 0.75, and 1. Now if we had captured integers, it would just floor instead so we'd get 0 0 0 0 1 which wouldn't help us make a selection. Because we stored as a float attribute, we get the better interpolation that we can use with the compare. If in doubt, I recommend using the viewer node to inspect the data on the spreadsheet and see how Blender will treat different datatypes!
You mean like making a selection in the viewport? Stuff like that will come. Geometry Nodes is still a totally new system. Got to give it a couple of years to build up a full toolset.
Could you elaborate on the example where you can pick just the normal (in the z direction) to distribute objects on. That's what I'm trying to achieve but can't find a working referral/solution.
If you plug a normal node into a vector math node set to dot product with the second vector as (0,0,1) then you can put that through a compare node set to greater than 0 and you will have a mask for all faces
@@Erindale Wow thx for the quick respons. I assume that the output of the compare node goes into the selection input of the distribute node (for the mesh I want to distribute onbjects on)? Will try your tip and come back to you on your discord if I need more help. Thx again!
Can someone explain why the normal shows up in the spreadsheet editor as an attribute if its supposed to be derived data? or am i misunderstanding something.
Normals in 3D are a pretty arbitrary bit of information. You can easily overwrite and customise them for different effects. In geometry nodes right now, they're read only but everything that can be referenced in an object should be able to be interrogated in the spreadsheet
Is it possible to combine the results of a compare float? For example, instead of using the equal with the epsilon comparison, could I use two nodes for greater than 0, less than 1, and put their results together to feed into a selection input? That vibes better with my brain and I feel like I could remember it better.
It will pick the lowest number from each node and 0 is less that 1 so that checks out! Multiply would work as well. Probably doesnt matter but the boolean math node will be slightly more performant.
Tank u very much for those clear explanations. How do u find all of that? cause the blender doc is very cnfusing, specialy about attribute nodes supression in 3.0
Ohh i completely misunderstood initially, i thought after subdivision the indices are reordered, and then i checked and i understood new indices are given to the newly added points, so i thought instead of using equal, using greater than 1.1 will give the same result but it didn't and now I feel like i don't understand anything please help me erin
The points that were originally 0 and 1 when we captured them will still be 0 and 1 if we use that captured value. If we just use the index directly we have no idea what the indices will be after doing mesh operations like subdivide or more complex things. This is why we can save ourselves a headache by capturing things when they're simple!
You're actually making a selection of the points in between. So it's not just about not selecting 1 and 0, were trying to selec everything between those two points. If you have a sheet of paper and you draw really light on one end and really dark on the other, when we subdivide, that's like adding a smooth gradient in between form dark to light. We just want to pick everything that's on at each end of that gradient so we use equals 0.5 with a bracket out in each direction so were growing our selection from the point which is equidistant from the two points we want to avoid.
Hey there, I'm learning the geo nodes, this is fantastic tutorials so thank you!! 1 question : when using the capture attribute after a join geometry node, it seems it only captures the attribute from the first geometry inserted in the join geometry node, is that to be expected?
It depends what you're joining and capturing. For example, 2 meshes and you're capturing the position should work on both. If one of the things you're joining is an instance instead then you won't be able to capture on the same domain for both. If one of the things you're joining is a curve and one is a mesh and you're capturing something curve-specific like spline parameters then that'll only capture on the curve and read 0s on the mesh. If you're capturing something you think definitely should work, maybe report a bug or join my discord and ask on the help channel!
@@Erindale Thank you for the thorough answer. It was the index value, but after a good night of sleep, I realize thay probably it was because the index is unique for each vertex and doesn't go back to zero for each new geometry. I'll def join your discord!
You can set that up. Those tabs are part of your startup file so you can make them however you want and save a new startup file and it'll open like that every time.
I don't think it is really traversed backward to compile the context. If I would develop this functionality, I would implement this as a kind of symbolic expression, where symbols are referenced attributes. Then just evaluate the expression against the geometry it is plugged in.
You might be right but it was one of the developers who told me it was back tracking to find the expression that needed evaluating. It might have been lost in translation though as I'm not code savvy
It will do something but you'll have to do more to make sure you are selecting the indices at the ends. Like if you subdivide 1 level, the ends will be 0 and 2, and 2 levels would be 0 and 4, 3 levels would be 0 and 8 and so on. Capturing the 0 and 1 before the subdiv means we can use that new captured attribute instead and the ends will always be 0 and 1 regardless of how many times we subdivide.
So complicated. I use houdini ,and good understand concept of attributes, but surprisely very hard to understand whats going on with fields. Looks really inconvinient.
It's just not finished yet! When it's done we'll have all named attributes etc back and be able to get set etc but all of the core stuff can just be handled within the node tree. It's way easier. It's more like building shaders 😁
Your videos are amazing thank you so much ! I'm a beginner at geometric node and my brain is not a math enjoyer :'( I'm so sorry but i don't get the equal part. Like why equal 0,49 and 0,5 excludes 0 and 1 values, i think i'm missing something about epsilon ? 😢
0.5 is the middle and epsilon will be subtracted and added to it to give the range of values. So if you had equal to 5 with epsilon on 1 that's like 5 +/-1 which would give you values between 4 and 6.
You're going to be so powerful by Nodevember.
I'm gonne have to be if I want to make progress :D Thx so much btw! These have been incredibly helpfull!!
Your thumbnails keep getting better. And I can feel my knowledge rising with every upload. Nodevember here I come.
Early days but 'fields' seem to make a lot more sense. Thank you for everything you do. THANK YOU! Dg
Yeah much more human-readable and much faster to put setups together! Really excited to see how the community will use these
7:40 - Perfect! Reviewing the constructed node tree, explained as you did here is fantastic. Ths way more artist will start picking up the mindset behind nodes in Blender. Thank you, Erindale!
Thanks! Yeah one of my biggest learning accelerators is finding something that works and the reviewing it to make sure I understand for next time.
OMG that was so clear AND I learned a useful technique. I will probably add wires to everything. So glad that there was an example of the 2 different subdivides
Oh man thats awesome!!!! Whole new ideas appeared after I have got the logic of the capture attribute node. Pure love.
It's like a "Set Data" node to be used later when you "Get Data" from the node flow. Executing the geometry flow with the green lines.
Yes! I didn't really think before about how important it is that those attributes also follow through the mesh operations and it is going to be even more important when we start doing things like extrusions and bevels.
Do you mean like a Softimage ICE? I agree.
You can capture the index, then subdive the geo, then capture the index of the new geo again, and then compare both captured indexes. Then use that result as a selection for the set position.
This way you can select and move only the "new" vertices.
Thanks Erindale for the tutorial!! :)
Hell yeah! 101
Great vid, great explanations. I learn so much every time I watch one of your vids. Thank you 👍🏽💯
Thanks Noel! Glad they're useful!
@@Erindale Always! … and I was really psyched when I saw your artwork featured on the 2.93 splash screen too. You’re a true artist - digital or otherwise.
Useful video. Figured out how it works few days ago and it is really not so obvious.
The another thing is not so obvious is attribute statistic.
It can produce wrong result with wrong context, when you input complex geometry. For example curves, instanced on points, instanced on curve.
Yeah you need to be careful to pick the correct domain to analyse
You are unstoppable!
Your tutorials with annotation are really helpful for me(non English speaker), thank you
This video was really helpful to me.
Really looking forward to the next tutorial. I get how to de-contextualize fields, that meant sense to me, but I can't for the life of me find how to re-contextualize fields...
Excellent video! Super useful as always
Thank you! Glad they're useful!
Very nice.
This is really helping me understand Geometry Nodes much better. Thank You!!! I'm still struggling on how to do filtering of XYZ coordinates of points in a field (position field) to make selections dynamically on a simple base mesh run through a remesh modifier (set to block) that creates many more points than the base mesh. For instance, I only want the highest z value for all points that have the same value for x and y (e.g., x =1 and y=2, and there are four points with differing z value and it would select the highest z value, then rinse and repeat for each set where the x and y are evaluated for the highest z value filtering out any points that contain the same x and the same y value below the highest z value for each). If I move my base mesh points it would create new points in the remesh and recalculate the highest z values in the same way. My understanding of how to filter using math nodes or booleans is limited but I'm assuming that is the way to do it - I've just been frustratingly lost in how to do this and think if anyone would know it would be Erindale!
I'd recommend asking this on my Discord and maybe with a screenshot of what you're wanting! If I'm understanding right then it should just be something like position > separate XYZ > z into compare node to get your z mask and then similarly for X and Y as needed
@@Erindale Thanks for the quick reply! I will post on discord and try that solution as well.
Wonderful stuff...I am a believer in "Lifelong Learning"...Blender Nodes are going to take the rest of what I have left! 🤣
For you and me both! Endless possibilities!
Very nice! Thanks!
nice video
When we have a mesh line node, could it be possible to have Mesh Line node that has as count as field? So that I could Instance a bunch a lines with Instance of point with different counts or / and other propertys? What are best work around.
If you're using it as a line then you could use the curve line instead and resample each line after instancing. Otherwise there's a duplicate elements node in I think 3.1 or definitely 3.2 if you are just using it to make more points in the same spot
👍
Excellent tutorial, I like the way you explain the concepts rather than just a follow along demonstration.
I notice that Blender is changing geometry nodes frequently and dramatically - not only adding but depreciating so a lot of other tutorials I have tried don't work. Is your paid course up to date with the latest Blender version and will you update it as and when Blender changes?
It isn't up to date with current builds, it's only for 2.93 LTS. I will be making a separate course this summer for the new versions.
@@Erindale Thanks, I will look out for it.
Can I put the capture attributes node after subdividing it, why?
Could someone please distinguish between the math node's 'compare' function and the compare floats node? I got the same (set position selection) result when tinkering.
Math node will save a 0.0 or 1.0 float and the Compare Floats node will save an on or off Boolean. Booleans take a quarter the memory and process faster on the CPU 👍
❤can you do a video on Attribute static, please
Couple of questions :)
1. The position data is an array of vectors, consisting of three floats, how does Capture Attribute know which float to capture in the vector for each index, or does it just capture all of them? So all 9 floats in this case?
2. Capture Attribute node is before Subdivide Mesh, but it is computed as if the line has already been subdivided. Fields computes backwards, but then why does the node tree not work when Subdivide Mesh is before Capture Attribute? Shouldn't it give the same result?
Vectors won't be broken up into floats unless you choose to manually with a separateXYZ node so they just get written to the mesh as a new attribute.
In this case what I'm capturing is the index at the point I capture it it'll just contain 0 and 1. After the subdiv adds a new vertex, it'll interpolate 0.5 for that new one so now it'll be 0, 0.5, 1.
If I captured the index after the subdiv instead, it'll just be the indices for all the verts, which, if there are 3, would be 0, 1, 2. To keep the maths simpler, I just captured the index prior to the subdiv.
@@Erindale ok I see now, what you plug into the value of the Attribute Capture node, is what it will try to capture. I incorrectly thought it was using the index, but would return the position if you select float type and point.
The fact that subdivision node will interpolate an index from an integer to a float is a surprise to me, I would think that the index values would just remain as integers, so I would expect 0, 0, 1.
So this is actually why we want to capture the index as a float value instead of changing the node to integer. If you store as an integer it'll do as you say there.
What order should these geometry nodes 101 videos be watched in?
I would watch them in upload order :) you'll be able to sort by date on my channel page
Great tutorial! Thanks! I have recently purchased your course on Canopy as well. I devoured it in a day. I highly recommend it to anyone curious about geometry nodes. Great content!
I have a question for you about your Capture Attribute setup if you don't mind (I know you're very busy). More specifically why it is Float and not Integer. I have a strong Python background and have worked in Apache Hadoop and Spark (and PySpark) for 8 years so I do understand indices, data types and column attributes/properties (in both an SQL and Python-panda context) and how important it is to keep integers as integers, floats as floats, strings as strings etc...
Why is it that from the Index node (with the Index output being an Integer i.e., green socket) and Compare node (set to Integer), we don't get the wanted masking (i.e., pinning down index 0 and 1)? In your setup, you set everything as float and the compare node rightfully limits the selection to Index 0 and 1 (Index, not vector positions as per spreadsheet). Why doesn't it work with Integers, knowing that Indices are integers? When using integers in both the Capture Attribute node and the Compare node (say, plug in A for B equals 0), we don't get the desired result i.e., Index 0 alone should be pinned down. It's very odd to me.
Many thanks for you help! It is most appreciated! 🙂
Hey! The reason is in how we can take advantage of how Blender will interpolate captured values.
You're right that the index is an integer so when we have a line we have index 0 and 1. And then when we subdivide that line we're adding new vertices. Instead of just marking them with a value of 0 as they weren't in the captured data, Blender will try and approximate what the value should be. So if we go up to 5 verts, we'll just interpolate, 0, 0.25, 0.5, 0.75, and 1. Now if we had captured integers, it would just floor instead so we'd get 0 0 0 0 1 which wouldn't help us make a selection. Because we stored as a float attribute, we get the better interpolation that we can use with the compare.
If in doubt, I recommend using the viewer node to inspect the data on the spreadsheet and see how Blender will treat different datatypes!
Very helpful video! It's a shame it doesn't allow direct selection of vertex indices like in Houdini :(
You mean like making a selection in the viewport? Stuff like that will come. Geometry Nodes is still a totally new system. Got to give it a couple of years to build up a full toolset.
@@Erindale Yes, it will be good to see it develop over time
Thank you for this very clear video. But in Blender 3.1 I don't find Equal node. How can I do it with Greater than and Less than ? Thank you.
It's on the compare node
@@Erindale Thank you for your quick answer. I hadn t understood that it was in Utilities.
The video cover is (captivating)🤣
Hahaha thank you 😁
Could you elaborate on the example where you can pick just the normal (in the z direction) to distribute objects on. That's what I'm trying to achieve but can't find a working referral/solution.
If you plug a normal node into a vector math node set to dot product with the second vector as (0,0,1) then you can put that through a compare node set to greater than 0 and you will have a mask for all faces
@@Erindale Wow thx for the quick respons. I assume that the output of the compare node goes into the selection input of the distribute node (for the mesh I want to distribute onbjects on)? Will try your tip and come back to you on your discord if I need more help. Thx again!
Yessir wherever you need a mask based on normal direction. There is also vector mode in the compare node but old habits die hard 😅
Can someone explain why the normal shows up in the spreadsheet editor as an attribute if its supposed to be derived data? or am i misunderstanding something.
Normals in 3D are a pretty arbitrary bit of information. You can easily overwrite and customise them for different effects. In geometry nodes right now, they're read only but everything that can be referenced in an object should be able to be interrogated in the spreadsheet
Is it possible to combine the results of a compare float? For example, instead of using the equal with the epsilon comparison, could I use two nodes for greater than 0, less than 1, and put their results together to feed into a selection input? That vibes better with my brain and I feel like I could remember it better.
Yeah just use a Boolean math node set to And and it will give you a mask for where one AND the other is true 👍
It works if I plug them both into a math node set to minimum. Not entirely sure what's happening there though.
Also works if you plug them into a comparison node with an epsilon set to any value that's less than 1.0. Also, don't really get why.
It will pick the lowest number from each node and 0 is less that 1 so that checks out! Multiply would work as well.
Probably doesnt matter but the boolean math node will be slightly more performant.
@@Erindale Thank you for this and the other explanation as well.
Tank u very much for those clear explanations. How do u find all of that? cause the blender doc is very cnfusing, specialy about attribute nodes supression in 3.0
Just working it out from using it 🙂
@@Erindale whaoo. so a lot Time liké me, I suppose. Bravo
Ohh i completely misunderstood initially, i thought after subdivision the indices are reordered, and then i checked and i understood new indices are given to the newly added points, so i thought instead of using equal, using greater than 1.1 will give the same result but it didn't and now I feel like i don't understand anything please help me erin
The points that were originally 0 and 1 when we captured them will still be 0 and 1 if we use that captured value. If we just use the index directly we have no idea what the indices will be after doing mesh operations like subdivide or more complex things. This is why we can save ourselves a headache by capturing things when they're simple!
@@Erindale can we use greater than 1.1 instead of equal 0.5 with epsilon 0.499, in both cases 0.000,1.000 are not in the range right
You're actually making a selection of the points in between. So it's not just about not selecting 1 and 0, were trying to selec everything between those two points. If you have a sheet of paper and you draw really light on one end and really dark on the other, when we subdivide, that's like adding a smooth gradient in between form dark to light. We just want to pick everything that's on at each end of that gradient so we use equals 0.5 with a bracket out in each direction so were growing our selection from the point which is equidistant from the two points we want to avoid.
@@Erindale thanks erin now i understood.
Hey there, I'm learning the geo nodes, this is fantastic tutorials so thank you!! 1 question : when using the capture attribute after a join geometry node, it seems it only captures the attribute from the first geometry inserted in the join geometry node, is that to be expected?
It depends what you're joining and capturing. For example, 2 meshes and you're capturing the position should work on both. If one of the things you're joining is an instance instead then you won't be able to capture on the same domain for both. If one of the things you're joining is a curve and one is a mesh and you're capturing something curve-specific like spline parameters then that'll only capture on the curve and read 0s on the mesh.
If you're capturing something you think definitely should work, maybe report a bug or join my discord and ask on the help channel!
@@Erindale Thank you for the thorough answer. It was the index value, but after a good night of sleep, I realize thay probably it was because the index is unique for each vertex and doesn't go back to zero for each new geometry. I'll def join your discord!
How come you have a tab for a "Geo Nodes" workspace and I don't?
You can set that up. Those tabs are part of your startup file so you can make them however you want and save a new startup file and it'll open like that every time.
I don't think it is really traversed backward to compile the context. If I would develop this functionality, I would implement this as a kind of symbolic expression, where symbols are referenced attributes. Then just evaluate the expression against the geometry it is plugged in.
You might be right but it was one of the developers who told me it was back tracking to find the expression that needed evaluating. It might have been lost in translation though as I'm not code savvy
Would it also work if I connect the index directly to the compare node?
It will do something but you'll have to do more to make sure you are selecting the indices at the ends. Like if you subdivide 1 level, the ends will be 0 and 2, and 2 levels would be 0 and 4, 3 levels would be 0 and 8 and so on. Capturing the 0 and 1 before the subdiv means we can use that new captured attribute instead and the ends will always be 0 and 1 regardless of how many times we subdivide.
Thank you, Blender Gordon Freeman
🧔♂️
I wanna use curve index in shader??
Store index through evaluate on domain on your spline before curve to mesh
Hmmmm.... I have trouble understanding what happens when the count is 5 and the subdivision level is 3 or something.
I think I get it. Correct me if I am wrong.
The selection will return 1 for all the new vertices placed between index 0 and index 1.
So complicated. I use houdini ,and good understand concept of attributes, but surprisely very hard to understand whats going on with fields. Looks really inconvinient.
It's just not finished yet! When it's done we'll have all named attributes etc back and be able to get set etc but all of the core stuff can just be handled within the node tree. It's way easier. It's more like building shaders 😁
Hi Erin, is there a way to see the values inside "equal"?
How do you mean? Like to have a min/max input instead of value and epsilon?
@@Erindale I would like to see the values coming out of the component. Something similar to Sverchok's "viewer text" component
Your videos are amazing thank you so much ! I'm a beginner at geometric node and my brain is not a math enjoyer :'( I'm so sorry but i don't get the equal part. Like why equal 0,49 and 0,5 excludes 0 and 1 values, i think i'm missing something about epsilon ? 😢
0.5 is the middle and epsilon will be subtracted and added to it to give the range of values. So if you had equal to 5 with epsilon on 1 that's like 5 +/-1 which would give you values between 4 and 6.
@@Erindale That's so much clearer for me, that you so much for everything, you are amazing ! :D
I want "Anonymous Attribute" on a hoodie
I'm thinking of launching merch at 25k. I want an excuse to have these too
I dont understand anything about what you are talking about. I guess i need to find one of your more basic videos XD😄
There should be a couple others in this 101 series that start you off with more foundations