在搅拌机中,每根骨头都有头尾和滚动。 我需要从骨骼表示中获得一个变换矩阵。 我发现了反向操作,如果我们有矩阵T那么: head = T *(0,0,0) tail = T *(0,1,0)
如何建立这个矩阵?
答案 0 :(得分:1)
我们正在寻找一个不包含透视变换的4x4矩阵。所以最后一行是(0, 0, 0, 1)
。给出了两个主矢量的映射,得到了这个部分矩阵:
/ tail.x head.x \
| tail.y head.y |
| tail.z head.z |
\ 0 0 0 1 /
还剩下两个向量。这就是滚动发挥作用的地方。两个向量应垂直于tail
并且彼此垂直。为了解决这个问题,我们需要一个参考方向(基本上说明其中一个向量 - 在这种情况下x向量 - 指向0角)。然后我们可以做到:
r = rotate reference about tail by roll
z = cross(r, tail)
x = cross(tail, z)
产生这个完整的矩阵:
/ x.x tail.x z.x head.x \
| x.y tail.y z.y head.y |
| x.z tail.z z.z head.z |
\ 0 0 0 1 /
您需要找到的一件事是参考矢量。应该有两个(如果tail
与第一个平行)。或者,如果您可以找到关于roll
含义的任何参考,您应该相应地调整计算。