我认为你需要乘以两个矩阵来改变你的旋转矩阵的基础。
事实上, ColladaMatrix 是一个([col] 表示在 collada 坐标中,[gl] 在 GL 坐标中)
y[col] = R[col,col] x[col]
但是如果你想使用GL矩阵,你需要将x[col]转换成GL坐标,然后在GL基础上应用旋转,最后回到Collada坐标。所以
y[col] = B[gl->col] R[gl,gl] B[col->gl] x[col]
所以,
R[col,col] = B[gl->col] R[gl,gl] B[col->gl]
这里 B[gl->col] 和 B[col->gl] 是一样的,所以
[1 0 0 [1 0 0
MatrixCollada = 0 0 1 * MatrixGL * 0 0 1
0 1 0] 0 1 0]
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!
备注:对角化矩阵时也会发生同样的情况(实际上是基的变化),您需要对要对角化的矩阵进行前乘和后乘。
编辑:我为矩阵编写了两个坐标系,因为一般来说,矩阵可以将向量从一个坐标系发送到另一个坐标系。这样就更清楚了。
| 归档时间: |
|
| 查看次数: |
2788 次 |
| 最近记录: |