详细讲解骨骼动画(Skinmesh)要诀(转)

详细讲解骨骼动画(Skinmesh)要诀(转)[@more@]

  骨骼动画属于顶点变换应用的一种,就是在画顶点前用骨骼矩阵

  等来求出新顶点位置。

  要诀如下:

  有骨骼无动画: 新顶点位置 = 原始坐标×转换矩阵1(累级相乘后的矩阵)

  有骨骼有动画: 新顶点位置 =  原始坐标×转换矩阵2×权值矩阵

  

  转换矩阵1 = 顶点所在的Mesh,Mesh所在的Frame,Frame的原始矩阵

  frame->oldtransformmatrix,此矩阵自顶向下累级

  相乘后的矩阵,记为frame->nowtransformmatrix, 跟权值里的那个矩阵无关。

  

  转换矩阵2 = 先计算全部骨骼此时刻的变换矩阵animate->transformmatrix,

  然后用它代替原始的Frame->oldTransformmatrix ,然后累级相乘,

  得到一个现在的转换矩阵 frame->nowtransformmatrix。

  

  注意的是,转换矩阵1是顶点所在Mesh的转换矩阵,

  而转换矩阵二是用此顶点所在骨骼的变换矩阵,都需要自顶向下累级相乘而得到,

  在这些Frame->oldtransformmatrix累级相乘前需要将其变换到原始位置,

  就是用文件载入得Frame->Transformmatrix将现行得Frame->oldtransformmatrix初始化。

  

  伪码(随手写来的):

  

  while_begin

  update() // 更新顶点坐标

  render() // 渲染

  while_end

  

  update_begin

  frame->transformmatrix = settime() // 按时间提取Animation里的矩阵更新frame(二叉树型)矩阵

  frame->nowtransformmatrix = recursionmatrix() // 将各个frame矩阵进行递归累积得到现在的变换矩阵

  

  my_transformmatirx =frame->nowtransformmatrix * frame->weightmatrix // 变换矩阵乘以权值矩阵

  every_vertex = old_vertex * my_transformmatrix // 求当前顶点位置

  

  update_en

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8225414/viewspace-952183/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8225414/viewspace-952183/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值