Character Customization: Difference between revisions
m (→Geosets) |
(→Geosets: Update geosets) |
||
Line 135: | Line 135: | ||
42**: Hair decoration (Lightforged Draenei) {{Template:Sandbox/PrettyVersion|expansionlevel=9|build=9.1.5.39977}} | 42**: Hair decoration (Lightforged Draenei) {{Template:Sandbox/PrettyVersion|expansionlevel=9|build=9.1.5.39977}} | ||
43**: Horn decoration (Highmountain Tauren) {{Template:Sandbox/PrettyVersion|expansionlevel=9|build=9.1.5.40196}} | 43**: Horn decoration (Highmountain Tauren) {{Template:Sandbox/PrettyVersion|expansionlevel=9|build=9.1.5.40196}} | ||
44**: Body Size (Dracthyr) {{Template:Sandbox/PrettyVersion|expansionlevel=10|build=10.0.0.44167}} | |||
45**: Unused/unknown | |||
46**: Unused/unknown | |||
47**: Unused/unknown | |||
48**: Unused/unknown | |||
49**: Unused/unknown | |||
50**: Unused/unknown | |||
51**: Eye glow (all races) {{Template:Sandbox/PrettyVersion|expansionlevel=10|build=10.1.5.50130}} | |||
Some particular geosets (such as 701) are marked as 'DNE' (Does Not Exist). This is to indicate that that particular geoset does not actually exist in any skin files. However, the game will still reference these geosets in the case that it wants nothing in that geoset group to show up. | Some particular geosets (such as 701) are marked as 'DNE' (Does Not Exist). This is to indicate that that particular geoset does not actually exist in any skin files. However, the game will still reference these geosets in the case that it wants nothing in that geoset group to show up. | ||
Revision as of 23:08, 4 September 2023
Shadowlands/9.0 made some big changes to the character customization system!
Reasoning
Blizzard wanted to move to a more "data-driven" customization system in Shadowlands that allows them to build up character models from multiple source textures instead of baking textures for each model/race/variation.
Terminology
Table | Description |
---|---|
DB2 | Database table, technical docs here. |
FileDataID | Reference to a specific file. Used in various DBs formats. Comes from TACT's root file. |
M2 | Model file, technical docs here. |
Geoset | Set of 3D geometry, also referred to as submesh or mesh part. |
Relevant DB2s
This system introduced many new DB2s. Table below is for summary explanations only, for actual structures you check WoWDBDefs or read the designated page (if available).
Table | WoW.tools link | Description |
---|---|---|
ChrCustomization | Browse | Not new in Shadowlands, introduced back in 7.3.5 but ChrCustomizationOption still refers to it. |
ChrCustomizationBoneSet | Browse | Links .bone FileDataIDs with .m2 FileDataIDs. |
ChrCustomizationCategory | Browse | Lists categories (e.g. Body, Face, Accessoires, Hair, Markings) shown in character creation. |
ChrCustomizationChoice | Browse | Lists all the combinations and if available, their names. Links to ChrCustomizationOption and ChrCustomizationReq. |
ChrCustomizationCondModel | Browse | Creature related |
ChrCustomizationConversion | Browse | Creature related |
ChrCustomizationDisplayInfo | Browse | Shapeshift form related |
ChrCustomizationElement | Browse | Links up Choice, Geoset, SkinnedModel, Material, BoneSet and CondModel and DisplayID tables. |
ChrCustomizationGeoset | Browse | List of geosets. Matches with IDs in the Geoset table below (Type being the first 2 numbers, IDs the last 2) |
ChrCustomizationMaterial | Browse | Links MaterialID to ChrModelTextureTargetID and TextureFileData.MaterialResourcesID |
ChrCustomizationOption | Browse | The different options, mostly important for UI |
ChrCustomizationReq | Browse | Various requirements for certain choices, most common one is a class requirement (e.g. demon hunter only, death knight only choices). |
ChrCustomizationReqChoice | Browse | Links choices to requirements. |
ChrCustomizationSkinnedModel | Browse | Lists various collection models ((ab)used for additional geosets like DH blindfolds, mechagnome parts) |
ChrCustClientChoiceConversion | Browse | |
ChrModel | Browse | DisplayIDs/Death skeletons. Look up by race can be found in ChrRaceXChrModel. |
ChrModelMaterial | Browse | Primarily used to link up a TextureLayout to a TextureType |
ChrModelTextureLayer | Browse | Contains information required to correctly combine the different layers of character textures. |
ChrModelTextureTarget | Browse | Appears to be just a list of valid texture targets. |
ChrRaceXChrModel | Browse | Links up Race IDs from ChrRaces to ChrModel IDs. |
TextureFileData | Browse | Not new, but links up MaterialResourcesID (from ChrCustomizationMaterial but also other DBs of other systems) to FileDataIDs. |
Important DB2 links
Fields in this paragraph are designated with a Table::Field notation.
ChrCustomizationChoice::ChrCustomizationOptionID => ChrCustomizationOption
An option (i.e. Skin Color) can have multiple choices. These choices are linked to an option through ChrCustomizationChoice::ChrCustomizationOptionID. All options have names, but not all choices do.
ChrCustomizationElement::ChrCustomizationChoiceID => Various other DBs
Many of the DBs are referenced from ChrCustomizationElement. In most cases, this DB links up a certain ChrCustomizationChoiceID with one other DB at a time, with all other columns being 0 (with the exception of RelatedChrCustomizationChoiceID which sometimes has values if the other column having values is ChrCustomizationGeosetID or ChrCustomizationMaterialID).
=> ChrCustomizationGeosetID
Which geoset IDs to enable for this specific choice ID.
=> ChrCustomizationMaterialID
Which materials(!) to apply for this choice.
Rendering
This section is specific to rendering characters models using the new customization system, for technical information on rendering things from WoW in general, check out the Rendering and M2/Rendering pages as well as the M2 page itself.
Geosets
For character models, each hairstyle/thick armor/etc is present in the mesh, so to render a character with a specific set of looks, different geosets (aka submeshes/mesh parts) will have to be enabled/disabled. A list of geosets can be found in the ChrCustomizationGeoset table, these numbers are the same ones as can be found in the table below but formatted differently. In the ChrCustomizationGeoset DB2 the GeosetType field matches the first 2 (0-padded) numbers in the linked submesh table and the GeosetID field from the DB2 points to the last 2 numbers (** in the submesh table). Note that ** starts with 01, not 00 (with the exception of entry 0, which is the skin).
0000: Skin 00**: Headᵛ / Hair: {1-21: various hairstyles} 01**: Beardᵛ / Facial1: {1-8: varies} (usually beard, but not always) 02**: Sideburnsᵛ / Facial2: {1: none (DNE), 2-6: varies} (usually mustacheᵘ, but not always) 03**: Moustacheᵛ / Facial3: {1: none (DNE), 2-11: varies} (usually sideburnsᵘ, but not always) 04**: Glovesᵛ: {1-4} 05**: Bootsᵛ: {1-5} 06**: Shirtᵛ Tail (Draenei Female)ᵘ 07**: Earsᵛ: {1: none (DNE), 2: ears} 08**: Wristbands / Sleevesᵛ: {1: none (DNE), 2: normal, 3: ruffled} 09**: Legsᵛ (Kneepads / Legcuffs): {1: none (DNE), 2: long, 3: short} 10**: Shirt Doubletᵛ (Chest): {1: none (DNE), 2: Unk (exists but purpose unknown - mesh is in all character models lower half of "Torso Lower")} 11**: Pant Doubletᵛ: {1: regular, 2: short skirt, 4: armored pants} 12**: Tabardᵛ: {1: none (DNE), 2: tabard} 13**: Robeᵛ (Trousers): {1: legs, 2: dress} 14**: DH/Pandaren female Loinclothᵛ 15**: Capeᵛ: {1-10: various cloak styles} 16**: Facial Jewelryᵛ (nose/earrings) / Mechagnome chin (8.2.0.30080) 17**: Eye Effectsᵛ: {1: none (DNE), 2: racial eyeglow, 3: DK eyeglow} 18**: Beltᵛ / bellypack: {1: none (sometimes DNE), 2: bulky belt, 3: Monk Belt} 19**: Skinᵛ (Bone/Tail) (in Legion this group also has Undead bones) 20**: Toesᵛ: {1: none, 2: feet} 21**: Skullᵛ 22**: Torsoᵛ {1: regular, 2: armored torso} 23**: Handsᵛ (attachments) (in addition to character models also exist in DH collections) { 1: hands for blood elf/night elf } 24**: Head attachments (e.g. Hornsᵛ) (only exist in DH/MG collections) {1-x} 25**: Facewearᵛ (Blindfolds/LightForged Draenei runes) {1-x} 26**: Shouldersᵛ (Present on mawraid_d shoulders for effect textures) 27**: Helmᵛ (present on various Object Component models). 28**: Arm Upperᵛ (present on various Object Component models). 29**: Arms Replaceᵛ (Mechagnome arms/hands, collections only?) (8.2.0.30080) 30**: Legs replaceᵛ (Mechagnome legs, collections only?) (8.2.0.30080) 31**: Feet Replaceᵛ (Mechagnome feet, collections only?) (8.2.0.30080) 32**: Head Swapᵛ (9.0.1.34137) 33**: Eyesᵛ (9.0.1.34137) 34**: Eyebrowsᵛ (9.0.1.34137) 35**: Piercingsᵛ/Earrings (9.0.1.34137) 36**: Necklacesᵛ (9.0.1.34137) 37**: Headdresᵛs (9.0.1.34714) 38**: Tailᵛ (Draenei) (9.0.1.34821) 39**: Misc Accessoryᵛ: Vines (Night Elf) (9.0.1.34821) 40**: Misc Featureᵛ: Chins (Goblins) / Tusks (Trolls/Orcs) (9.0.1.34902) 41**: Noses (Goblins) 42**: Hair decoration (Lightforged Draenei) (9.1.5.39977) 43**: Horn decoration (Highmountain Tauren) (9.1.5.40196) 44**: Body Size (Dracthyr) (10.0.0.44167) 45**: Unused/unknown 46**: Unused/unknown 47**: Unused/unknown 48**: Unused/unknown 49**: Unused/unknown 50**: Unused/unknown 51**: Eye glow (all races) (10.1.5.50130)
Some particular geosets (such as 701) are marked as 'DNE' (Does Not Exist). This is to indicate that that particular geoset does not actually exist in any skin files. However, the game will still reference these geosets in the case that it wants nothing in that geoset group to show up.
TODO: Describe default geosets to be enabled/disabled.
Items
For more on how geosets work in combination with items, see DB/ItemDisplayInfo
Textures
Character skins consist out of several layers.
TODO: Describe base layer (type 1) vs overlay layers (6, 8, 10, 19, 20, 21, 22, 24), how to compile base layer texture as well as how to overlay layer > 1 textures.