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

标签 3d three.js webgl

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

经过一些尝试和错误,我相应地制定了我同事的 Assets 图:

  • px = 左
  • nx = 右
  • py = 顶部
  • ny = 底部
  • pz = 返回
  • nz = 前面

所以看一下,很明显 x、y 和 z 指的是轴,但 p 和 n 就不那么明显了。我当时的想法是,但是当你观察传统上显示为从左到右递增的x轴时,这个理论就站不住脚了。 z 轴让我头疼,因为我不知道随着 z 值的增加,我是否会期望物体靠近我还是远离我。本能说更接近。

我的逻辑思维认为这是对“日常”语言更合适的翻译:

  • px = 右
  • nx = 左
  • py = 顶部
  • ny = 底部
  • pz = 前面
  • nz = 返回

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

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

最佳答案

按照惯例——可能基于 1990 年代的 RenderMan 规范——立方体贴图由 WebGL(和 Three.js)在坐标系中指定,在该坐标系中,当查找正 z 时,正 x 位于右侧axis——换句话说,在左手坐标系中。通过继续此约定,预先存在的立方体贴图将继续正确渲染。

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

三.js r.87

关于3d - 为什么立方体贴图的面标记为 px、nx、py、ny、pz、nz?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45998274/

相关文章:

3d - 使用单应矩阵在后处理中进行平面重投影

matlab - 如何创建文章质量的 3-D 图?

javascript - 如何在加载 collada 纹理时调用函数? (三.js)

javascript - 当我更改 Three.js 网格的比例时,为什么我的旋转会出错?

opengl - OpenGL内部如何存储命令?

将最少的矩形拟合为不规则形状的算法

javascript - Three-JS - 全屏更改渲染器的大小

javascript - THREE.js OrbitControls 不工作

javascript - ThreeJS 中的 RGB 颜色

javascript - 用于多个光源的 WebGL 片段着色器?