问题与解决-------如何将一个已经移动过得物体之后的移动应用到该物体移动之前的状态上

问题:工作中有一个物体在和其它物体一起做过一系列的移动后(包括平移和旋转),得到了该物体的一个新的位置,但是由于该物体相对于其它物体的位置不是很理想,我需要在单独对该物体作精细调整,同时希望这些精细调整能够同步应用的该物体整体移动之前的状态上,最终到达的效果就是,播放时从上一个位置到下一个位置只有整体的移动,精细的移动不会出现(以为在上一位置时已经做完了)。

        其实就是说把精细跳着放到整体移动之前去做,但是没有整体移动我就无法知道怎么精细调整。


解决方法:由于3D方面不了解,特意请教了熟悉的同事。首先记录下整体移动的移动矩阵,然后定义上一个位置的原点为坐标轴origin,让该坐标轴先根据移动矩阵做一次移动,此时该坐标的位置就是下一个位置的世界坐标系的位置 origin'。

    然后,我们把下一个位置的物体最终位置的坐标轴localAxisorigin'为坐标系做一次转换,得到localAxis'localAxis'的坐标是以origin'为基础的。

        之后,origin’退回到之前的位置,也就是原点origin,而localAxis'是相对于Origin'的,所以origin'移动,localAxis'也跟着移动,于是,我们再将localAxis'origin为基础,从局部坐标系转换为原本的世界坐标系,就得到了localAxisFinal,该localAxisFinal表到的就是该物体在除去整体移动后,制作精细调整后的位置。

        最后我们再对下一个位置该物体精细调整前的位置做以上同样的操作,就可以得到localAxisPro,这时求出localAxisProlocalAxisFinal的移动矩阵,就是我想要的矩阵,问题解决。

   

猜你喜欢

转载自blog.csdn.net/cnyygydsk/article/details/80430011