Hi I’m trying to make i3dm 3dtiles.
So I read i3dm spec.
But I felt a bit confused about the i3dm instance orientation.
I felt that the direction that the forward vector pointed was ambiguous.
**It is ambiguous whether this means + z direction or -z direction. **
**At first **
I thought that is negative z direction(…as forward at right-handness) because of the term Forward, Up and Right.
from cesium’s source about i3dm reading - it seems to mean positive z direction.
Cartesian3.cross(instanceNormalRight, instanceNormalUp, instanceNormalForward);
Thanks for bringing this up Shyoo!
I think this might be an area that needs to be clarified a bit in the spec. I opened an issue here that summarizes the offline discussion I had with Sean about it today:
Feel free to chime in there. It sounds like the definitive answer is that 3D Tiles expects Y to be up, right to be engine defined, and forward to be the cross product of those.
…sorry for many re posting^^;;;
But I want to add a comment about “Forward” term.
Just in my opinion, I think that cross product Right(x) and Up(y) yields “Forward(z)” is not proper terms in Y-Up Right-Handed CRS(like openGL).
In Y-Up Right-handed CRS(only for i3dm’s orientation and glTf’s default handness, not for 3DTiles spec), It is a little bit confusing terms.
Because the “Forward” is not equal to instance object’s forward direction. Cross product Right(x) and Up(y) yields actually “Backward(+z)” in in Y-Up Right-Handed CRS.