[crytek]Spherical Skinning withDual-Quaternions and QTangents


http://crytek.com/cryengine/presentations/spherical-skinning-with-dual-quaternions-and-qtangents


使用quaternion对skinning进行优化:

  • 使用dual quaternion来取代matrix4x3
  • 使用quaternion取代vertex stream中的tangnet,binormal项
得到的结果是:
  • vertex shader constants削减1/3
  • 把vertex中的tangent/binormal/normal项压缩至8byte
DualQuaternion
总体上说会带来性能的提升,具体在:
  • 积累transformation会变快
  • apply transform会变慢
  • shader constant的下降会大幅度提升性能(这里在某些显卡上有一个constant waterfall的情况,所以constant的降低非常有意义)
美术制作这里:
制作动画会从linear变到spherical,所以需要做一些改变。

TangentFrameCompress
这里所谓的tangent frame就是vertex中的tangent/binormal/normal项。
如果完全不做压缩,那就是sizeof(float)*3*3 = 36byte,所有相关压缩之后会降到8byte。
这里是把这个矩阵压缩到一个quaternion,解出t,b,n的方法是:

由于quaternion是normalized,所以quaternion又可以只保留xyz项,w项推算出来,符号不是问题。

这里一个注意就是gpu 浮点数处理0的时候和cpu的ieee不一样,所以如果quaternion的w是0的时候要加一个很小的bias。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值