...
Some bugs EE has fixed:
- Phenotypes can have PLTphenotype-specific PLT files (previously it always used the human, female or human, male variant), meaning you could have armor looking actually different texture wise (yay!)
...
| Name | Model Base Name | Model Node Name | Related 2da Files | Naming Convention | Notes and Description | Example: Female, Human, Normal Size | Example: Female, Human, Normal Size Horse Bolded if different to pfh0 |
|---|---|---|---|---|---|---|---|
| Base Nodes and Animations | pXYZpGR#.mdl | n/a | phenotype.2da | pXYZ.mdl
| This defines the placement of model parts (where the arms go for instance) and start the top level of animations specific to this model. 99% of the time this is purely the node locations, and a similarly named file is the animation file, which then links to other animation-only files, eg:
This means the Fat phenotype can have some better animations for certain ones, but anything generic can be left in a_ba.mdl and be found by it eventually in the hierarchy. If you edit a_ba.mdl and add a new model animation, eg to the custom slots, you can tie that into all models using it. Mind you certain things like horses may go a bit weird when it's called with them being mounted and all. | pfh0.mdl | pfh3.mdl |
| Non-Animation Models | pXYZ_basename000.mdl
| ||||||
| Head | head | head_g | none | pXYZ_head000.mdl | These models are "just a model" - no animations - which if are base naked versions are overriden by armor versions (or helmets for the head) when equipped. The point of these though is to be appropriately set to the right node in the base model, which then is referenced in the base model animations. Head models are special in so far as there is no 2da file defining them. Chargen uses a break in models to stop the progression into NPC only heads. Toolset just loads every available model as an option. | pfh0_head001.mdl | pfh0_head001.mdl |
| Foot, Right | footr | rfoot_g | parts_foot.2da | pXYZ_footr000.mdl | pfh0_footr001.mdl | pfh0_footr001.mdl | |
| Foot, Left | footl | lfoot_g | parts_foot.2da | pXYZ_footl000.mdl | pfh0_footl001.mdl | pfh0_footl001.mdl | |
| Shin, Right | shinr | rshin_g | parts_shin.2da | pXYZ_shinr000.mdl | pfh0_shinr001.mdl | pfh0_shinr001.mdl | |
| Shin, Left | shinl | lshin_g | parts_shin.2da | pXYZ_shinl000.mdl | pfh0_shinl001.mdl | pfh0_shinl001.mdl | |
| Leg, Leg | legl | lthigh_g | parts_leg.2da | pXYZ_legl000.mdl | pfh0_legl001.mdl | pfh0_legl001.mdl | |
| Leg, Right | legr | rthigh_g | parts_leg.2da | pXYZ_legr000.mdl | pfh0_legr001.mdl | pfh0_legr001.mdl | |
| Pelvis | pelvis | pelvis_g | parts_pevlis.2da | pXYZ_pelvis000.mdl | pfh0_pelvis001.mdl | pfh0_pelvis001.mdl | |
| Chest | chest | torso_g | parts_chest.2da | pXYZ_chest000.mdl | The parts_chest.2da file contains the only actual use of the ACBONUS column - it's a float which is floored (so 2.6 becomes 2 AC) and references armor.2da for the armor penalties. The armor classes are essentially hardcoded excepting NWNX. | pfh0_chest001.mdl | pfh0_chest001.mdl |
| Belt | belt | belt_g | parts_belt.2da | pXYZ_belt000.mdl | pfh0_belt001.mdl | pfh0_belt001.mdl | |
| Neck | neck | neck_g | parts_necks.2da | pXYZ_neck000.mdl | pfh0_neck001.mdl | pfh0_neck001.mdl | |
| Forearm, Right | forer | rforearm_g | parts_forearm.2da | pXYZ_forer000.mdl | pfh0_forer001.mdl | pfh0_forer001.mdl | |
| Forearm, Left | forel | lforearm_g | parts_forearm.2da | pXYZ_forel000.mdl | pfh0_forel001.mdl | pfh0_forel001.mdl | |
| Bicep, Right | bicepr | rbicep_g | parts_bicep.2da | pXYZ_bicepr000.mdl | pfh0_bicepr001.mdl | pfh0_bicepr001.mdl | |
| Bicep, Left | bicepl | lbicep_g | parts_bicep.2da | pXYZ_bicepl000.mdl | pfh0_bicepl001.mdl | pfh0_bicepl001.mdl | |
| Shoulder, Right | shor | rshoulder_g | parts_shoulder.2da | pXYZ_shor000.mdl | pfh0_shor001.mdl | pfh0_shor001.mdl | |
| Shoulder, Left | shol | lshoulder_g | parts_shoulder.2da | pXYZ_shol000.mdl | pfh0_shol001.mdl | pfh0_shol001.mdl | |
| Hand, Right | handr | rhand_g | parts_hand.2da | pXYZ_handr000.mdl | pfh0_handr001.mdl | pfh0_handr001.mdl | |
| Hand, Left | handl | lhand_g | parts_hand.2da | pXYZ_handl000.mdl | pfh0_handl001.mdl | pfh0_handl001.mdl | |
| Robe | robe | root | parts_robe.2da | pXYZ_robe000.mdl | Robes can be defined manually again (instead of inherited from another phenotype) on horses so they are laid out correctly. Robes can hide essentially all the body parts, although amusingly doesn't mention wings or tails unlike cloaks for some reason. The full list of what can be hidden is: HIDEFOOTR HIDEFOOTL HIDESHINR HIDESHINL HIDELEGR HIDELEGL HIDEPELVIS HIDECHEST HIDEBELT HIDENECK HIDEFORER HIDEFOREL HIDEBICEPR HIDEBICEPL HIDESHOR HIDESHOL HIDEHANDR HIDEHANDL HIDEHEAD | pfh0_robe003.mdl | pfh3_robe003.mdl |
| Cloak | cloak | cloak_g | cloakmodel.2da | Special; defined in cloakmodel.2da which model to load, but the names are styled still with an additional underscore: pXYZ_cloak_000.mdl | Cloaks can be defined manually again (instead of inherited from another phenotype) on horses so they are animated correctly. In Bioware's case they just made them all empty so they don't show up! Nowadays you can just manually hide the objects using nwscript commands. Cloaks also can hide the wings, tail, shoulders left and right as part of the cloakmodel.2da file. Note: for horse compatibility it appears HIDETAIL is always set to 0 (else the horse would disappear when wearing certain cloaks). A pain but oh well! You could alter these columns to 1 if you don't run horses. | pfh0_cloak_001.mdl | pfh3_cloak_001.mdl |
| Wings | n/a | wings | wingmodel.2da | Arbitrary, eg; c_wingsdm.mdl is "Demon" wings | Wings are (thankfully) just used as wings by Bioware. | c_wingbat.mdl | c_wingbat.mdl |
| Tail | n/a | tail | tailmodel.2da | Arbitrary, eg; c_horse1.mdl is "Horse, Walnut" | Tails are used to load, well tails. It can also load other simple single models (which become fully animated too!) - and their primary use in the example is for horses. Other uses Bioware added were for scaling models up and down more easily without hundreds more appearance.2da lines. | c_tailbone.mdl | You'd set a horse model, eg c_horse1.mdl to override this (and set it back when dismounted) |
...