在ogre中,動畫主要有骨骼動畫,變形動畫,姿態動畫。在我們使用骨骼動畫的時候,通常是在maya、3dmax等動畫軟體中做的動畫,讓其存入.skeleton檔案中,然後在程式中匯入這段動畫。我們還可以手動控制每段骨骼的動作:
範例:用ogre的嚮導程式生成乙個sample:
(1)首先,新增全域性變數:bone *manuallycontrolledbone = null;
(2)在createscene中,找到
entity* ogrehead = mscenemgr->createentity("head", "ogrehead.mesh");
將ogrehead改為自己的模型名稱,這裡作為示例,用的ninja.mesh
在其後新增:
skeletoninstance *skel = ogrehead->getskeleton();
//獲得指定骨骼的控制權
manuallycontrolledbone = skel->getbone("joint24");
manuallycontrolledbone->setmanuallycontrolled(true);
(3)在每幀迴圈(如framestarted())時加上控制骨骼的函式:
manuallycontrolledbone->yaw(degree(evt.timesincelastframe*100));
就這樣,我們就已經控制了骨骼joint24的動畫,現在編譯、執行我們的程式,可以看到,忍者的腳已經在轉動:
骨骼動畫公式
本節你將回顧一些骨骼動畫用到的概念和數學公式。乙個骨骼動畫是由許多關鍵幀組成的,每個關鍵幀儲存了乙個bone的配置 朝向和位置 和bone對應的時間。在每個時間間隔,你使用乙個或多個關鍵幀改變bone的配置。圖11 7展示了一張如圖11 3中的骨骼的動畫,當left shoulder bone的朝向...
骨骼動畫換裝
之前看過好多有關骨骼動畫換裝的文章,雖然給予很大幫助,然而自己也是費了很大勁,最終也是自己解決了問題,我把自己的解決方式分享出來,希望對你有所幫助 void changearmaturebone cocostudio armature armature const char bonename coc...
LAYA 骨骼動畫
建立骨骼動畫 private var sk skeleton private function showski void private function onloaded t templet void if sk null sk.url t.url sk t.buildarmature 0 sk....