5
\$\begingroup\$

In both 3ds Max (which uses a right-handed coordinate system) and Unity (which uses a left-handed coordinate system), the cube map faces labelled "left" and "right" show the view facing the opposite direction. This is not the case with the front, back, up, or down directions.

In 3ds Max, this is in the context of rendering cube map images from a Reflect/Refract map. In Unity, both cube map textures and skyboxes exhibit the same left/right "confusion". Oddly, however, the GUI labels for cube maps indicate that left is the -X direction and right is the +X direction - which is correct in Unity - while skyboxes indicate the opposite (all other axial labels are consistent between the two).

The upshot of this is that cube map images rendered by 3ds Max (which each have a suffix indicating their viewing direction) can be assigned to the texture slots in Unity with the same name and everything will work, but only because both programs label the left view as "right" and vice versa.

The only discussion of this I was able to find online was in a blog post on floored.com (search for "Unity Skybox Weirdness" and it should come up; I'd post a link but I lack sufficient reputation to include more than two). Here's an image from the post that illustrates the issue: Image from "Unity Skybox Weirdness" post by floored

Is there a reason why the left/right axes of cube maps are mislabelled in both of these programs? Although it's trivial to ignore once you're aware of it, it seems like there should be a good (or at least historical) explanation for it, unless it's simply a case of a long-overlooked bug in 3ds Max that the Unity developers decided to accommodate.

Any thoughts would be appreciated!

\$\endgroup\$
4
\$\begingroup\$

This could be a confusion over whether one thinks of oneself as being inside or outside the cube for the purposes of labeling things. You're thinking of yourself as inside the cube, and you note that left/right are reversed. However, imagine yourself outside the cube; rotate it 180 degrees so that the "front" side is facing you; now the left/right sides are correctly labeled from your POV.

You might think that for a skybox, you would only ever want to think of yourself as being inside the cube. However, if cubes are used as environment maps for specular reflection, it can make sense to think of yourself as outside. That's probably the origin of the 3DS Max convention, I'd guess.

IMO, instead of using words like "front", "back", "left", "right" it's better to simply refer to cube faces as +X, -X, +Y, -Y, etc. This avoids the left/right ambiguity as well as the ambiguity of which axis is thought of as "front".

\$\endgroup\$
  • \$\begingroup\$ That's a good point, although since the cube map images are rendered from cameras in the middle of the cube looking out it seems an odd choice of convention. I agree with you entirely that using axial labels (rather than relative terms like "left" and "right") is preferable. \$\endgroup\$ – Reign of Error May 7 '14 at 19:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.