为什么立方体贴图的面标记为 px、nx、py、ny、pz、nz?

Why are the faces of a cubemap labelled px, nx, py, ny, pz, nz?

我在 WebGL 项目中使用立方体贴图,我的同事为我提供了标记为 前、后、左、右、上和下 的面部图像资源。但是 Three.js's example code 使用标有 2 个字母的图像。 pn 后跟 x, yz .

经过反复试验,我相应地制定了我同事的资产图:

所以看一下,很明显 x、y 和 z 指的是轴,但 p 和 n 不是那么明显。我在想 positivenegative 但是当你看 x 轴时,这个理论就被推翻了,x 轴通常显示为从左到右增加。 z 轴让我头疼,因为我不知道随着 z 值的增加,我是否希望一个物体靠近我或远离我。本能说更近了。

我偏向于逻辑的一面认为这是对 "everyday" 语言的更合适的翻译:

我的同事是否提供了一组非标准资产?这就是我们在 3D 建模中不使用日常语言(左、右、上等)的确切原因吗?我应该要求他们提供标有 px、nx、py 等的标签吗?

经验丰富的专家提供一些指导将不胜感激。

按照惯例——可能基于 1990 年代的 RenderMan 规范——立方体贴图由 WebGL(和 three.js)在坐标系中指定,在该坐标系中,向上看时正 x 位于右侧正 z 轴——换句话说,在左手坐标系中。通过继续这个约定,先前存在的立方体贴图继续正确呈现。

three.js 使用右手坐标系。因此 three.js 中使用的环境贴图似乎交换了 pxnx。 (每个 three.js 立方体贴图示例都是这种情况。)

three.js r.87