1. 程式人生 > >從3DS MAX中匯出骨骼動畫注意的幾件事

從3DS MAX中匯出骨骼動畫注意的幾件事

編寫外掛從MAX中匯出骨骼動畫的幾點注意事項.
1.首先要遍歷所有的MESH,和BONE,並匯出0時刻的MESH所有頂點位置及索引,和BONE的世界變換矩陣的逆矩陣.這些資訊可以單獨放到一個檔案中,以後加入動作時,每個動作可以做為一個檔案.
2.如果使用Physique做為蒙皮外掛以下是尋找該修改器的程式碼:
Modifier* FindPhysiqueModifier (INode* nodePtr)
{
 // Get object from node. Abort if no object.
 Object* ObjectPtr = nodePtr->GetObjectRef();


 if (!ObjectPtr) return NULL;

 // Is derived object ?
 while (ObjectPtr->SuperClassID() == GEN_DERIVOB_CLASS_ID && ObjectPtr)
 {
  // Yes -> Cast.
  IDerivedObject *DerivedObjectPtr = (IDerivedObject *)(ObjectPtr);

  // Iterate over all entries of the modifier stack.
  int ModStackIndex = 0;
  while (ModStackIndex < DerivedObjectPtr->NumModifiers())
  {
   // Get current modifier.
   Modifier* ModifierPtr = DerivedObjectPtr->GetModifier(ModStackIndex);

   // Is this Physique ?
   if (ModifierPtr->ClassID() == Class_ID(PHYSIQUE_CLASS_ID_A, PHYSIQUE_CLASS_ID_B))
   {
    // Yes -> Exit.
    return ModifierPtr;
   }

   // Next modifier stack entry.
   ModStackIndex++;
  }
  ObjectPtr = DerivedObjectPtr->GetObjRef();
 }

 // Not found.
 return NULL;
}

3.在匯出動畫時,MAX中的四元數是反向的.比如我們對骨骼以軸(0,0,1)旋轉(90)度.通過Control * rotCont = iBone->GetTMController()->GetRotationController();
iNumKeys = ctlRot->NumKeys();
for( i=0; i < iNumKeys; i++ ) {
TimeValue t = ctlRot->GetKeyTime( i );
Interval valid;
Quat q;
ctlRot->GetValue( t, &q, valid );
}
得到的是 以軸(0,0,-1)旋轉(90)度
所以要對四元數的X,Y,Z分量,(也就是軸方向分量與角度一半的正弦積)求負.才能正常的顯示動畫.

4.GetNodeTM 函式得到的是節點相對世界空間的變換,在匯出動畫的時候往往要得到相對於它的父節點的變換.所以要做如下變換:
Matrix3 matRelativeTM;
   Matrix3 matParentTM;
   Matrix3 matTM = GetBoneTM(pNode,keyTime);
   

   
   if (boneNode.mParentID == -1)
   {
    matRelativeTM = matTM;
   }
   else
   {

    matParentTM = GetBoneTM(pNode->GetParentNode(),keyTime);
    if( memcmp(&matTM,&matParentTM,12*sizeof(float)) == 0 )
    {
     matRelativeTM.IdentityMatrix();
    }
    else
    {
     matRelativeTM =  matTM * Inverse(matParentTM);
    }
   }

相關推薦

3DS MAX匯出骨骼動畫注意

編寫外掛從MAX中匯出骨骼動畫的幾點注意事項.1.首先要遍歷所有的MESH,和BONE,並匯出0時刻的MESH所有頂點位置及索引,和BONE的世界變換矩陣的逆矩陣.這些資訊可以單獨放到一個檔案中,以後加入動作時,每個動作可以做為一個檔案.2.如果使用Physique做為蒙皮外

3DS Maxbip動畫融合及ogre動畫導…

               在3DS Max中有個運動融合器(motion mixer),方便我們將兩個或者多個bip檔案融合在一起,還包含了動畫的過渡。那麼下面,我就介紹下這個的用法。 1. 準備工作:        開啟你的人物模型,雙擊,並選中骨骼 2. 因

3ds Max的poly制作有瓦的房頂實例

3dmax 房頂實例本教程詳細的講解了用3d max中的poly制作有瓦的房頂,很適合廣大愛好者學習。 我曾經考慮過那些有瓦的屋頂怎麽在poly中建立模型的問題,現在手頭上有個任務需要的就是制作更多細節的房頂的,它的制作不能象原來一樣通過貼圖來完成因為他需要的是更多的細節。模型比

手把手教你如何用PythonPDF檔案匯出資料(附連結)

有很多時候你會想用Python從PDF中提取資料,然後將其匯出成其他格式。不幸的是,並沒有多少Python包可以很好的執行這部分工作。在這篇貼子中,我們將探討多個不同的Python包,並學習如何從PDF中提取某些圖片。儘管在Python中沒有一個完整的解決方案,你還是應該能夠運用這裡的技能開始上手。

一種Robotstudio環境匯出機器人模型並在MATLAB下使其視覺化的研究記錄

1、前記:回到學校反而沒時間記錄了自己瞎折騰的東西了,允我長長的嘆一口氣   '_' //      先提一下,在這篇MATLAB機器人視覺化部落格中提到了如何使CAD模型的機器人在MATLAB環境下視覺化的問題,因為自己沒有裝有SolidWorks,Pro-E之類的CAD

AndroidStudio(as)匯出apk

隨著as在安卓開發中越來越重要,我們有必要掌握如何從as中匯出可以釋出的apk 第一步是要簽名: (1)簽名的意義: 為了保證每個應用程式開發商合法ID,防止部分開發商可能通過使用相同的Pakage Name來混淆替換已經安裝的程式,我們需要對我們釋出的APK檔案進行唯一簽

3ds max給網格頂點賦予顏色並且渲染

Vertex Color Map Material Editor > Maps rollout > Click a Map button. > Material/Map Browser > Vertex Color Mapping ver

3ds Max頂點色RGBA的繪製

在遊戲製作中頂點色的運用非常普遍,而且頂點色的使用方式也更加多樣化,所以正確的繪製得到頂點色資訊很重要。最近在製作的時候遇到了關於繪製頂點色的問題,專門開一篇來記錄總結下。先看下錯誤的做法:一般在max中繪製頂點色採用的方式為新增VertexPaint修改器:如果按預設開啟的

Cocos2d-x 載入骨骼動畫資源

Cocos Studio是一套基於Cocos2d-x的免費遊戲開發工具集,它能幫助開發者快速建立遊戲資源,將大部分繁瑣的遊戲開發工作使用編輯器來快速製作,進一步幫助遊戲開發者減短開發週期、提高開發效率。 Cocos Studio本身不光只是針對骨骼動畫的編輯而設計的,它還提供了UI、場景和資料等資訊的編

3ds Max去掉重複點的技巧

之前調整一個手臂模型,原模型為避免彎曲時的塌陷等失真現象,只有肘部相連線,小臂和大臂之間是分開的。這樣的話,在肘部關節有一圈點重複了一次。我需要將重複點去掉,並將模型合併為一個整體。剛一開始的時候還在傻傻地一個點一個點地刪除,後來琢磨出一個快捷的方法。 選中要修改的物件,

3DS MAX製作簡單的動畫

1、山的製作 1、建立長方體 選擇右側命令面板建立Create→幾何體Geometry→Box長方體,然後在Perspective透檢視中建立一個長方體。 2、修改長方體 在命令面板選擇Modify修改→Box001→Modifier list修改器列表→Box→Par

ORACLE資料庫匯出DMP檔案或將DMP檔案匯入ORACLE資料庫的兩種操作

1 淺析DMP       DMP是一種資料庫檔案,其內容包括了整個資料庫和表以及用於的所有資訊,如儲存過程,表定義,表結構等。用於程式設計師除錯程式。2 匯出DMP檔案的兩種方式      匯出資料庫的DMP檔案一般使用命令提示符或SQLPlus兩種方式。這兩種方式在命令上

3ds max 顯示及渲染點雲(point cloud)

3ds Max 和 3ds Max Design中的點雲工具有如下功能: 1. 匯入格式為.PTS的點雲資料; 2. 使用mental ray?渲染器渲染點雲; 3. 利用幾何顯示體(geometric display volumes)將點雲切片顯示; 4. 匯出新的點雲

遠端Mongodb 資料庫匯出為CSV檔案

Java 連線Mongodb 資料庫並且從資料庫匯出資料為CSV檔案。 需要匯入三個包: bson-3.4.3.jar mongo-java-driver-3.4.3.jar mongodb-driver-core-3.4.3.jar 當然版本可以改變。可以從http:/

Linux系統讀取Windows共享的文

用戶權限 ado a13 ip地址 進入 掃描 tex client 共享文件 首先在Windows系統上,解禁 Guest用戶:將C盤中的文件夾abc屬性中,選擇共享,將Everyone的權限添加確認:在命令框中輸入secpol.msc進入本地策略對話框:首先點擊用戶權限

以Spring整合EhCache為例根本上了解Spring緩存這(轉)

內置 tor 重要 date 清單 one display 結合 boa 前兩節“Spring緩存抽象”和“基於註解驅動的緩存”是為了更加清晰的了解Spring緩存機制,整合任何一個緩存實現或者叫緩存供應商都應該了解並清楚前兩

3ds Max入門到精通

問題 正常 man 鏡頭 cfg 其中 合成 平臺 halo 1. 軟件的下載與安裝 這裏用的是3ds Max2009簡體中文版 32位 在 Win7上運行記得打上sp2補丁,不然會有bug。 2. 3ds Max的歷史 3ds Max前身為運行於PC機DOS平臺上的

3ds Max制作妄想的外星人形象

3ds Max 外星人形象 來源:CG遊 作者:FedericoScarbini 使用軟件:3ds Max, Photoshop, ZBrush 軟件下載:www.xy3dsmax.com/xiazai.html 簡介 我認為每一個人都曾經在他的

Java 資料庫匯出 Excle 表

目錄   一、效果圖 二、excle 生成的工具類原理 三、excle 生成的工具類原始碼 四、在 Controller 層中如何使用? 五、測試 一、效果圖 二、excle 生成的工具類原理 通過呼叫工具類,先判斷在伺服器中指定的資料夾中有沒

3DSMAX 的CS 骨骼動畫外掛初探

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!