That trick with compiling the scale normal on multiple set positions would be great for animating a balloon blowing up or a muffin being baked.
Yevtushenko Oleksandr
7th June 2022 - 23:51
I still can find some intersections between medium and large rocks after playing with the seed value in the attached blend file.
Rarely, but there are. (In my own blend file this happens a bit more often)
And if instances are realized through Relize instances node, and geometry node applied, the distances can be measured between large
rock's questionable vertices and nearest faces of medium rock and they are smaller then 0.2 meters.
Does anybody have any idea why this might be happening ? The minimal distance can be increased, and the intersections disappear, but that's not the point.
Simon Thommes
8th June 2022 - 11:37
@Yevtushenko Oleksandr The reason is most likely the randomization of the scale of the rocks. Because this system is not actually detecting mesh intersections, but only removing points in a certain radius, as soon as a rock has a higher radius that will lead to an intersection. The randomization of the rocks, as I have it in the file means, that some rocks will be slightly scaled up and thus still intersect in some cases. When you change the randomization maximum to 1, that should disappear.
Yevtushenko Oleksandr
8th June 2022 - 13:21
@Simon Thommes Aha ! Sounds perfectly reasonable.
So, the scaling is done AFTER the distances are measured and instances removed, and this might
create new small intersections after scaling (In my blend file I have a bigger scale range, that's why it happens more often).
The rotation node can also interfere with proximity calculations if rocks aren't perfectly round.
And of course, if vertices on a large rock are not close enough to the closest faces on medium/small rock, then they still can intersect.
Thank you for the answer ! That clarifies things to me.
Ingmar Franz
3rd January 2023 - 19:02
@Simon Thommes Maybe, the instances of the small and medium size rocks should be realized ("Realize Instances" node) so that we can use the vertices of these rocks for measuring the distances. This could perhaps further reduce the probability of intersections.
Simon Thommes
4th January 2023 - 13:35
@Ingmar Franz That does work, but it is also a lot more expensive to calculate. Especially because it depends on the complexity of the rock mesh.
Ingmar Franz
2nd January 2023 - 19:54
The "Geometry Proximity" node in this lesson's node setup has an unconnected "Source Position" input socket. So, if it's not connected to anything, it evaluates the points of the geometry which is put into same node as the "Geometry Proximity" node (after some optional math nodes in between)? Do I understand it correctly that this evaluation looks (in the final node setup) for the closest distance that a face of one of the large rocks has to the instance points for the small and medium size rocks? Furthermore, wouldn't it make sense to also realize the instances of the small and medium size rocks before calculating the proximity? Finally, I'm wondering what could be connected to the "Source Position" input socket of the "Geometry Proximity" node?
Simon Thommes
3rd January 2023 - 14:32
@Ingmar Franz Field inputs that don't have a slider exposed usually fall back to a default field input, just the same way that texture nodes don't need to have the vector input connected. When you hover over the field socket you can see what field is used. Here it's the position attribute.
This position relates to the geometry you want to evaluate the proximity on, not the target geometry. So usually you don't need to connect anything to get the proximity of points to a target geometry. But you can essentially override the position that is used to sample the proximity without actually moving the points. And if, for example, you plug in just a single vector, you get the proximity of that virtual point at the position that vector represents to the target geometry, for all points.
Ingmar Franz
3rd January 2023 - 17:41
@Simon Thommes Thanks a lot! Now, it's clear what this "Source Position" input socket does with a single vector connected to it. Is there an important use case where you need for every point of the source geometry the same distance value derived from a single point's position relative to the target geometry?
Simon Thommes
4th January 2023 - 13:51
@Ingmar Franz I don't have an exact use-case, but that single point could for example be an empty that you can move in 3D space. Sou you could use the proximity of that empty to a target geometry on all points.
Ingmar Franz
3rd January 2023 - 11:35
Yeah, just a short message from the future (January 2023) concerning the field-on-geometry-preview-feature mentioned at 6:40: It's now there and it's a node called "Viewer". Left click on a node while pressing CTRL + SHIFT and you'll see the evaluated values displayed on the geometry which got put into the node you've just left clicked. The preview already works in "Solid" preview shading.
Ingmar Franz
5th January 2023 - 11:34
At 17:50 a "Map Range" node is used with "Linear" interpolation and "Clamp" turned on. As far as I understand it, clamping means that input values below "From Min" are mapped to "To MIn" and values above "From Max" are mapped to "To Max". Without clamping this would simply extend the straight line between the points (From Min, To Min) and (From Max, To Max) to infinity (see my illustration here: https://www.dropbox.com/s/l03nq35rekdzusd/Blender%20Map%20Range%20Node%20Clamped%20and%20Not%20Clamped.png?dl=0). If "To Max" is set to 90 percent with active clamping, wouldn't this mean that distances beyond 1 still have a 10 percent probability to spawn small and medium size rocks? Another question: How can "Smooth Step" and "Smoother Step" as map range interpolations be visualized?
12 Comments
Join to comment publicly.
Benjamin Bass
13th June 2022 - 13:14
That trick with compiling the scale normal on multiple set positions would be great for animating a balloon blowing up or a muffin being baked.
Yevtushenko Oleksandr
7th June 2022 - 23:51
I still can find some intersections between medium and large rocks after playing with the seed value in the attached blend file. Rarely, but there are. (In my own blend file this happens a bit more often) And if instances are realized through Relize instances node, and geometry node applied, the distances can be measured between large rock's questionable vertices and nearest faces of medium rock and they are smaller then 0.2 meters. Does anybody have any idea why this might be happening ? The minimal distance can be increased, and the intersections disappear, but that's not the point.
Simon Thommes
8th June 2022 - 11:37
@Yevtushenko Oleksandr The reason is most likely the randomization of the scale of the rocks. Because this system is not actually detecting mesh intersections, but only removing points in a certain radius, as soon as a rock has a higher radius that will lead to an intersection. The randomization of the rocks, as I have it in the file means, that some rocks will be slightly scaled up and thus still intersect in some cases. When you change the randomization maximum to 1, that should disappear.
Yevtushenko Oleksandr
8th June 2022 - 13:21
@Simon Thommes Aha ! Sounds perfectly reasonable.
So, the scaling is done AFTER the distances are measured and instances removed, and this might create new small intersections after scaling (In my blend file I have a bigger scale range, that's why it happens more often). The rotation node can also interfere with proximity calculations if rocks aren't perfectly round. And of course, if vertices on a large rock are not close enough to the closest faces on medium/small rock, then they still can intersect.
Thank you for the answer ! That clarifies things to me.
Ingmar Franz
3rd January 2023 - 19:02
@Simon Thommes Maybe, the instances of the small and medium size rocks should be realized ("Realize Instances" node) so that we can use the vertices of these rocks for measuring the distances. This could perhaps further reduce the probability of intersections.
Simon Thommes
4th January 2023 - 13:35
@Ingmar Franz That does work, but it is also a lot more expensive to calculate. Especially because it depends on the complexity of the rock mesh.
Ingmar Franz
2nd January 2023 - 19:54
The "Geometry Proximity" node in this lesson's node setup has an unconnected "Source Position" input socket. So, if it's not connected to anything, it evaluates the points of the geometry which is put into same node as the "Geometry Proximity" node (after some optional math nodes in between)? Do I understand it correctly that this evaluation looks (in the final node setup) for the closest distance that a face of one of the large rocks has to the instance points for the small and medium size rocks? Furthermore, wouldn't it make sense to also realize the instances of the small and medium size rocks before calculating the proximity? Finally, I'm wondering what could be connected to the "Source Position" input socket of the "Geometry Proximity" node?
Simon Thommes
3rd January 2023 - 14:32
@Ingmar Franz Field inputs that don't have a slider exposed usually fall back to a default field input, just the same way that texture nodes don't need to have the vector input connected. When you hover over the field socket you can see what field is used. Here it's the position attribute.
This position relates to the geometry you want to evaluate the proximity on, not the target geometry. So usually you don't need to connect anything to get the proximity of points to a target geometry. But you can essentially override the position that is used to sample the proximity without actually moving the points. And if, for example, you plug in just a single vector, you get the proximity of that virtual point at the position that vector represents to the target geometry, for all points.
Ingmar Franz
3rd January 2023 - 17:41
@Simon Thommes Thanks a lot! Now, it's clear what this "Source Position" input socket does with a single vector connected to it. Is there an important use case where you need for every point of the source geometry the same distance value derived from a single point's position relative to the target geometry?
Simon Thommes
4th January 2023 - 13:51
@Ingmar Franz I don't have an exact use-case, but that single point could for example be an empty that you can move in 3D space. Sou you could use the proximity of that empty to a target geometry on all points.
Ingmar Franz
3rd January 2023 - 11:35
Yeah, just a short message from the future (January 2023) concerning the field-on-geometry-preview-feature mentioned at 6:40: It's now there and it's a node called "Viewer". Left click on a node while pressing CTRL + SHIFT and you'll see the evaluated values displayed on the geometry which got put into the node you've just left clicked. The preview already works in "Solid" preview shading.
Ingmar Franz
5th January 2023 - 11:34
At 17:50 a "Map Range" node is used with "Linear" interpolation and "Clamp" turned on. As far as I understand it, clamping means that input values below "From Min" are mapped to "To MIn" and values above "From Max" are mapped to "To Max". Without clamping this would simply extend the straight line between the points (From Min, To Min) and (From Max, To Max) to infinity (see my illustration here: https://www.dropbox.com/s/l03nq35rekdzusd/Blender%20Map%20Range%20Node%20Clamped%20and%20Not%20Clamped.png?dl=0). If "To Max" is set to 90 percent with active clamping, wouldn't this mean that distances beyond 1 still have a 10 percent probability to spawn small and medium size rocks? Another question: How can "Smooth Step" and "Smoother Step" as map range interpolations be visualized?