游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1440|回复: 1

关于.x文件中骨骼运算问题

[复制链接]

25

主题

145

帖子

341

积分

中级会员

Rank: 3Rank: 3

积分
341
发表于 2005-5-20 17:56:00 | 显示全部楼层 |阅读模式
如果一个模型文件如下(省略了顶点定义和部分skinweight的部分数据)
SkinWeights {
    "joint1";
    24;
    0,
    15,
    21,
    1,
    14,
    16,
    2,
    8,
    22,
    3,
    9,
    19,
    4,
    10,
    23,
    5,
    11,
    18,
    6,
    12,
    20,
    7,
    13,
    17;
    0.665297,
    0.665297,
    0.665297,
    0.665297,
    0.665297,
    0.665297,
    0.168087,
    0.168087,
    0.168087,
    0.168087,
    0.168087,
    0.168087,
    0.193470,
    0.193470,
    0.193470,
    0.193470,
    0.193470,
    0.193470,
    0.618487,
    0.618487,
    0.618487,
    0.618487,
    0.618487,
    0.618487;
    0.000000,-1.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
   }

   SkinWeights {
    "joint2";
    ...
   }


SkinWeights {
    "joint3";
    ...  }


SkinWeights {
    "pCube1";
    ...
   }
  }
}



Frame joint1 {
  

  FrameTransformMatrix {
   0.000000,1.000000,0.000000,0.000000,1.000000,-0.000000,0.000000,0.000000,0.000000,-0.000000,-1.000000,0.000000,0.000000,0.000000,0.000000,1.000000;;
  }

  F
rame joint2 {
   

   FrameTransformMatrix {
    1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,2.000000,0.000000,0.000000,1.000000;;
   }

  
Frame joint3 {
   

    FrameTransformMatrix {
     -0.000000,-1.000000,0.000000,0.000000,1.000000,-0.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,2.000000,0.000000,0.000000,1.000000;;
    }
   }
  }
}
}

AnimationSet {


Animation {
  
  { joint2 }

  AnimationKey {
   0;
   3;
   0;4;-1.000000,0.000000,0.000000,0.000000;;,
   4500;4;-1.000000,0.000000,0.000000,0.000000;;,
   9000;4;-1.000000,0.000000,0.000000,0.000000;;;
  }

  AnimationKey {
   1;
   3;
   0;3;1.000000,1.000000,1.000000;;,
   4500;3;1.000000,1.000000,1.000000;;,
   9000;3;1.000000,1.000000,1.000000;;;
  }

  AnimationKey {
   2;
   3;
   0;3;2.000000,0.000000,0.000000;;,
   4500;3;3.000000,0.000000,0.000000;;,
   9000;3;2.000000,0.000000,0.000000;;;
  }
}

Animation {
  
  { joint1 }

  AnimationKey {
   0;
   3;
   0;4;-0.000000,0.707107,0.707107,0.000000;;,
   4500;4;-0.707107,0.000000,0.000000,0.707107;;,
   9000;4;-0.707107,0.000000,0.000000,0.707107;;;
  }

  AnimationKey {
   1;
   3;
   0;3;1.000000,1.000000,1.000000;;,
   4500;3;1.000000,1.000000,1.000000;;,
   9000;3;1.000000,1.000000,1.000000;;;
  }

  AnimationKey {
   2;
   3;
   0;3;0.000000,0.000000,0.000000;;,
   4500;3;0.000000,2.000000,0.000000;;,
   9000;3;0.000000,0.000000,0.000000;;;
  }
}
}


说明: 1个cube盒子绑定有3个骨骼, joint1->joint2->joint3 的一种直线关系, 其中只有joint1, joint2分别有3个关键帧

问题: 如何得到骨骼绑定前的坐标值? 怎么计算顶点的动作帧(自己写算法,不用微软的函数)? 请详细说明一下,谢谢

25

主题

145

帖子

341

积分

中级会员

Rank: 3Rank: 3

积分
341
 楼主| 发表于 2005-5-23 08:55:00 | 显示全部楼层

Re:关于.x文件中骨骼运算问题

没人知道啊?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-25 16:49

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表