游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1934|回复: 3

骨骼动画的问题

[复制链接]

42

主题

140

帖子

158

积分

注册会员

Rank: 2

积分
158
发表于 2010-4-15 19:12:00 | 显示全部楼层 |阅读模式
    小弟刚学骨骼动画,目前用的是MS3D格式,我发现MS3D格式每个顶点只有一个骨骼,并且没有权重,是不是它不支持一个顶点绑定多骨骼。
    我现在已经可以成功的对模型进行动画(用的LockVB的方式),我还有几个疑问:
    1.计算每帧我都必须从根骨骼到遍历到子骨骼计算到模型空间的变换矩阵,我看到大家都说用硬件加速,但是这部分是不是必须使用CPU计算,而每个顶点分属于不同的骨骼,我们是不是要每个骨骼分别进行渲染,也就是说每个模型的绘制要调用多次DIP,而所说的硬件加速不过就是做做顶点混合操作之类。
   2.在微软的SkinMesh的FX中看到这么一段
VertexShader vsArray[4] = { compile vs_2_0 VShade(1),
                                        compile vs_2_0 VShade(2),
                            compile vs_2_0 VShade(3),
                            compile vs_2_0 VShade(4)
                          };


//////////////////////////////////////
// Techniques specs follow
//////////////////////////////////////
technique t0
{
    pass p0
    {
        VertexShader = (vsArray[CurNumBones]);
    }
}
不知道这是什么意思

9

主题

132

帖子

145

积分

注册会员

Rank: 2

积分
145
QQ
发表于 2010-4-16 08:20:00 | 显示全部楼层

Re:骨骼动画的问题

骨骼动画事实上非常简单, 因为动画数据是针对骨骼空间的,所以必须要先变换到模型空间.

代码:
比如1个顶点只能受4个骨骼影响.
struct skin_info
{
    uchar indices[4];
    float weights[4];
}

void UpdateSkin(vec3 * pos, const vec3 * origin,
                const skin_info * info, const mat4 * mats, int count)
{
      mat4 blend;
      for (int i = 0; i < count; ++i)
      {
          blend = mats[info.indices[0]] * info.weights[0] +
                  mats[info.indices[1]] * info.weights[1] +
                  mats[info.indices[2]] * info.weights[2] +
                  mats[info.indices[3]] * info.weights[3];
          pos = origin * blend;
      }
}

mats 是 offset * combient.
用GPU也很简单, 不过有限制.
cpu用simd可以快很多

11

主题

1238

帖子

1782

积分

金牌会员

Rank: 6Rank: 6

积分
1782
发表于 2010-4-16 10:22:00 | 显示全部楼层

Re:骨骼动画的问题

MS3D后续版本是有权重的!

http://chumbalum.swissquake.ch/files/ms3dsdk184.zip

42

主题

140

帖子

158

积分

注册会员

Rank: 2

积分
158
 楼主| 发表于 2010-4-16 16:29:00 | 显示全部楼层

Re:骨骼动画的问题

谢谢,我看到了。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-17 09:03

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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