= How does it work?
{F101999, size=full}
The diagram above shows the different concepts used for character customization and their relation.
== Customizable Object
This is a new type of asset added to Unreal Engine. It represents an object that can be customized. It includes all the possible variations that can be applied to it, and defines the parameters that can be controlled at run-time (by the player or by game code), and how they affect the final objects.
There is a special tool called Customizable Object Editor inside the Unreal Editor to show and edit this kind of asset. You can create CustomizableObjects from the Content Browser **Add New** menu:
{F102004, size=full}
To open it, just double-click on any CustomizableObject asset in the Content Browser. These assets look like this in the browser:
{F102006, size=full}
The main UI of the editor looks like this:
{F102002, size=full}
The main panels of this interface are:
* **Source Graph** : It contains the diagram of nodes that define this CustomizableObject structure, including its LODs, materials, meshes, textures, parameters and effects that connect them all.
* **Object Properties** : This panel has the general properties of the object.
* **Node Properties** : When a node is selected in the //Source Graph// its properties are displayed here.
* **Preview Instance Viewport** : When an objects is open and compiled, this panel will show the 3D preview. See the article [[ /w/mutable/unreal-engine-4/user-documentation/preview-object/| Tuning the Preview Of An Object ]] for details.
* **Preview Instance Parameters** : This panel shows the current parameters for the preview object. They can be directly modified here.
The editor contains its own tool bar with the following elements:
(TODO: Add image)
== Customizable Object Instance
= Parameters
== Slider
== Enum
== Toggle
== Projector
= Mutable Editor (interface)
== Actions
Save, Compile, Stress test, Bake...
== Source Graph
== Graph Node Properties
== Object Propertes
== Preview Instance Viewport
== Preview Instance Properties
= Hierarchy
== Objects
== Groups
== Multiple Assets
= Object Interactions
= Texture Layouts
{anchor #texture-layout-concept}
(IMPORTANT) The space that the materials added with extend material nodes will use at the final mesh layout depends on their relative block sizes. The root customizable object layout defines what a block cell resolution is. Artists will have more control on the final look if they take this into account when creating textures for extend material nodes.
Example: **TODO: Add images showing this in detail, as it may be hard to grasp without visualization of the case and the consequences.**
A parent object mesh with a layout of 2x2, with one bloc 1x2 and one 1x1. Only one image in the material, of dimensions 256x256.
A child object mesh with a layout of 1x1 and one block 1x1 added to the parent mesh, using an extend material node. Only one image in the material, of dimensions 256x256.
The final mesh with this child active will have a layout of 2x2 with one 1x2 block and two 1x1 blocks, one of them the one added by the active child. The final image size is 256x256, which means that the child object has had its resolution **halved**, as it now uses only a quarter of the space, a bloc of 1x1 which has an image size of 128x128.
The artist would have controlled the exact appearence of the child object material by making it 128x128 from the beginning.