Use Cases - anticto/Mutable-Documentation GitHub Wiki

Use Cases

Mutable generates resources at runtime for your game. If your project needs content that can change dynamically, then Mutable is a good candidate to do that for you. It is usually referred to as a "Character Customization System", however it can do much more than generating characters.

It is designed to run efficiently using as little resources as possible and without framerate hitches for in-game use, however it is also useful as a content pipeline tool for some projects that just require the flexibility to create many asset variations inside the Unreal Engine Editor.

Unreal Engine already contains many tools that allow the creators to modify content at runtime. In some simple cases it is better to use those tools instead Mutable. See this great presentation for a summary of alternatives: https://www.youtube.com/watch?v=7IUpa3Pxqug

In short, if you just need some body part swapping and Texture effects that can be done in a Material, you are much better not using Mutable. However, Mutable can help you greatly if you need to:

  • Support deep customization, specially if there is a high combinatorial explosion of customizable parts.
  • Edit Skeletal Mesh geometry or Textures.
  • Manage complex customizations with many parts interacting between them.
  • Support texture effects that are not GPU-friendly (wrapping/planar projections, high number of samplers).
  • Combine multiple parts to reduce memory usage.
  • Reduce shader and draw call cost.
  • Create randomized crowds.

In general, Mutable translates some of the recurrent CPU and memory cost at generation time: to perform a customization, all operations are executed once, during the generation time, resulting in optimized resources ready to be use in-game.

Features

General

  • Complex customizations: The graph allows defining complex rules on how multiple parts must interact between them.
  • Collaborative: Artists can work independent parts. Merging of those is done later by Mutable (either at runtime or editor).

Mesh

  • Clip: Remove hidden parts for performance and avoiding z-fighting.
  • Reshape: Deform geometry based on interaction between characters parts.
  • Morphs: Bake morphs at generation time, striping morph data from generated Skeletal Meshes.
  • Transform: Move scale and rotate geometry.
  • Merge: Merge Skeletal Mesh to reduce CPU time, memory and replication bandwidth.

Textures

  • Projections Project textures without wrapping artifacts.
  • Layering:* Support infinite number of layers with different blend modes.
  • Packing: Pack multiple textures into a single one. Modify Skeletal Mesh UVs accordingly.

Other

  • Skeleton Merging: Automatically merge compatible Skeletons of different parts.
  • Metadata: Add metadata to the graph to create data-driven UIs.
  • Cloth Editing: Merge and edit cloth simulation data.
  • Physics Editing: Merge and deform collision physics assets together with the meshes.
  • Metahuman DNA
  • Grooms