Page MenuHomeAnticto

Mutable for Unreal Engine | Change the skin tone of a character
Updated 1,029 Days AgoPublic

Overview

This article explains how to change a character's skin tone by selecting a new one from a color bar using Mutable Character Customization System for Unreal Engine 4. In this example, a gradient skin color bar is used to get a wide range of color shades by moving a selector slider. Moreover, the blending effect between the character's base color and the color bar tones is introduced to help with a better result.

We recommend visiting the Basic Concepts page before start creating any Customizable Object.

Change the skin tone of a character

The resulting Customizable Object of this example can be found in the Village Demo in Content/HowTo/SkinTone named "SkinTone"

Assets required

  • One material asset or material instance of a character with one color parameter
  • One skeletal mesh of the character with only one material slot
  • One texture asset of the base skin texture of the character
  • One mask texture of the character's skin
  • One texture asset of a "skin color bar" with gradient colors
The assets used in this example can be found in the Village Demo in Content/HowTo/SkinTone

Steps

  1. The first step is to create a basic Customizable Object asset with the Base Object, the Material, and the Skeletal Mesh. Link all the connections with the same name.

Step1_BasicCustomizableObject.png (122×867 px, 46 KB)

In this example, the Customizable Object asset is named "Skin Tone", the Reference Skeletal is "SkinTone_BaseBody", the Material is called “SkinTone_M” and the Skeletal Mesh is the same as the Reference Skeletal’s one.


  1. As the objective is to change the skin tone of a character, a node that can modify the texture parameters of the skeletal mesh's material and apply a "color bar" instead of a simple texture is needed. A Texture Layer node allows modifying a base texture with blending options and masks. From the "Base Color" connection in the Material node, create a Texture Layer node.

Step2_TextureLayer.png (316×860 px, 59 KB)


  1. With the Texture Layer node selected, at the Graph Node Properties tab, click the "+" button in the Layers sub-tab. This creates a layer that results in two new slots in the Texture Layer node.

Step3A_TextureLayerInside.png (158×504 px, 40 KB)

Each layer created in the Texture Layer node has two connections: the "Layer X" and the "Mask X" connections.

Still in the Graph Node Properties tab, click to unfold the tab of the new layer created. Choose the blending effect preferred among all the options displayed by unfolding the Effect sub-tab. This effect will determine the visual interaction between the samples from a color bar texture and the base layer.

Step3B_TextureLayerBlendingEffect.png (288×302 px, 35 KB)

The Effect in this example is left by default as "Cotle Softlight".

After finishing all the steps, if the colors displayed on the character are not similar to the ones on the color bar, try changing the blending effect.

  1. Create a Texture node by dragging and dropping from the "Base" connection of the Texture Layer node.

Step4_TextureBase.png (212×311 px, 34 KB)


  1. With the new Texture node selected, select the base texture for the character in the Graph Node Properties tab. This texture is the one on which the blending effect will be applied.

Step5_TextureBaseApplied.png (187×385 px, 33 KB)

In this example, the "SkinTone_BaseTexture_D" texture is used.


  1. Create another Texture node from the "Mask 0" connection of the Texture Layer. This node allows setting up a mask (black and white texture) which excludes from the "color variation nodes" the non-skin parts of the character's base texture, in this case, the eyes.

Step6_TextureMask0.png (233×421 px, 46 KB)


  1. In the Graph Node Properties, select the mask texture.

Step7_TextureMask0Applied.png (189×356 px, 28 KB)

In this example, for the "Mask 0" connection, the "SkinTone_SkinMask" texture is used.


  1. In the "Layer 0" connection, a texture with color information has to be connected. As the color bar has multiple colors, it is necessary to add a node that takes a sample from this bar's values. Create a Sample Texture node. Link its "Color" connection to the "Layer 0" one of the Texture Layer node.

Step8_SampleTexture.png (124×463 px, 36 KB)


  1. Create a Texture node from the "Texture" connection of the Sample Texture node. In this node, the skin color bar is to be set up.

Step9_TextureSample.png (130×713 px, 42 KB)


  1. In the Graph Node Properties, and with this last Texture node selected, select the skin color bar.

Step10_TextureSampleSet.png (188×341 px, 28 KB)

In this example, the" SkinTone_ColorBar" texture is used.


  1. Now, the only remaining node is the one that allows selecting a color value and creates a slider after compiling. Click and drag from the "X" connection of the Sample Texture node to create a Float Parameter node. The "X" connection is chosen because the horizontal values of the color bar texture are the ones that contain the gradient color information.

Step11_FloatParameter.png (170×578 px, 44 KB)


  1. Select the Float Parameter node and name it in the Graph Node Properties tab. This name is appearing as a title next to the "skin color bar" when compiling.

Change the Default Value if wanted to change the color displayed as default after compiling the first time.

Step12A_FloatParameterProperties.png (184×333 px, 29 KB)

In the example, the Parameter Name used is "Skin Tone" and the Default Value is changed to "0.0" to take the first color of the "skin color bar" as default.

Click the "+" icon of the Description Image to enable the option of showing an image in the slider selector. Name this new connection by clicking on the small sub-tab of this new "0" layer created and changing the default name.

Step12B_FloatParameterPropertiesDescriptionImage.png (234×338 px, 31 KB)

In this example, the Description Image is called "Skin Color Bar".


  1. Back to the Source Graph, connect the "Skin Color Bar" connection of the Float Parameter node to the "Image" one of the Texture node.

Step13_FloatParameterCoonectionImage.png (150×453 px, 39 KB)


  1. Before compiling, check that the Source Graph looks similar to the example below.

Step14_GeneralSourceGraph.png (589×1 px, 124 KB)


  1. Compile. The result in the Preview Instance Properties tab should look similar to the image below.

Step15A_PreviewProperties.png (239×591 px, 32 KB)

Try to move the "selector slider" and select a color. It must be immediately visible on the character's skin.

Step15B_PreviewViewport.png (659×580 px, 195 KB)

Last Author
pep
Last Edited
Nov 30 2020, 10:38 AM

Event Timeline

marc moved this document from Restricted Phriction Wiki Document.Mar 11 2020, 8:04 PM
marc changed the visibility from "All Users" to "Public (No Login Required)".Mar 19 2020, 11:23 AM
marc changed the edit policy from "Restricted Project (Project)" to "All Users".
marc added a project: Restricted Project.
marc published a new version of this document.
laura published a new version of this document.
laura edited the content of this document. (Show Details)
laura edited the content of this document. (Show Details)
laura edited the content of this document. (Show Details)