我正在尝试导出一系列转换矩阵来为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 }
答案 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端时,它现在正在工作。