基于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
轉載于:https://www.cnblogs.com/winsonchen/archive/2008/01/24/1051716.html