游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2096|回复: 7

关于骨骼动画中的权值计算

[复制链接]

64

主题

855

帖子

856

积分

高级会员

Rank: 4

积分
856
QQ
发表于 2005-4-15 09:53:00 | 显示全部楼层 |阅读模式
我现在已经得到了每个点的初始位置 Vert 和对应骨骼的变换矩阵D3DXMATRIX  BoneMatrix。

顶点变换时只要Vert左乘BoneMatrix即可。
D3DXVec3TransformCoord(&VertBuff,&Vert,&BoneMatrix);

我的问题是每个点的权值 float Weight 如何参与计算,是不是
BoneMatrix=BoneMatrix*Weight;
D3DXVec3TransformCoord(&VertBuff,&Vert,&BoneMatrix);
呢?

我用这样的方法计算权值,好像没有起到任何效果。
请问各位高手Weight是如何参与计算的?谢谢!

64

主题

855

帖子

856

积分

高级会员

Rank: 4

积分
856
QQ
 楼主| 发表于 2005-4-15 10:02:00 | 显示全部楼层

Re:关于骨骼动画中的权值计算

高手们顶啊

40

主题

211

帖子

212

积分

中级会员

Rank: 3Rank: 3

积分
212
QQ
发表于 2005-4-15 10:35:00 | 显示全部楼层

Re:关于骨骼动画中的权值计算

BoneMatrix1*VertBuff*Weight1+BoneMatrix2*VertBuff*Weight2+...
应该是这样吧=.=!

64

主题

855

帖子

856

积分

高级会员

Rank: 4

积分
856
QQ
 楼主| 发表于 2005-4-15 10:44:00 | 显示全部楼层

Re:关于骨骼动画中的权值计算

请注意,我现在只用一根骨骼进行控制。

你是不是说用这样的计算过程?
D3DXVec3TransformCoord(&VertBuff,&Vert,&BoneMatrix);
VertBuff*=Weight;

这样做的话,我这边出来的结果还是不对

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2005-4-16 12:25:00 | 显示全部楼层

Re:关于骨骼动画中的权值计算

先转换成四元数,再计算
另外,你的代码用中文表示变量更容易令人明白,我其实不大明白你些什么

40

主题

211

帖子

212

积分

中级会员

Rank: 3Rank: 3

积分
212
QQ
发表于 2005-4-16 14:09:00 | 显示全部楼层

Re:关于骨骼动画中的权值计算

一根骨骼进行控制就不用权值计算

64

主题

855

帖子

856

积分

高级会员

Rank: 4

积分
856
QQ
 楼主| 发表于 2005-4-18 16:42:00 | 显示全部楼层

Re:关于骨骼动画中的权值计算

我知道出了什么问题了,我只用一根骨骼进行控制,而Vertex的骨骼权值又被设为了0.5f,这样的话直接用上面的公式进行计算就和3ds max里面看到的结果不一样,这种情况下:正确的计算应该是VertNew=Matrix*VertexOld*(Weight)+VertexOld*(1-Weight);

所以,当一个顶点对应的全部骨骼的权值和不为1.0f的时候,需要再累加VertexOld*(1-Weight)才能和3dsmax里看到的一样

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2005-4-18 17:43:00 | 显示全部楼层

Re:关于骨骼动画中的权值计算

....有很简单的方法啊。。
D3DXVec3TransformCoord之后得到的顶点值再乘一个scale矩阵,scale的大小就是骨骼的权重,多个权重的话,把结果加起来就是最终的结果了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-25 08:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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