This page features the creation of a [[ URL | Customizable Object ]] with two child assets (two pieces of cloth) enclosed by a Group node that allows choosing the way of enabling or disabling each one of them. Each child asset exemplifies a different way to create objects’ hierarchies: the first one is a child that uses the same parent’s material through nodes that permits the modification of some textures, and the second one, that uses its own independent material. In both examples, the pieces of clothes are two different kinds of trousers.
(WARNING) We recommend visiting the [[ URL | Basic Concepts ]] page before start creating any Customizable Object
(NOTE) The resulting Customizable Object of this example can be found in the [[https://work.anticto.com/w/mutable/unreal-engine-4/examples/#village-demo | Village Demo ]] in //Content/Examples/HowTo// named "ClothPieces"
= Add a child object using the parent’s material
In this first example, the cloth piece proposed is a pair of officer trousers. This child asset is sharing the same material as the parent’s through an Extend Material node which allows the modification of the parent material’s parameters connecting its slots to new textures.
== Assets required
* One material asset or material instance of the character with two parameters (color and normal)
* One skeletal mesh of the character with the previous material applied (two parameters)
* One skeletal mesh of a cloth's pieces without any material applied (Piece 1)
* One color and one normal texture asset of the Piece 1
(NOTE) The assets used in this example can be found in the [[ https://work.anticto.com/w/mutable/unreal-engine-4/examples/#village-demo | Village Demo ]] in //Content/HowTo/ClothPieces//
1) The first step is to create a basic [[ https://work.anticto.com/w/mutable/unreal-engine-4/user-documentation/create-a-basic-customizable-object/ | Customizable Object]] asset with a **Base Object**, a **Material**, and a **Skeletal Mesh**.
> In this example, the Customizable Object asset is named "Cloth Pieces", the Reference Skeletal is "ClothPieces_BaseBody", the Material is called “ClothPieces_M” and the Skeletal Mesh is the same as the Reference Skeletal’s one.
2) From the Base Object's "Children" connection, drag and drop to create an Object Group node. This node is created to enclose one or more child assets enabling a drop-down menu after compiling.
Image Step 2
3) In the Group Name sub-tab of the Graph Node Properties tab, name the node. This name is to be displayed as a title next to the selector menu of child assets.
> In this case, the Object Group is named “Trousers”.
Choose the type of group preferred in the Group Type sub-tab.
> In this example, the type selected is “At least one Option”, which creates a menu of choices in which, at least, one option must be enabled.
(NOTE) If you want to choose the most suitable "Group type", check the Object Group page.
4) In this step, the first Child asset (Piece 1) is created. Click and drag from the “Objects” connection of the **Group node** to create a [[ URL | Child Object ]] node.
Image Step 4
5) In the Graph Node Properties, write a name in the Object Name sub-tab. Leave the other sub-tabs as default.
> In this example, the first Child Object node is named “Officer”.
6) As the objective of this example is to create a child asset that shares the same material as the parent’s, the node [[ URL | Extend Material ]] is the one needed. From the “Lod 0” connection of the Child Object node creates an Extend Material node.
7) With the Extend Material node selected, in the Graph Node Properties tab, set the parent’s material on the Parent sub-tab. Now, the parent’s material is applied to the Child Object as well, so the same slots of the parent’s material should have appeared in this node.
8) Create a Skeletal Mesh node. On this node, the required mesh of this child asset is to be applied.
Image Step 8
9) Choose a cloth piece’s mesh that fits the base object’s character in the Skeletal Mesh tab of the Graph Node Properties.
Image Step 9A
Link the “Unnamed Material Mesh” connection of the new Skeletal Mesh node to the “Add Mesh” one of the Extend Material node, in the Source Graph tab.
Image Step 9B
10) As this child asset’s mesh has its own color and normal texture, both textures should be connected to the slots that the Extend Material has inherited from the parent’s one. Here, the base diffuse texture of the cloth piece is to be connected. Add a Texture node and link its connection “Image” to the “Base Color” one of the Extend Material node.
Image Step 10
11) With the Texture node selected, choose the related color texture in the Graph Node Properties.
Image Step 11
> In this example, the texture used is “MeshBased_TrousersOfficier_D”.
12) Add a new Texture node from the “Normal” connected of the Extend Material node.
Image Step 12
13) Choose the related Normal map texture in the Graph Node Properties.
Image Step 13
> In this example, the texture used is “MeshBased_TrousersOfficier_N”.
14) The first Child Object (Piece 1) is already finished. Check if the Source Graph looks similar to this:
Image Step 14
15) Compile. In the Preview Instance Properties tab, a drop-down menu called “Trousers” should appear with only one choice, the first child asset.
Image Step 15A
In the Preview Instance Viewport, the character should look similar to the image below.
Image Step 15B
= Add a child object using its own material
This second and last example is an evolution of the first one in which another child asset is added, but, in this case, the material it uses is a different and independent one that includes its own color and normal texture.
== Assets required
* One skeletal mesh of a cloth's pieces without any material applied (Piece 2)
* One material asset or material instance of Piece 2 without any parameters but including the textures of the previous mesh (color and normal at least).
1) In this step, the second Child Object (Piece 2) is created. This one is not using the parent’s material but its own. From the Group node’s connection “Objects” create the second Child Object node.
Image Step 1
2) Select the new Child Object and name it in the Graph Node Properties.
Image Step 2
> In this example, the second Child Object node is named “Pirate”.
3) From the “LOD 0” connection of the second Child Object node, create a Material node. This node is used to create add a new material.
Image Step 3
4) Select the new Material node and, in the Graph Node Properties tab, select the related material in the Material sub-tab. This material is the one prepared beforehand which already includes the textures of color, roughness (if wanted) and normal map for this second child asset but without any parameter slot.
Image Step 4
> In this example, the material used is “ClothPieces_TrousersPirate_M”.
5) Then, create a Skeletal Mesh node. In this node, the second cloth piece’s mesh is to be applied. In the Graph Node Properties tab, select the cloth piece’s mesh preferred.
Image Step 5A
> In this example, the mesh used is “ClothPieces_TrousersPirate”.
Link the two purple “Mesh” connections of the Skeletal Mesh node and the Material one in the Source Graph tab.
Image Step 5B
6) Verify that the nodes’ connections in the Source Graph tab are similar to the image below.
Image Step 6
(WARNING) If you want to create Comments to frame each child assets’ nodes (Piece 1 and Piece 2), you can do it by visiting this page XXXXXXXXXX
7) Compile. Check that unfolding the drop-down menu two choices appear. Select each choice and verify that it is displayed on the character. The result should be like this:
Image Step 7A
Image Step 7B
(WARNING) In the “Trousers” drop-down menu, two different choices must appear, their names are the ones written on each Child Object node properties.