問題與解決-------如何將一個已經移動過得物體之後的移動應用到該物體移動之前的狀態上

問題:工作中有一個物體在和其它物體一起做過一系列的移動後(包括平移和旋轉),得到了該物體的一個新的位置,但是由於該物體相對於其它物體的位置不是很理想,我需要在單獨對該物體作精細調整,同時希望這些精細調整能夠同步應用的該物體整體移動之前的狀態上,最終到達的效果就是,播放時從上一個位置到下一個位置只有整體的移動,精細的移動不會出現(以爲在上一位置時已經做完了)。

        其實就是說把精細跳着放到整體移動之前去做,但是沒有整體移動我就無法知道怎麼精細調整。


解決方法:由於3D方面不瞭解,特意請教了熟悉的同事。首先記錄下整體移動的移動矩陣,然後定義上一個位置的原點爲座標軸origin,讓該座標軸先根據移動矩陣做一次移動,此時該座標的位置就是下一個位置的世界座標系的位置 origin'。

    然後,我們把下一個位置的物體最終位置的座標軸localAxisorigin'爲座標系做一次轉換,得到localAxis'localAxis'的座標是以origin'爲基礎的。

        之後,origin’退回到之前的位置,也就是原點origin,而localAxis'是相對於Origin'的,所以origin'移動,localAxis'也跟着移動,於是,我們再將localAxis'origin爲基礎,從局部座標系轉換爲原本的世界座標系,就得到了localAxisFinal,該localAxisFinal表到的就是該物體在除去整體移動後,製作精細調整後的位置。

        最後我們再對下一個位置該物體精細調整前的位置做以上同樣的操作,就可以得到localAxisPro,這時求出localAxisProlocalAxisFinal的移動矩陣,就是我想要的矩陣,問題解決。

   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章