【发布时间】:2017-03-20 00:26:07
【问题描述】:
我正在努力将转换从左坐标系 (unity/maya) 导入到 3ds max,它是一个文件的右手坐标。
3ds Max 使用 3x4 矩阵,但它与 4x4 矩阵相同,但删除了最后一列(实际上并没有做任何事情,因此不会丢失任何数据)
矩阵中的转换很容易,因为我只需在获取原始矩阵时将最后一行从 [xyz] 交换到 [-xzy],将 y 值交换为 z 值并将 x 设置为否定的。
虽然轮换不是那么容易。
我尝试了一种解决方法,通过获取矩阵的四元数,将其更改为欧拉,进行与前面所述相同的交换并将其再次作为四元数,然后旋转有点偏离。
我想知道是否可以对原始矩阵执行一系列矩阵运算,以使其准备好设置右手 3ds max 坐标,因为初始矩阵是左手。
我在一些文档中看到将 z 值设置为负数,但这并没有真正起作用。
有没有关于这方面的好文档或我可以关注的任何地方?我查看的每个文档都有不同的解决方案,这开始令人困惑。
【问题讨论】:
-
将旋转矩阵乘以
[1 0 0; 0 1 0; -1 0 0],然后将平移向量更改为column([x y -z])是否可行? -
位置、旋转和缩放都在同一个矩阵中,只是恰好矩阵的最后一行就是位置。也许它有效,但单位矩阵是 (Point3(1, 0, 0),Point3(0, 1, 0),Point3(0, 0, 1),Point3(0, 0, 0) 对于 3ds,即,3列和4行(你可以看到最后一个是0,0,0,所以它在零位置。也许我可以通过对前3行进行乘法然后将最后一行更改为你说。我会试一试
-
糟糕,搞错了:最后一行应该是
; 0 0 -1]。无论如何,我以为你使用的是en.wikipedia.org/wiki/Denavit%E2%80%93Hartenberg_parameters,这就是为什么我认为它是一个 3x3 矩阵,然后是一个 1x3 向量。 -
很遗憾它不起作用...