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

时间:2017-09-01 10:30:09

标签: 3d three.js webgl

我在WebGL项目中使用立方体贴图,我的同事为我提供了标记为正面,背面,左面,右面,顶部和底部的面部的图像资源。但是Three.js's example code使用标有2个字母的图片。 p n 后跟 x,y z

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

  • px = left
  • nx = right
  • py = top
  • ny = bottom
  • pz = back
  • nz = front

所以看一下,很明显x,y和z指的是轴,但p和n并不那么明显。我在考虑正面否定,但是当你看到传统上显示为从左到右增加的x轴时,这个理论就会失败。 z轴让我的头部受伤,因为我不知道当z的值增加时,我是否希望物体靠近我或更远。本能说得更近了。

我的痴迷逻辑方面认为这是对“日常”语言的更恰当的翻译:

  • px = right
  • nx = left
  • py = top
  • ny = bottom
  • pz = front
  • nz = back

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

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

1 个答案:

答案 0 :(得分:5)

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

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

three.js r.87