THREEJS:从Z-Up坐标系到Y-Up坐标系的矩阵

时间:2014-03-21 23:34:40

标签: javascript three.js

我正在尝试导出一系列转换矩阵来为ThreeJS中的对象设置动画。这些转换是从Z-Up Modeler的Rhino中提取的,需要放入ThreeJS,即Y-Up。我在这个网站上找到了similar question,但答案似乎不正确,因为我的转换不会延续。

任何人都可以将下面的通用4x4矩阵从Z-Up坐标系转换为Y-Up坐标系吗?

{ a, b, c, d }  
{ e, f, g, h }  
{ i, j, k, l }  
{ m, n, o, p }

1 个答案:

答案 0 :(得分:1)

好吧,我想我有一个可行的解决方案:

如果几何体是从Z Up环境导出的(您没有在设置中翻转YZ),可以将其导入THREEjs并使用此矩阵(link)更正YZ差异:< / p>

        objectid.matrixWorldNeedsUpdate=true;                               
        objectid.matrix.set 
        (
            1,  0,  0,  0,
            0,  0,  1,  0,
            0,  -1, 0,  0,
            0,  0,  0,  1
        );
        objectid.updateMatrixWorld();  

在此转换后,wrt this发布,您将转换应用于导入的转换。这会翻转第二行和第三行并翻转第二列和第三列:

{ a, b, c, d }  
{ e, f, g, h }  
{ i, j, k, l }  
{ m, n, o, p }

{ a, c, b, d }  
{ i, k, j, l }  
{ e, g, f, h }  
{ m, o, n, p }

当我从Rhino导出OBJ时,我原本是在翻转YZ,所以转换是在不同的几何上进行的。当jZ翻转应用于javascript端时,它现在正在工作。