[美术制作流程]魔兽世界角色换装分析

本文详细解析了魔兽世界中的角色系统设计与装备系统的工作原理。重点介绍了如何通过一套模型和多套纹理贴图实现角色换装效果,以及装备如何与角色纹理进行混合。此外,还介绍了角色纹理资源的分类和命名规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FW:  http://www.cnblogs.com/winsonchen/archive/2008/01/24/1051716.html

基于WowModelView的代码分析魔兽的换装流程,给程序包括美术提示avatar换装思路。

魔兽角色系统设计原则:

1.一套模型多套纹理贴图
2.某一角色只有一个模型, 该模型包含了各种服装搭配所需的Mesh, 是该角色网格全集. 当用户换装时,会动态显示、隐藏一些网格细节。
比如发型:有短发、中发、长发;37开、辫子等。这些都是已经做好跟Skin一起导出。只是运行时根据用户配置决定显示具体发型对应的网格。
3.基本角色模型不包括头盔、肩甲、盾牌等装饰品。

举HumanFemale角色为例:
1.一个HumanFemale Model,包括了所有服装配件用到的网格。
2. 总共有62部分组成。
3.为了提高效率,角色贴图只使用一张;服装配件用贴图叠加混合到基本身体贴图。
4.魔兽在贴图制作上都只用了半边,用镜像方式节省资源。
5.没有调整Material,皮肤及脸、发型等颜色的变化用更换纹理实现。这样做比较细腻。

HumanFemal角色纹理制作细节分析,
1.角色纹理制作规则,分两大类:
   a.每个基本角色都有自己一套基本纹理资源目录。具体纹理资源分类见HumanFemal例子。
   b.所有角色共用的纹理资源。比如外衣、腰带、护腕等用到的纹理贴图。

2.HumanFemale特有的一套资源目录:
    Skin                    // 256*256, 10张(对应不同皮肤颜色)
    Face Style            //
    Hair Style
    Hair Color
    Facial Feature
    Facial Color
    Skin是基本纹理(Tex0),其他所有纹理都要跟其混合。
    命名规则:HumanFemaleSkin00_00.blp …HumanFemaleSkin00_09.blp

3.Face Style 魔兽分成两部分FaceUpper、FaceLower
   FaceLower  128×64  张数=FaceStyleCount×SkinCount=14×10=140
   FaceUpper  128×32  张数=FaceStyleCount×SkinCount=14×10=140
   命名规则:HumanFemaleFaceLower00_00.blp …HumanFemaleFaceLower14_09.blp

4.Hair Style、Hair Color
   Hair Style:对应的是网格。有11种发型。也就是HumanFemale需制作11种发型网格,并跟角色一起导出。
   HairColor:HairMesh对应的纹理。有3种发型贴图:直发、微卷、卷。有10种颜色。
   HairColor纹理张数=HairColorCount×3=10×3=30;
   命名规则:Hair00_00.blp  …  Hair03..09.blp
   注意:Hair纹理Human男女共用。

5.Facial Feature、Facial Color
   Facial Feature用于表现角色脸部局部细节特征,如女性的耳环、闭环,男性的粗眉毛、胡子等。
   Facial Feature 用于决定哪些角色装饰网格可视。
   Facial Color 是Facial Feature对应的纹理。
   Facial Color纹理张数=FacialFeatureCount×9=7×9=63;
   命名规则:Facial00_00.blp  …  Facial06..09.blp

6.由以上统计,HumanFemale角色特有的纹理需 10+140+140+30+63 = 383张。

7.角色区域坐标(Skin0-Skin9纹理区域划分)
const CharRegionCoords regions[NUM_REGIONS] =
{
    {0, 0, 256, 256},    // base
    {0, 0, 128, 64},    // arm upper
    {0, 64, 128, 64},    // arm lower
    {0, 128, 128, 32},    // hand
    {0, 160, 128, 32},    // face upper
    {0, 192, 128, 64},    // face lower
    {128, 0, 128, 64},    // torso upper
    {128, 64, 128, 32},    // torso lower
    {128, 96, 128, 64}, // pelvis upper
    {128, 160, 128, 64},// pelvis lower
    {128, 224, 128, 32}    // foot
};

装备系统分析
1.魔兽世界有八种角色、每种角色分男女性别。
2.这里的装备不仅仅指刀剑等武器,还包括手套、盔甲、长袍等。
3.装备分类,部分装备每个角色各做一套,比如头盔做了16套。
4.部分装备,所有角色共用同一纹理。比如长袍、护腕等。
5.一套装备类型对应所有角色。也就是说下面的装备枚举类型适用所有角色。不存在特殊角色独有的装备。
    enum eCharSlots     // Character Equipment Slot
    {
        CS_HEAD,
        CS_NECK,
        CS_SHOULDER,
        CS_BOOTS,
        CS_BELT,
        CS_SHIRT,
        CS_PANTS,
        CS_CHEST,
        CS_BRACERS,
        CS_GLOVES,
        CS_HAND_RIGHT,
        CS_HAND_LEFT,
        CS_CAPE,
        CS_TABARD,
        CS_QUIVER,

        NUM_CHAR_SLOTS
    };
6.部分装备的纹理贴图要跟角色模型的纹理混合。
   比如Belt腰带就要混合到角色256*256贴图的CR_LEG_UPPER部分。
   比如Bracers护腕就要混合到角色256*256贴图的CR_ARM_LOWER部分。
   比如Cheat、Shirt装备就要跟角色多个区域混合。
7.简单装备用一张贴图,如护腕、腰带。复杂装备会用到多张贴图,如Shirt就要四张(用于跟角色纹理四个区域混合CR_ARM_UPPER、CR_ARM_LOWER、CR_TORSO_UPPER、CR_TORSO_LOWER)。


角色信息DB
魔兽使用dbc数据表形式存储各种信息配置。包括了角色基本纹理区域划分信息,装备跟纹理的对应信息。
ChrRaces.dbc
CharHairGeosets.dbc
CharSections.dbc
CharacterFacialHairStyles.dbc
HelmetGeosetVisData.dbc
ItemDisplayInfo.dbc
ItemVisuals.dbc
ItemVisualEffects.dbc
ItemSet.dbc
ItemClass.dbc
ItemSubClass.dbc
CharStartOutfit.dbc
SpellVisualEffectName.dbc
内容概要:本文针对国内加密货币市场预测研究较少的现状,采用BP神经网络构建了CCi30指数预测模型。研究选取2018年3月1日至2019年3月26日共391天的数据作为样本,通过“试凑法”确定最优隐结点数目,建立三层BP神经网络模型对CCi30指数收盘价进行预测。论文详细介绍了数据预处理、模型构建、训练及评估过程,包括数据归一化、特征工程、模型架构设计(如输入层、隐藏层、输出层)、模型编译与训练、模型评估(如RMSE、MAE计算)以及结果可视化。研究表明,该模型在短期内能较准确地预测指数变化趋势。此外,文章还讨论了隐层节点数的优化方法及其对预测性能的影响,并提出了若干改进建议,如引入更多技术指标、优化模型架构、尝试其他时序模型等。 适合人群:对加密货币市场预测感兴趣的研究人员、投资者及具备一定编程基础的数据分析师。 使用场景及目标:①为加密货币市场投资者提供一种新的预测工具和方法;②帮助研究人员理解BP神经网络在时间序列预测中的应用;③为后续研究提供改进方向,如数据增强、模型优化、特征工程等。 其他说明:尽管该模型在短期内表现出良好的预测性能,但仍存在一定局限性,如样本量较小、未考虑外部因素影响等。因此,在实际应用中需谨慎对待模型预测结果,并结合其他分析工具共同决策。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值