我正在编写一个插件来导出3DS Max的数据。3 is的几何流水线是..。有意思的。
作为插件的一部分,我使用内置的函数将转换矩阵分解为平移、(四元数)旋转和缩放。当然,这并不总是有效的,例如当剪切存在的时候。
Max确实有仿射分解函数,但我不想使用它,因为结果组件在目标应用程序中并不都有类似的功能。
我想要做的是,检测分解是有损耗的,这样我就可以在传输之前为使用它的对象烤好几何图形。
发布于 2017-01-08 19:36:44
您可以通过将其3×3左上角子矩阵,将其列解释为向量,并将它们以所有组合(1与2,2与3,1与3)的形式,检测出不能以TRS形式分解的矩阵。对于TRS矩阵,三点乘积均为零,即列向量应该是正交的。如果任何一个点积都是非零的(除了一些epsilon来解释舍入误差),那么矩阵就不能像TRS那样分解。
这是由于旋转矩阵是一个正交矩阵的性质,即它的列向量构成一个正交基。当你把旋转乘以一个缩放矩阵,列向量可能不再是单位向量,但它们仍然是正交的。平移部分不影响旋转缩放部分。
https://computergraphics.stackexchange.com/questions/4491
复制相似问题