1
$\begingroup$

I have a question about the instance in geometry nodes. I built a rig for a popping up book as I showed in the screengrab. I made the group input so I can choose the objects in the scene as my page. However when I check the rotation value in the geometry nodes it shows negative compared to the object transform in the scene. I can use an absolute node to fix it but why it happens? Any idea?

instance rotation value in geometry nodes

object rotation value in the scene

$\endgroup$
2
  • 1
    $\begingroup$ If you share your file with blend-exchange.com it will be easier to help you $\endgroup$ Jun 7, 2023 at 10:06
  • $\begingroup$ I would say it is because the internally used rotation of quaternions is converted to Euler angles in radians, displayed as $-0$ because of a rounding error, and finally produces a human readable format in degrees where the rounding error is corrected. $\endgroup$
    – quellenform
    Jun 8, 2023 at 7:50

1 Answer 1

1
$\begingroup$

I checked the value after applying the modifier:

>>> [v.co for v in C.object.data.vertices]
[Vector((-0.0, 3.122617483139038, -0.0))]

In fact, it doesn't seem like the socket preview has any display precision issues like the input fields do:

And to prove saving as position and reading it after applying the modifier is reliable:

>>> [v.co for v in C.object.data.vertices]
[Vector((3.4028234663852886e+38, 3.4028234663852886e+38, 3.4028234663852886e+38))]

So it indeed is exactly $-0$, not some small number that is rounded for display. I don't think it's fair to the algorithm to call it a rounding error, because $-0 = +0$ and so there's no error here, in your case; according to IEEE 754, negative zero is perfectly normal (and equal positive zero), so as long as you don't divide by zero, they both will act the same and there's no reason to worry about it.

It's actually hard (impossible?) to bifurcate based on the sign of zero in Blender, because dividing by either 0 yields positive zero, and the Math: Sign gives 0 output for both zeroes:

Sign:

Extracts the sign of the input value. All positive numbers will output 1.0. All negative numbers will output -1.0. And 0.0 will output 0.0.

8 Why is negative zero important?

4 Does float have a negative zero? (-0f)

6 Signed zero

$\endgroup$
1
  • $\begingroup$ Hi Markus, really appreciate your answer, However I might be supposed to upload another project file for the issue I'm facing. Please download the file here.<img src="https://blend-exchange.com/embedImage.png?bid=B8GSK8Lw" />. in this file you can see I used abs node because if I don't use it the function won't work due to the negative rotation for the page. you can disable my abs node and try to rotate one of the page and you will see what I mean. Thanks $\endgroup$
    – Tao Mao
    Jun 9, 2023 at 8:41

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .