3d max 3D坐標轉(zhuǎn)4元數(shù),轉(zhuǎn)換代碼現(xiàn)成,一個3D坐標對應多個4元數(shù),所以就想直接寫回到3d max看下效果??娱_始了
1. 衣服骨骼無法寫入4元數(shù),只能寫入歐拉angle,還好,3d Max有轉(zhuǎn)換的API。
2. 再次用別人寫用bip.rotate.controller來設置轉(zhuǎn)換后的eluerAngle,寫出來是不對的,明顯吧,寫之前bip.rotate.controller讀出來的和quat2eluerAngle轉(zhuǎn)換出來的就是不一樣的
3. 但是應該是要一樣的啊,猜想quat2eluerAngle轉(zhuǎn)換的時候是不是有問題?試了一下,quat2eluerAngle再eluerAngle2quat轉(zhuǎn)回來不對了,quat最開始為負數(shù)的都變成正數(shù)了。聽說正負號不影響,是一樣的,那問題不應該出在這。而且求出來的eluerAngle和在3d Max里面界面顯示的是一樣的,也證明quat2eluerAngle是OK的
4. 然后就開始懷疑是不是set錯地方了,畢竟求出來的eluerAngle和沒set前取出來的value(直接讀GT,肯定是OK的)都是正確的。然后發(fā)現(xiàn)bip.rotate.controller是eluerXYZ的class類型,而quat2eluerAngle是eluerAngle類型,直接這樣set必然會有問題(猜想)……
5. Google搜索了一下3d Max seteluerAngle的函數(shù),在一本book上是說用bip.rotation=quat2eluerAngle的輸出,試了一下,set進去bip.rotation還是顯示quat,值沒怎么變,只有最后一個分類變了個負號?然后畫面完全崩了?3d Max展示的也不是我想set進去的,還是再debug看下有沒有真正地set進去吧,set進去讀出來的eluerAngle是不是對的?不然肯定可以正確的顯示在界面吧
正好明天一邊問別人,一邊看有沒有set進去