The mesh we are importing must have the same skeletal mesh hierarchy as the base body. So, when importing we will choose the base_body_skeleton. We share skeletons in UE4 so that the skeletal meshes can share any animation transformations that may occur on the given skeleton.
Imported Skeletal Mesh
There are several data files that the customization system in Radical Heights needs to populate items on the character. The first is the PlayerPawn, this is the main data container that represents the player character in game, the components it needs to function and of course the skeletal meshes for customization purposes. When the meshes are chosen for customization in the game front end, they are slotted into the named mesh components seen below.
Player Character Pawn
Customization Data Assets
The data assets here mostly represent each “slot” or body part on the character that can be customized. The main customization data asset references the specific body part customization data files. Each body part data file will hold all of the items that the character can wear on that area of the body. For example, the CustomizationUpperBody data file will contain reference & markup data for all shirts, coats, etc that can be worn on the UpperBody location of the character.
Customization Data Assets
UpperBody Customization Data
Customization Body Vids
In Part 1, it was mentioned that we use UV channel 2 on the body mesh to define face group sections that will be used for hiding. Inside the CustomizationBody data file, we define the mapping of UV coordinates to indices. If an item blueprint has parameters that flag certain PartVidsToHide indices, then the associated faces for the body mesh will hide in game. Some examples can be seen below.
After the mesh has been imported it can be assigned to a new customization blueprint. The blueprint is a visual container for the artist to reference the meshes and materials that will define a customization asset. Here the user can also mark up specific parameters for controlling how the asset interacts and functions in relation to other items within the customization system. Below is an UpperBody specific blueprint that has mappings to inform the customization system this item can only be applied to the UpperBody section of the character. When the user saves this file it will populate the associated customization data part file, seen above, with all the references and modified parameters in the found in the item config.
Item Customization Blueprint
Item Config Data
1. Incompatible Parts – Given body part item will be hidden when this item is active. 2. Part VIDs to Hide – Mesh face groups on the body part that will be hidden when this item is active. 3. Part Morphs – Given body part item will activate a morph target with a given value when this item is active. 4. Bodies – These are the bodies and part references that this data container represents.
Below are some examples of item config data to make sure items will work, look visually correct, in relation to other items that may be active.
When a full helmet is active we hide the hair part
Helmet item hides the Hair part
When a hat is active a morph is applied to the hair part
Hair item is morphed to scrunch inside the Hat
Face groups flagged to hide on the base body
Body face groups for the feet are hidden
At a pretty high level this covers the customization pipeline and process we used for Radical Heights. It should be noted that the core of the editor implementation and runtime system was engineered by Jim Ashcraft. Many systems like these require a solid engineer to get it going and Jim is one of the best!
I hope this was an informative and helpful look into a our customization process.
If you have any questions or comments don’t hesitate to post them here hit me up on Twitter. @Meatplowz