从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);
    }
   }

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
3Dmax角色动画源文件是指在3Dmax软件制作的角色动画的原始文件,它包含了角色模型、骨架、动作、材质等信息,可以用于后续的修改、编辑、渲染、导出等功能。这种文件格式通常包括.max、.mb或.blend等格式。 3Dmax软件是一款强大的3D建模、动画制作和渲染软件,拥有着功能强大,易学易用的特点,能够为用户提供精细的3D模型制作与动画设计的途径。3Dmax角色动画源文件主要由模型、骨骼、动作、材质等要素构成,每一个要素的调整都会影响到整体效果。因此,在制作3D角色动画的过程,需要以这些要素为基础进行制作。 3Dmax角色动画源文件的制作流程通常包括以下几个步骤: 一、角色模型建模。首先需要根据角色设定制作角色模型,并根据需求添加细节和纹理。 二、骨架绑定。根据角色的模型建立骨架,通过骨架绑定的方式将模型和骨骼联系起来。 三、动作设计。在完成角色模型和骨架绑定后,需要在适当的间点创建关键帧,并设计动作过渡和角色表演的细节。 四、导出与渲染。完成动画后,可以将源文件导出到不同的格式,包括FBX、OBJ、3DS和DAE等,以便用于其他3D软件或者游戏引擎使用。同,使用3Dmax的渲染器可以将动画渲染成高质量的视频。 总之,3Dmax角色动画源文件是制作3D角色动画的重要组成部分,它可以为用户提供更多的动画制作选择和更丰富的制作思路。同,对于游戏开发、影视等领域,3D角色动画也有着广泛的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值