作者jbyu (silence)
看板GameDesign
标题Re: [程式](XNA)does not contain SkinningData tag
时间Sat Mar 3 23:28:30 2012
如同azureblaze所说的
linked-nodes
每个node各自拥有自己的transform与mesh
animation则是单纯更新每个node的transform而已
skeletal mesh则是使用多个bone所组成的骨架
每个vertex使用多个index与weight来混合出结果
通常使用4组index/weight的vertex format
animation则是更新bone的transform
除此还要运算vertex blending
使用CPU blending的好处是只需要运算一次
之後不管render pass几次都不会重复运算
使用GPU blending的好处当然就是快速罗
不过multi-pass的时候还是会重复运算
当然现在GPU硬体已经进步到render2buffer了
所以也可以先用render2buffer的方式来做vertex blending
之後的multi-pass就可以用static mesh rendering的方式来最佳化
※ 引述《azureblaze (AzureBlaze)》之铭言:
: 传统animation的作法是把模型切割成很多mesh
: 像是大腿小腿身体各一个
: 然後分别定义每个mesh的平移旋转缩放量做出keyframe
: keyframe间再内插出他们的位置。
: 他最大的缺点就是要动就要整个mesh一起动
: 动动你的手指,你会发现皮肤上有些地方是几乎不会动的
: 因此这样的方式只能处理机械类的东西
: (或是用在那个手臂是长方体肩膀是球的美好时代)
: skeletal(skinned) animation的作法会用传统的方式弄出一个骨架
: 然後在每个vertex上指定每个骨头对他的影响力
: 像是手臂中间的移动会完全照着手肘关节,可是越靠肩膀
: 受到肩膀关节位置的影响就会越大。
: 因此两种动画的制作差异算是颇大,所以无法靠转档处理
: (其实传统要硬转成skeletal的话可以指定一个mesh完全只
: 受一个骨头影响,可是skeletal有额外的运算负担所以大
: 概没人会这样做)
: 就XNA的命名看来我觉得他应该是用两个不同的东西来处理
: 这两种animation,所以放不对的资料他会抱怨
: 另外有些animation还是混用的,那才麻烦XD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 124.8.98.40