Question about i3dm instance orientation.

Hi I’m trying to make i3dm 3dtiles.

So I read i3dm spec.

But I felt a bit confused about the i3dm instance orientation.

More specifically,

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.