This tutorial is the continuation of the previous tutorial, in the previous tutorial, we were able to make the half of the objects face the center while the other half were off by 180 degree angle. We are going to fix this issue by adding some 180 degrees to half of the instance objects that are not facing the center. Blender version 2.93 is used.
In the previous tutorial, we added a Frame node in Geometry Nodes. And before that made the circular array face the center using Geometry Nodes. This is the continuation of the tutorial series.
We are going to add 180 degrees to the instance objects that are not facing the center.
First of all, we need to determine which of these is not facing the center. Those are the instance objects that have the X value less than 0. We need to compare the values.
Add Attribute Compare node for x positional value less than 0.
Add an Attribute Compare node by clicking
Add > Attribute > Attribute Compare before the Point Rotate node. Choose the condition to be
A is an
B is a
float. We need to see if the x value is less than 0. So, in
A attribute type
x ( this will contain the x positional values of all the instance objects) and the value
B will be
The Result will stored in a new Custom Attribute called “x_less”.
x_less attribute will now have the true or false information on the instance objects. If the instance object has the x positional value less than 0, it will have the value “true” otherwise it is “false”.
But, we need it to be a number. We need to convert it.
Add Attribute Convert node to convert condition to a float number
To convert it, we add Attribute Convert by clicking
Add > Attribute > Attribute Convert after the Compare node.
We want the values to convert to numbers, so we select
Float. The value is stored in
x_less, so, we enter the Attribute
x_less and we get the new values in the same attribute.
The values are now converted to 0 and 1, such that, the true value is 1 and false is 0. Which means the instance object which has negative x positional value (less than 0) will have the value ‘1’.
Explaining x_less attribute
We will multiply this
x_less attribute with 180 degrees and then we will add this value to rotational angle attribute. Remember that,
x_less attribute has both 0 and 1 values depending on the instance objects.
|If “x_less” has value 0||If “x_less” has value 1|
|When it will be multiplied with 180 degrees, the result will be 0.|
So, 0 degrees will be added to the instance objects that are already facing the center.
|When it will be multiplied with 180 degrees, the result will be 180.|
So, 180 degrees will be added to the instance objects that are off by a 180 degree angle.
That should resolve the issue.
Multiplying half of the instance objects with 180 degrees.
Attribute Math node after Attribute Convert node. Change the operation to
A should be
x_less attribute while
B should be a float that is
3.142 radians that is equivalent of 180 degrees. The
Result should be stored in the
We need to add this value to the original angle attribute.
Adding 180 degrees to the angle for half of the instance objects
Attribute Math node, choose the Math operation to
B should be
B will be
angle attribute. The Result should be angle because we are using angle attribute to rotate the instance objects.
All the instance objects should now be facing the center.
Note that, if all the instances objects are facing away from the center, you may adjust their rotation manually. Make sure the models are facing positive Y axis.
Adding Frame Node
You can combine them in a Frame node by selecting them and pressing
CTRL + J.
Final Geometry Node Setup
The Final Geometry Nodes setup.
The final render image:
Here are more parts of the tutorial series: