skinned mesh 蜘蛛样

被skinned mesh 折磨了 好久,开始感觉skinindices不对,因为pix显示里面全是0

后来跟来跟去发现是这样的,那些uchar的整数被pix用float的格式显示出来 (显示为0.0000000而不是按照生命的uint显示为0)

变成很小的数所以是0.00000

这样skinindices 就也是对的了 weight看起来也是对的 因为加起来等于1

 

 

哦对了 phyre的d3d11要把shader里面的semantic

skinindices :BLENDINDICES;

skinweights :BLENDWEIGHTS;

要这么写,不能就写个color0 看起来它是由后面的sementic来确定的

 

chr的skin运动起来看起来是蜘蛛一样的,并没有拉伸到无穷远,也没有很乱,说明还是比较正确的,只是哪里。。比如没有unormalize或者范围被扩大了(float 才要normalize 这个排除了

weight错误我也大概能认出来了 是会有蹼状的拉伸

矩阵如果没有转置会有三角片那样像无限远拉伸

这种在一个范围内的拉伸反向,看起来是比如把脚跟的matrix乘到了膝盖膝盖上,skintransform看起来也是对的,所以还是skinindices不对,位置不对。。。感觉是这样

 

偶然发现了pix显示buffer的方法,在layout那页把你的类型写进去就可以了,那页相当于脚本。

这样就奇怪了 因为skinindices还是0

.。。。。。skinindices并不是0 前面有些frame是0是因为那些frame里还没画

后面找到了数据完全正确的skinindiceds 和weight 矩阵看起来也对

就只有mul的问题了 也就是一开始就最先怀疑的rowmajor的问题

被semantic这个问题遮蔽了

 

这下人物也正常了 只有define mul(a,b)mul((b),(a))好使就一切ok啦 

上次升级我大概是手动改的mul 这次一定要找到一个宏

准备用u4 的处理方法

//if you genetated matrix (float3X3(VectA,VectB,VectC)),you must use mul else use MulMatrix means you passed through a matrix para

if defined XX

define MulMatrix(Mtx, Vect) mul(Vect, Mtx)

 

这是个比较全面的解决方案,忽略我前面文章说的 单纯define mul(a,b)mul((b),(a))这种方法

转载于:https://www.cnblogs.com/minggoddess/p/4169971.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值