游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1870|回复: 4

求助,关于微软SDK蒙皮动画的例子

[复制链接]

54

主题

116

帖子

122

积分

注册会员

Rank: 2

积分
122
发表于 2007-10-23 19:33:00 | 显示全部楼层 |阅读模式
有个问题 ,就是受四个骨胳影响的顶点最终坐标公式是这样Vl=V*M1*W1+V*M2*W2+V*M3*W3+(1-W1-W2-W3)*V*M4

但是在程序中只是的设置了对应于不同权重的混合矩阵,如下

for (iPaletteEntry = 0; iPaletteEntry < pMeshContainer->NumPaletteEntries; ++iPaletteEntry)
{
     iMatrixIndex = pBoneComb[iAttrib].BoneId[iPaletteEntry];
     if (iMatrixIndex != UINT_MAX)
  {
     D3DXMatrixMultiply( &matTemp, &pMeshContainer->pBoneOffsetMatrices[iMatrixIndex],
     pMeshContainer->ppBoneMatrixPtrs[iMatrixIndex] );
     m_pd3dDevice->SetTransform( D3DTS_WORLDMATRIX( iPaletteEntry ), &matTemp );
  }
}

然后就设置材质和纹理,最后就DrawSubset了。
我想问的是,顶点的权重在哪儿体现的呢,怎么和它对应的矩阵相乘的?
谢谢了

0

主题

14

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2007-10-24 07:45:00 | 显示全部楼层

Re:求助,关于微软SDK蒙皮动画的例子

每个顶点有权重值和权重矩阵,权重值用于求受多个骨骼影响情况下的新坐标,权重矩阵用于求出其骨骼坐标

31

主题

249

帖子

259

积分

中级会员

Rank: 3Rank: 3

积分
259
发表于 2007-10-24 09:34:00 | 显示全部楼层

Re:求助,关于微软SDK蒙皮动画的例子

权重在X文件中,读取X文件是一起读取进去了。MS把很多底层的东西都隐藏了。其实X文件是有缺陷的,他不能把MAX中的IKChain信心保存进去,就是说,如果一块骨骼有两块子骨骼,动画就会出现错误。所以从这个例子并不能学到最低层的东西。

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2007-10-24 23:18:00 | 显示全部楼层

Re: 求助,关于微软SDK蒙皮动画的例子

hycoldrain: 求助,关于微软SDK蒙皮动画的例子

有个问题 ,就是受四个骨胳影响的顶点最终坐标公式是这样Vl=V*M1*W1+V*M2*W2+V*M3*W3+(1-W1-W2-W3)*V*M4

...

这段代码应该是例子中固定管线 none indexed 方式绘制 skinned 的部分,这里d3d 并没有封装细节,你要看初始化的部分,在那里把 mesh 按照最大 4 根骨骼来分组,这样就能保证设置的 4 个 frame 矩阵就对应分组之后的 mesh 的 skin 信息,绘制的时候 ffp 会自动根据设置 frame 的顺序来做对应。具体要参考 sdk 中的 Vertex Blending 技术。

4

主题

30

帖子

40

积分

注册会员

Rank: 2

积分
40
发表于 2007-10-26 15:52:00 | 显示全部楼层

Re:求助,关于微软SDK蒙皮动画的例子

权重在顶点信息里了。经过ConvertToIndexedBlendedMesh函数的处理,每个定点---骨骼关系作为一个顶点,就是说如果一个顶点受4个骨骼影响,那么将生成四个顶点。并增加两个顶点分量,如果原来的顶点结构是。
struct VERTEX
{
    float x,y,z;
    float normal[3];
    float u,v;
};
就变成
struct VERTEX
{
    float x,y,z;
    float weight;   // 权重
    DWORD matrixIndices;  // 受哪个矩阵影响
    float normal[3];
    float u,v;
};
大致如此
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-19 23:56

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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