游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2902|回复: 8

求助关于每次渲染能设置的骨骼数目的问题。

[复制链接]

201

主题

1437

帖子

1963

积分

金牌会员

Rank: 6Rank: 6

积分
1963
QQ
发表于 2008-3-12 22:33:00 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

22

主题

309

帖子

353

积分

中级会员

Rank: 3Rank: 3

积分
353
QQ
发表于 2008-3-13 00:02:00 | 显示全部楼层

Re:求助关于每次渲染能设置的骨骼数目的问题。

一个顶点最多4块,总数不知道有限制没

54

主题

2916

帖子

3765

积分

论坛元老

Rank: 8Rank: 8

积分
3765
QQ
发表于 2008-3-13 07:53:00 | 显示全部楼层

Re:求助关于每次渲染能设置的骨骼数目的问题。

IndexBlend的话19块
VertexBlend的话4块

貌似我见过的的显卡再好也没超越这个数字的。

7

主题

438

帖子

438

积分

中级会员

Rank: 3Rank: 3

积分
438
发表于 2008-3-14 09:14:00 | 显示全部楼层

Re:求助关于每次渲染能设置的骨骼数目的问题。

现在的shader model3.0的顶点着色器支持纹理采样,由于骨骼索引,权重,矩阵数据都可以存储在纹理之中,原始的顶点数据只要有一个唯一的ID就能索引这些数据,原则上每个定点一次可以绑定N多根。

虽然我没有这样实现过,但是我认为这个想法应该没有错的。

201

主题

1437

帖子

1963

积分

金牌会员

Rank: 6Rank: 6

积分
1963
QQ
 楼主| 发表于 2008-3-14 09:56:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2008-3-15 10:35:00 | 显示全部楼层

Re: 求助关于每次渲染能设置的骨骼数目的问题。

D3D如果是使用ID3DXMesh, ID3DXSkinInfo来生成带骨骼动画的模型的, 有两种方式:
1. 是使用ConvertToBlendedMesh生成的, 这种收到硬件的限制, D3DCAPS9.MaxVertexBlendMatrices的数量, 现在的显卡一般是4, 所以只能设置4个混合用的矩阵.
2. 使用ConvertToIndexedBlendedMesh生成的, 在生成的mesh顶点数据中有一个8位的矩阵数组索引, 被称为palette模式.固定管线可以支持最多到255个.不过固定管线的速度相当的慢, 所以现在几乎没人直接用这个方式. 这个方式的模型可以使用VS来设置矩阵数组, 用顶点数据中的数组来索引.
  
   使用第一种方式生成的模型, 受限于单次设置骨骼数目, 所有会有很多的AttributeGroup, D3DXMesh中每个attributegroup都会调用DrawMeshSubset, 其实最终的调用还是DrawPrimitive, 所以效率很相当的地下.并且为了减少attributegroup的个数, 生成mesh的时候SDK会尝试做优化, 即使美术在max中是做的2link的模型, 也有可能会被改成4link的, 以节约DrawPrimitive的调用次数.但是这个优化的转换不一定对所有模型都成功.
    使用第二种方式的模型, 如果使用VS来绘制, 那么单次设置的matrix个数就由可以使用的VS固定寄存器(Shader Constant)个数决定. 一般来说VS2.0的显卡支持256个float4的shader constant, 除去VS运行本身需要的(如果VS不是太复杂的话), 一般可以支持到70个左右的4x4矩阵, 也就是说可以一次画70个骨骼控制范围内的模型, 如果超过了70个, 就需要两次或者更多.相对于第一种方式, 效率高了很多.

201

主题

1437

帖子

1963

积分

金牌会员

Rank: 6Rank: 6

积分
1963
QQ
 楼主| 发表于 2008-3-15 20:55:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

201

主题

1437

帖子

1963

积分

金牌会员

Rank: 6Rank: 6

积分
1963
QQ
 楼主| 发表于 2008-7-30 15:56:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

19

主题

638

帖子

638

积分

高级会员

Rank: 4

积分
638
发表于 2008-7-30 19:34:00 | 显示全部楼层

Re:求助关于每次渲染能设置的骨骼数目的问题。

诸位,

indexed骨骼模式的4个指的是每个顶点最大可以由4个骨骼影响,而不是一次Draw时能传多少骨骼矩阵。
每次最大的骨骼数由Caps里的MaxVertexBlendMatrixIndex决定,不过注意看文档,这数没这么简单。
不过其实实际还是得用shader,因为ATI显卡从来不支持index blend。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-21 20:50

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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