Building a Character

Here you'll find more detailed information about using the Linteum Character Kit to create a character, including how to use automatic presets and conduct performance assessment.

Introduction

Characters, clothing and other items compatible with this system are intended to be used through the Linteum Character Kit somewhat exclusively. While source assets have been provided for advanced users, directly editing the "source" files of assets is not recommended. As an example of this, the included Materials are configured for HDRP. When you assemble the character (see below), these will be copied, and the new copies will be rewritten for the desired rendering pipeline.

The Linteum Character Kit is designed to be both powerful and easy to use. It takes care of a number of complex problems, such as merging bones and skinned mesh renders onto a common skeleton, copying morphs into clothing, and removing unseen surfaces from the character.

After importing the pack for the first time, you may see an error message in the console about a DLL failing to import. This can be safely ignored.

Building a Character

To build a character, right-click in your Project window and select Create -> Character -> Create New Character. This will create a new Character Assembler asset, which stores the settings of your new character, so you can duplicate and tweak your results easily.

Note: If you see pink eyes on your character after building it, shaders may still be compiling. Wait a minute, then try rebuilding your character again.

After pressing "Build & Save," you may see a error message appear on the Unity console. This can be safely ignored.

The Character Assembler

Upon creating a new Character Assembler, your Inspector window (if not visible, use Window -> Inspector from the Unity main menu) will display a selection of options to modify your character, as well as some basic performance heuristics about the assembled result.

To start, click the o icon located to the right of the Base Character field, to display the list of base characters in your project. This is the "base model" you will be assembling against, and is typically a basic humanoid. Once you have added this basic model, you can optionally choose one specific character with the Character field, and add multiple clothing assets and morphs.

You can drag assets from the Project view onto the Clothing and Additional Morphs fields to quickly add them to the list of equipped clothing and morphs.

Render Pipelines

Linteum will automatically detect if you have a particular render pipeline running under its default setting. Provided shaders are compatible with URP 7 (2019), HDRP 7.2/7.3 (2019) and 4.0 (2018) as well as the legacy Standard Render Pipeline. Using the Shaders drop down menu, you can force it to one of these options.

Characters

Characters provide a set of override materials, and one base morph which allows you to change the base character in significant ways. Characters provide a quick and easy way of differentiating your models, while still retaining compatibility with the larger clothing and morph libraries.

A Note on Skeletons

Characters may also bring across broad changes to the bones and skeleton of the base character (modifying the underlying rig). While morphs in general can be modified through the use of the resulting blend shapes to transition to and from a character, these skeletal changes are more permanent, and transitioning between characters with more extreme size differences is not recommended.

Scripters: The data on these skeleton morphs is available in the BoneScales, BonePositions, BoneRotations and BoneNames array fields of the SkeletonMorph class. They represent the final local positions of the adjusted characters.

Clothing

Clothing items are additional prefabs that will be attached to your character. If these prefabs are rigged against the same skeleton as the underlying base character, the bones and rigging will be transferred to use the original base skeleton, ensuring that the clothing will move with the character.

Extra Morphs

Morphs give you the ability to create more extreme or subtle variations of a character and their expressions. It is worth noting that any extra morphs you add will also be copied to the final assembled clothing. So for example, a body weight morph will ensure that the clothing resizes in accordance with the original character.

Morphs are applied as "Blend Shapes" which are visible on all Skinned Mesh Renderer components in the finished result. You can dial them up or down at runtime through modification of these blend shapes. Extra morphs can also include things such as facial expressions, or a full FACS rig.

Note on memory usage: Morphs will add (1-3 × the total vertex count × 12 bytes) per morph added to the character. For a 60,000 vertex character, this is around 703kB to 2.1mB of RAM use per morph. Adding hundreds of morphs to a character may pose a memory problem.

Instances of the same character will not count multiple times.

The more extreme a morph, the more extreme movements will be applied to clothing items as well. Morphs with significant body shape changes can result in squishing, stretching and crunching of clothing assets. You may find lowering the range by a small amount will help with this.

Built-In Morphs

Some characters may include additional built-in blend shapes. The Built-in Morphs section allows you to select which ones you wish to preserve in the finished product. Built-in morphs that are not selected will not be included. Note that these morphs are not copied to clothing.

Option: Strip Morphs

Unchecking this option will prevent any built-in morphs coming from the base character from being stripped when assembling the character.

Option: Strip Morphs from Clothing

If a clothing item includes built-in blend shapes, this option will erase them before assembling the finished result.

Performance and Memory Options

The Linteum Character SDK is designed to allow you to reduce the complexity of characters and clothing designed for heavier applications and bring them into a performance profile more appropriate for runtime use. Note that this can only be so effective without producing visual artifacts. Destructive options such as decimation may require work to dial in the appropriate settings.

Decimation Options

Decimation removes and merges triangles progressively to reach a specific polygon target. Decimation is a destructive process, and results can be mixed. The decimator included in the Linteum Character Kit is keyed to be rigging aware, and it will try preserve triangles near joints and other complex rigging areas. This is to ensure that when the character is animated, the result is still useful.

The decimator options will only appear when a clothing item has been added to a character.

To decimate a clothing item, drag the slider to indicate the target number of triangles you want in the final result. Please be aware that due to hidden surface deletion, the final number may be lower than this for the Base Character. A setting of "0" is treated as "Don't decimate."

Decimation works best on items which are broadly smooth. Complex items such as jewelry, furs, or rough elements will not decimate as well as other items. Further, decimated items may not work well with complex morphs, as the vertex density that the character may rely on will be affected. Finally, it is not recommended to decimate the base character, as the resulting UV shifts can produce unpleasant results.

Materials - Merge Duplicate Character Materials

This option will examine materials attached to a character to see if they are identical (every property on the material will be compared for an exact match). If they are identical, then the materials will be merged into a single material.

Materials - Merge Duplicate Clothing Materials

This option will examine materials attached to a clothing item, and works substantially the same as character materials. If the clothing item materials are identical, then the materials will be merged into a single material.

Hidden Surfaces - Delete Hidden Surfaces

This option will probe the surface of the resulting mesh to test if the base character skin is occluded by clothing. If a triangle on the character is fully obscured by a clothing item, the hidden surface scan will remove it from the resulting mesh. Be aware, enabling this option is slow, and will cause the final character build to take several minutes.

This option can be useful in the case of animation, where the hidden surfaces can poke through clothing when the rigging is different between the clothing and character models, or as a result of decimation or other changes.

Hidden Surfaces - Range Min and Max

These two options control how far above and below the surface the tool will examine for a clothing item. It is not recommended to change this from the default values.

Hidden Surfaces - Unwind Hidden Surfaces by One

This option will restore triangles neighboring a solid section of the item, which can help preserve areas which may be too aggressively deleted. This will, however, increase the total number of triangles in the final result, and preserve more of the overall skin.

Texture Atlasing - Atlas Textures

This option will examine each item for materials which utilize the same shader and associated settings. In the event that the materials are compatible, it will merge all the textures into fewer textures, and rewrite the UV coordinates of the final result to ensure that the result is more performant with fewer materials.

Compatibility note: For atlasing to work, a material must be using one of the included shaders, and the settings need to be compatible such that the item can be atlased. For some shaders, broader compatibility is achieved through the use of a packed LUT, which encodes more material information into a special texture, allowing more complex materials to be atlased together.

For more information on texture atlasing, and achieving the best results, please refer to this page:

Texture Atlasing - Atlas Resolution

This controls the final output resolution of the atlas. If the resolution is less than the texels required to render the textures at full resolution, then the textures will be shrunk to achieve the target resolution.

Texture Atlasing - Strip Textures

If this option is checked, then the following "Include" settings will be used. This allows you to remove specific textures from the result. For example, on performance restricted targets you may wish to remove normal or specular maps to save memory.

Miscellaneous Options - Optimize Mesh

If this option is checked, on some versions of Unity, this will re-order the resulting triangles and vertices for optimal GPU performance. Uncheck this option if you need to ensure vertex ordering remains consistent.

Performance Assessment

Linteum Character Kit's performance assessment has been tuned against a variety of professional video games (thank you, Polycount forums!) to give you feedback on how heavy a particular item is.

Note that the poly count will be aware of the decimation options you have selected, but will not factor in hidden surface removal. Likewise, the materials count does not factor in any merging or atlasing results; as a result, your character may be lighter than indicated.

Gauging overall performance for characters is an art as much as a science -- modern GPUs can perform wonders in ways that previous generations could not. As a general rule, poly count does not matter as much as you think it might, as most 3D applications are now fill rate/fragment constrained. The only way to truly assess your output is to test the results.

Automatic Presets

There are four preset buttons which allow you to rapidly adjust the character poly count and other options. These are blunt instruments, and it is recommended that you use the various options described on this page to adjust and fine tune the results of your finished product.

Build Character

There are three buttons in this section:

Refresh Button

This button reloads the data from your clothing and morphs. If for some reason decimation or any other options are not displaying a clothing item you recently changed or swapped, clicking this button will reload the data.

Preview Character

Clicking this button will build the character with all the specified options, but will not write the finished assets to disk -- instead, the character will appear in the scene. Note that if you create a prefab of the character, it will not save correctly. This option is purely for rapid previewing of various results, without waiting for the assets to be written to disk, or clogging up your assets folder with a lot of tests.

Build & Save Character

Clicking this button will build the character, and save the resulting assets to disk in a variety of Unity internal .asset formats. Creating a prefab from the character added to the scene will persist in the ways you expect it to.

Advanced Topics

Editing the Results

If you want to edit the finished product inside of a professional 3D modelling application such as Maya or Blender, the Unity FBX Exporter (available through the Package Manager) allows you to convert a finished prefab into an FBX file which can be edited. Be aware, you may need to manually restore materials for the trip back in.

Last updated