OGRE手動控制骨骼動畫

2021-05-22 07:51:51 字數 743 閱讀 1389

在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....