游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1943|回复: 6

骨骼动画的问题

[复制链接]

1

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2010-4-15 09:11:00 | 显示全部楼层 |阅读模式
我现在在场景中加入一个骨骼蒙皮后,因为蒙皮上的每一个顶点都要与该顶点绑定的骨骼进行权值计算,一个人物模型几千个点。。每一帧都要这么算,算得我机器具卡啊。。如果先把每帧都建成显示列表也要先卡个半分钟才行。。请问这个怎么解决啊。
十分感谢。

11

主题

1238

帖子

1782

积分

金牌会员

Rank: 6Rank: 6

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

Re:骨骼动画的问题

固定管线不是有顶点混合的支持? 或者用可编程管线

5

主题

755

帖子

757

积分

高级会员

Rank: 4

积分
757
发表于 2010-4-15 17:15:00 | 显示全部楼层

Re:骨骼动画的问题

你不会每个骨骼都能影响到你所有的顶点吧。。那是你美术问题。
应该是你代码写错了或者有bug.看看dxsdk里面的动画。他的tiny模型顶点不少。也不至于那么慢

11

主题

1238

帖子

1782

积分

金牌会员

Rank: 6Rank: 6

积分
1782
发表于 2010-4-15 17:41:00 | 显示全部楼层

Re:骨骼动画的问题

楼猪是用CPU算,但CPU也不会这么慢

0

主题

275

帖子

676

积分

高级会员

Rank: 4

积分
676
发表于 2010-4-15 17:42:00 | 显示全部楼层

Re:骨骼动画的问题

一????最多 找4??影??Υ蟮?one

struct Ver
{
float x,y,z;
BYTE boneIndex[4];
BYTE boneWeight[4];
float u,v;
};

5

主题

29

帖子

33

积分

注册会员

Rank: 2

积分
33
发表于 2010-4-15 18:01:00 | 显示全部楼层

Re:骨骼动画的问题

用SSE加速。要不就直接用顶点着色器。

1

主题

3

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2010-4-20 09:45:00 | 显示全部楼层

Re:骨骼动画的问题

多谢楼上的回复,我的每个顶点都和骨骼有绑定。。但我写导出插件的时候已经把重叠的骨骼权重累加并且只取权值最大的四个。我的这个模型点数2000多,面数3000多,矩阵画图那些用的虽然是CPU单线程渲染,不过我觉得也不会这么卡吧,以下是计算融合顶点的代码:
                MapWeight::iterator iter;
                if ( m_vVeticesList.m_iBoneCount != 0 )
                {
                        //计算融合权值的顶点坐标
                        for ( iter = m_vVeticesList.m_mWeight.begin(); iter != m_vVeticesList.m_mWeight.end(); iter++ )
                        {
                                Bone *pBone = &pView->m_vBoneList.at( iter->first );//第几根骨头
                                blended_pt = blended_pt + m_vVeticesList * pBone->m_Init_Inversed_Matrix * pBone->m_MatrixList.at(m_CurrentFrame) * iter->second;
                        }
                }
我直接用顶点着色器算了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-9 23:24

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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