我正在使用Object3D.applyMatrix4用矩阵A
变换对象,但我发现它在某一点上没有保留特征向量的方向。因此,我尝试对Identity Matrix I
和A
之间的插值进行动画处理,发现了这一点:
转换如何不连续?
要对由4x4矩阵表示的旋转进行插值,可以将矩阵的旋转转换为四元数,并在这些四元数之间转换.slerp(球面线性插值),然后转换回矩阵。
然后线性内插object.position。 (尽管再次..这假设关键帧之间是线性运动)。
现在,在旋转较小的情况下,您可以采用线性内插矩阵的方法,但是您需要在每一步对其进行正交化,以将网格重塑为具有相互正交的一致长度向量的网格。这并不难..您可以结合使用点积,乘和加形成矩阵行(或列,我忘了)的向量来对矩阵进行正态化。但是,与仅使用四元数和.slerp相比,这更令人痛苦,而且准确性较低。