1.多种发型,胡须,特征(耳朵,嘴巴等)的几何Chunk集成在一个人物模型文件内部.
2.多种手腕护甲,腿护甲,鞋子,披风的几何Chunk集成在一个人物模型文件内部.
3.集成的模型块(GeoChunk)按数值区域进行分类,如设发型块的标识范围为1-100,胡须101-200,耳朵701-800,大腿1301-1400,小腿501-600.在各自的取值范围内,不同值代表不同的几何形状风格,如1:光头,2:冲天发等等.
4.手腕护甲,腿护甲,鞋子,披风物品应该有数据表明自己影响了哪些集成模型块(GeoChunk),如长筒靴影响了小腿的几何形状风格.每样物品均能影响身体的各个部位,若各个物品影响出现重叠,取影响优先高的物体.如靴子影响小腿是最高优先的,其他的影响被冲消.
5.武器,护甲,盾牌作为外部模型连接到身体的某块骨骼,以之为根骨骼进行骨骼矩阵运作.每个人物模型定义了其使用各种武器,盾牌时的动作.每个人物模型定义了各部位的物品接入点标识和坐标,如1:右手心,2左手心,并且定义接入的骨骼ID.
6.每样物品,鞋子,披风,武器,护甲,盾牌除几何形状外,有数据定义各自的纹理,极其复杂.一个物品应该有左右模型文件,左右纹理文件,以及对身体各部位影响的几何形状风格和对应的纹理.
7.头发的颜色使用不同的纹理来表达,但毛发纹理不仅表达颜色,还表达毛发的外观风格,如辫子,四披头,长发等不同发质,数据组织极其复杂,分性别,种族,发型,颜色值等等.
8.人物模型分块应该以Material为基本标准,兼顾几何形状(GeoChunk)分布,Material在存储时要预排序.1个Materail可以影响多个几何Mesh,一个Mesh可以受多个Material影响(多重纹理).
9.1个Materail用Flags(1个或多个DWORD)表达自己的Shader,这样使用Flags就可以排序优化模型渲染队列.基本有:BLEND_NONE,BLEND_TRANSPARENT,BLEND_MERGE,BLEND_ADDITIVE,BLEND_ADDITIVE_ALPHA,BLEND_SRC_DEST等等.甚至可以是一个VS,PS的Shader ID.
10.Refer to http://www.cnitblog.com/linghuye/archive/2005/08/14/1903.aspx