1.问题
图形学中y up和z up的概念也会让人困惑,这是什么?为什么要这样?
2.概念
所有的3D工具都包含一个具有X、Y和Z轴的三维环境。在这些工具中,X轴方向是相同的,即在前视图时从左到右的水平线。
然而, 不同的 3D 工具可能对Y轴和Z轴的朝向有不同的解释。一些3D 工具是 Y-Up的, 即 Y 轴时竖直方向的;而 其他的3D工具是 Z-Up的, 即 Z 轴时竖直方向的。
不同的3D工具关于竖直方向(up方向)是Y轴还是Z轴有不同的定义 ,而处理的比较好的3D工具是可以自动的进行y-up/z-up间的转换的,即支持y-up、z-up的模型导入,自动的针对性做不同的处理,让模型能够正常显示和使用。
由上图可知,如果是Z-UP的模型,导入到Y-UP的3D工具中,或者将Y-UP的模型导入到Z-UP的3D工具中,如果不作处理的话,那么模型显示将是错误的,
那么该怎么处理呢?大家仔细看看图,想一想~
由 y-up 转换为 z-up,可以对模型绕着X轴旋转π/2(弧度)来达到此操作,相当于应用如下的转换矩阵 (这里是行优先展示的):
[ 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0 ]
同理,由z-up转换为y-up,可以对模型绕着X轴旋转-π/2(弧度)来达到此操作;
3.总结
gltf格式标准是y up,存储还是按照x y z,只不过y的数据是模型的up方向的,解析gltf的业务方都是按照这个标准来解析,如果显示的平台是z up的,就需要对模型做转换,转换过程见上文。
4.参考