---
updatedAt: 2025-10-28T16:43:30.000Z
agentTools:
  projectIndex: https://developer.didimo.co/llms.txt
---

# Popul8 Express Walk-through

<Image align="center" border={false} src="https://files.readme.io/618f4d6953246532b45e721a93a71beddba675134a2416382fca54c4028acd5a-header.png" />

**Popul8 Express** automates character creation, streamlines asset fitting, and generates infinite variations instantly. All you need is a single 3D base character that aligns with your technical and artistic requirements - **Popul8 handles the rest**. It creates diverse head and body variations, automatically fits your existing asset library to every character, and generates rich, game-ready crowds that you can seamlessly import into your engine of choice.

**Your specifications. Your topology. Your characters. Your assets.**

This guide shows how **Popul8 Express** automates character creation while preserving your unique art style.

***

# Concepts

**Popul8 Express** relies on six key concepts:

## ![](https://files.readme.io/d19e829489d78fc63a3d77851412882473a9b716b8e63c7c5b0975624c469668-template-icon.png) Template

A **Template** is a 3D model of a character that defines all the technical specifications required for characters generated by **Popul8 Express** (e.g., topology, bone based rig, textures, art style, etc.).

## ![](https://files.readme.io/fb15e8c59489ed1e69b82e2ac8d577a7f783159ef13ad1d2f9d2a34051d41686-shape-icon.png) Shape

A **Shape** is a new character that adheres to the Template’s technical specifications (e.g., same topology, same rig, same number of materials) but features unique head or body variations.

## ![](https://files.readme.io/bd33f96a2231cb3009806e8abda56b2aedcf8478e4311ebc2eaee9db1ff29e9a-deformable-icon.png) Deformable

A **Deformable** is any asset that complements a character, such as garments, grooms, accessories, etc.

## ![](https://files.readme.io/043f218d2da3537eef373d3897b828871bf40e5f9717fe82cb81c546fe09a046-animation-icon.png) Animation

An **Animation** is an instance of the Template's rig with a key-framed sequence defining a specific motion or action.

## ![](https://files.readme.io/a28c056bb314088c373eccb8d3c1367f7b7213fe5d1f48b282d164a15b99eade-crowd-icon.png) Crowd

A **Crowd** is a collection of characters that adhere to the Template’s technical specifications. These characters feature variations in Shape and Deformables, and are generated based on predefined rules.

## ![](https://files.readme.io/df40ed993752470b4a899fc10fea93d5cc3e2186fc75f0a30ae074b7364f7494-crowd-rule-icon.png) Crowd Rule

A **Crowd Rule** controls how different Shapes and Deformables are distributed within a Crowd, following specific ratios. It allows fine-grained control over your Crowds.

***

# Project setup

This section explains how to set up your project in **Popul8 Express** from scratch. If you're using the **DemoExpress** project you can skip these steps - <span style={{backgroundColor: 'rgb(255, 229, 180)'}}>**we've already set them up for you**</span> . However, you can use this guide when testing with your own assets.

## Creation

After [installing Popul8](https://developer.didimo.co/docs/installing-popul8-express),  you'll see the **Projects** menu, where all your projects will be available.

<Image align="center" alt="Projects menu." border={false} caption="Projects menu." src="https://files.readme.io/ffdea18635123f9f9beee6a99d17129e7f2a9aab7e1703d557a00e374a2b4d06-Screenshot_2025-08-08_at_12.10.20.png" width="600px" />

To create a new project, click on **Create Project**, enter a name for your project, and choose the folder containing your assets.

<Image align="center" alt="Creating a new porject." border={false} caption="Creating a new porject." src="https://files.readme.io/6090f4aac7f4931419a39722026511a0db40e663e4d19a63cd0ab16938429b98-Screenshot_2025-08-08_at_12.11.15.png" width="400px" />

For a smoother workflow, it's best to store your project in a location that also contains the assets you plan to import. We recommend organizing the **Location** folder into subfolders for better data management, including everything you’ll use - Templates with their textures, Shape variations, Deformables, and Animations.

<Image align="center" alt="Suggested structure for asset organization." border={false} caption="Suggested structure for asset organization." src="https://files.readme.io/b430d872dca38c83a36d17417cf72a1ebf4b6bd0dbf7f8d417833e5678ce539f-image.png" width="400px" />

## Importing assets

Once your project is initialized, you can begin importing your assets. You have two options:

* Import files (**Right-click → Import → File**).
* Import folders (**Right-click → Import → Folder**).

All imported assets will appear under the **Imported Assets** section in the **Project** tab.

**Supported file formats:**

* **3D Models:** FBX
* **Textures:** PNG, JPG and TGA - Type1, 2 and 10

## Asset Types

In the previous step, you may have imported various asset types, such as **Templates**, **Shapes**, **Deformables**, and **Animations**. To ensure **Popul8** correctly processes each asset and unlocks its full potential, you need to specify its type.

**How to assign asset types:**

1. Browse the list of imported assets.
2. **Right-click** an asset and select **Convert To →\[Desired Asset Type]**.
   1. Available types: **Template, Deformable Of, Shape Of, Animation Of**.

Since **Deformables, Shapes, and Animations must be linked to a Template**, we recommend setting up your **Templates first** before assigning other asset types.

<Callout icon="🪄" theme="default">
  ### Any Deformable linked to a Template will automatically be fitted to all Shapes associated with that Template.
</Callout>

<Callout icon="🪄" theme="default">
  ### Any Animation linked to a Template will automatically be retargeted to all Shapes associated with that Template.
</Callout>

## Setup Textures and Materials

You can refine the materials associated with any Template, Shape, or Deformable either before or after assigning its type. The material definition supports albedo, normal maps, and [mask maps](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@13.1/manual/Mask-Map-and-Detail-Map.html). Materials linked to a model are specified as its children, allowing you to select and assign the appropriate textures. For Normal and Mask maps make sure the textures are configured as Linear (not sRGB).

<Image align="center" alt="Example of a material assigned to a Deformable with linked texture maps in the DemoExpress project." border={false} caption="Example of a material assigned to a Deformable with linked texture maps in the DemoExpress project." src="https://files.readme.io/4d9e9b464b54bfebf1141a556a284885cf44babacf096edd082ff36323dad147-Screenshot_2025-10-28_at_16.28.19.png" width="600px" />

***

# Key features

## Shape Editor

The **Shape Editor** is a tool for creating head and body variations based on a **Template**. These variations can be generated using either:

* A **default deformation rig**, which can be **retargeted** to your own Template. Retargeting this rig to your template requires a **manifold** - an intermediary mesh that enables the Shape Editor to map supported head and body shape variations to your Template. Learn more about it [here](https://developer.didimo.co/docs/manifold).
* A **custom deformation rig**.

The **DemoExpress** project uses the default rig.

### How to use the Shape Editor

1. In **DemoExpress**, under the **Male Template**, select **Shape Editor** and click **Launch**.

   <Image align="center" alt="Launching the Shape Editor." border={false} caption="Launching the Shape Editor." src="https://files.readme.io/f6a75a66ac23cad8965c74b13de255cf57b87e6d57e611f5969f1d926d8d58d1-Screenshot_2025-10-28_at_16.29.35.png" width="600px" />
2. Once the editor opens, enter one of the **many body regions** to start modifying the head and body shape.
3. Adjust the sliders to achieve the desired look.

   <Image align="center" alt="The Male Template and two shapes generated with the Shape Editor." border={false} caption="The Male Template and two shapes generated with the Shape Editor." src="https://files.readme.io/4179d316b401337bdb61bc8f25f69b395eeee96debf498ccb0d4612f25c415cd-SE_gif.gif" width="600px" />

Alternately, to generate random variations, click the **Randomize** button in the top-left corner. Once you’re happy with your creation, click **Save and Exit** on the top right corner. This operation will take about 1 min, as all the Deformables will be fitted to the new Shape.

<Image align="center" alt="Using the Randomize feature of the Shape Editor." border={false} caption="Using the Randomize feature of the Shape Editor." src="https://files.readme.io/70625dd6a1d125ed737900787bf0170cfedc603016b6696631b745bfe3855370-ShapeEditorRandomization.gif" width="600px" />

<Callout icon="🪄" theme="default">
  ### Your new Shape will automatically appear under its corresponding Template, with all supported Deformables automatically fitted to it!
</Callout>

For advanced usage of the Shape Editor, check the [official documentation](https://developer.didimo.co/docs/shape-editor).

***

## Asset Fitting

### The Default Asset Fitter

When linking **Deformables** to a **Template**, we automatically fit them to **all Shapes** associated with that Template using default settings. These settings are stored in an object called **Default Asset Fitter**, which is automatically initialized with every project. You can find under the **Project** tab, in the *Resources > Asset Fitter* folder, located at the bottom of the list.

<Image align="center" alt="Default Asset Fitter location." border={false} caption="Default Asset Fitter location." src="https://files.readme.io/b26e587d7e0e82d3bf65ebf8255cd32f9f0760fe434e7f138503f51922bed979-Screenshot_2025-10-28_at_16.31.27.png" width="600px" />

### From Template to Shape

To view how the automatically fitted Deformables look, simply drag the intended Shape into the outliner, followed by the Deformable(s) you want to inspect. Below, we showcase how the Deformables ***Sports\_Shorts***, ***Sports\_Shirt***, ***Casual\_Shoes***, and ***BaseballHat\_01*** look on three different Shapes in the **DemoExpress**  project: the Template (first image), the Heavy Shape (second image), and the Goblin Shape (third image).

<Image align="center" alt="Original fit of the set of four Deformables on the Template." border={false} caption="Original fit of the set of four Deformables on the Template." src="https://files.readme.io/bfc98eb8fd94d007bdb972c1426055b370b7482d639065d9c3096afcf1988d24-fitter_demo_template.png" width="70% " />

<Image align="center" alt="Fit of the set of four Deformables on the Heavy Shape." border={false} caption="Fit of the set of four Deformables on the Heavy Shape." src="https://files.readme.io/2ae77d6399f9361a32a28bada8a3e863bc75d42d5b6f5c930ead4c1b77c59b81-fitter_demo_fat.png" width="70% " />

<Image align="center" alt="Fit of the set of four Deformables on the Goblin Shape." border={false} caption="Fit of the set of four Deformables on the Goblin Shape." src="https://files.readme.io/f4e36ed5e3e0a02a74b08b314d29aa520c3f2eff328e11dead55aa38236dfc40-fitter_demo_goblin.png" width="70% " />

### How to use a custom Asset Fitter

When fitting a **Deformable** to a **Shape** with **significantly different body proportions** from the **Template**, the default fitting method (**Fast** method) may not yield the best results. In such cases, you can create a **custom Asset Fitter**, link it to the **Deformable**, and adjust the settings for better results. Here’s how:

1. **Create a custom Asset Fitter** – Right-click on the Deformable and select **Create → Asset Fitter**. This will add a new Asset Fitter object under the Deformable.
2. **Link the Asset Fitter** – Select the Deformable, then drag the new Asset Fitter object into the **Asset Fitter slot**. This ensures the fitting process uses your custom object instead of the default one.

   <Image align="center" alt="Custom Asset Fitter linked to Deformable." border={false} caption="Custom Asset Fitter linked to Deformable." src="https://files.readme.io/2be903a795289431204d6e3394b77814baab6817e07879e61d525f8a41d2b8b0-Screenshot_2025-08-08_at_12.20.54.png" width="600px" />
3. **Customize the settings** – Open the new Asset Fitter object and adjust the parameters. Switching the Deformer from **Fast** to **Accurate** can significantly improve the fitting.

   <Image align="center" alt="Asset Fitter settings." border={false} caption="Asset Fitter settings." src="https://files.readme.io/cfb716d8d9678aef2520b059dac90293085e528efb5b3d79efaa0a3c9597e81f-Screenshot_2025-08-08_at_12.22.28.png" width="600px" />

In the **DemoExpress** project you can find a custom Asset Fitter in the **Goblin Shape**, on the Deformable ***Sports\_Shorts***. Switching to the **Accurate** Deformer instead of the **Fast** one greatly enhances the fit!

<Image align="center" alt="Effect of changing the Deformer from Fast to Accurate." border={false} caption="Effect of changing the Deformer from Fast to Accurate." src="https://files.readme.io/913deb963204b5456ef5c37460126f2cc7e7ea932bea539ac86685f5e0dbf49e-deformer_effect.gif" />

Even though the **Accurate** fitting method generally performs well - even when adapting **Deformables** to **Shapes** that differ significantly from the **Template** - minor intersections with the body may still occur. You can mitigate these by adjusting the **Expansion** slider on the Asset Fitter, which loosens the fit of the Deformable. Alternatively, you can manually fix each intersection - we’ll show you how in the [Handling Intersections ](https://developer.didimo.co/docs/popul8-express-walk-through#handling-intersections)section.

|                                                 Intersections on Shoes                                                |                                                 Intersections on Shirt                                                |
| :-------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------: |
| ![](https://files.readme.io/258e866c9721a4063e0454d9e0ef85c7a17eabee1ff0da903df2f6a26e21175c-intersections_shoes.png) | ![](https://files.readme.io/42ab178eec7f8d1c37227dc6da2fdf1df03a2d777161d2cd4ea31d170a95d4b5-intersections_shirt.png) |

### Fitting with rigidity

When fitting a Deformable to a Shape, certain regions—such as metallic pieces, armatures, buttons, buckles, or certain patterns—should remain stiff. However, they may deform unexpectedly during the fitting process. To preserve their structure, you can apply stiff regions using a custom Asset Fitter. Here’s how:

1. **Import stiff region masks** – Use binary masks painted in the Deformable's UV space, where stiff regions are represented in **white** and flexible regions in **black**.
2. **Define stiff regions** – In the Asset Fitter, click the **"+"** button to add a new stiff region, then drag the region mask to the **UV Masks** slot. Adjust parameters like **Stiffness Type** and **Bleeding** as needed.

   <Image align="center" border={false} width="600px" src="https://files.readme.io/a181e16273467a1dcc7ee81eeaabc45f10f27c76bb73cad989deb11750c20a87-Screenshot_2025-08-08_at_12.24.00.png" />
3. **Apply changes** – Click **Apply Changes** to update the Deformable’s fitting and preserve the intended structure.

You can see an example in **DemoExpress**, where a custom Asset Fitter with stiffness regions is applied to the **Goblin Shape** on the ***BaseballHat\_01*** Deformable.

<Image align="center" alt="Incorrect fitting artifacts when fitting the BaseballHat_01_Color1 Deformable to a Shape with elongated and pointy ears." border={false} caption="Incorrect fitting artifacts when fitting the BaseballHat_01 Deformable to a Shape with elongated and pointy ears." src="https://files.readme.io/8576dd3225a3f3e727aa9dc0fd6a4d52c4a1cd024d203356031476fcc6058e92-without_rigidity.png" width="70% " />

<Image align="center" alt="Correct fitting of BaseballHat_01_Color" border={false} caption="Correct fitting of BaseballHat_01 by setting stiffness regions on the back and brim of the Deformable." src="https://files.readme.io/939660d9c281e702a517dbc798290cf89dedabb8940f3bb10934ddea22cfd694-with_rigidity.png" width="70% " />

For more information about the usage of the Asset Fitter, check the [official documentation](https://developer.didimo.co/docs/asset-fitter).

***

## Handling Intersections

### Intersection Solver

The **Intersection Solver** is a tool that can be linked to any Deformable to **detect and solve intersections** with the Template or Shape it is fitted to - meaning, you can fix an intersection in the Heavy shape only.

#### How to use the Intersection Solver

1. **Create the Intersection Solver** – Right-click on the Deformable and select **Create → Intersection Solver**.
2. **Detect intersections** – Click **Verify** to detect any intersections between the Deformable and Template/ Shape.
3. **Fix intersections** – Browse the list of detected intersections and fix them individually, or apply all suggested fixes at once by clicking **Fix All**.
4. **Finalize the adjustments** – Either run **Verify** again to check for remaining intersections or save the updated Deformable by clicking **Apply Changes**.

You can see an example in **DemoExpress**, where an Intersection Solver is applied to the **Goblin Shape** on the ***Sport\_Shirt\_Color2*** Deformable. The solver is already in place, but if you want to experience the process yourself, simply press **Reset** to undo the applied fixes. Then, **follow steps 2 through 4** to detect and resolve intersections on your own!

<Image align="center" alt="Fixing all intersections using default settings." border={false} caption="Fixing all intersections using default settings." src="https://files.readme.io/6728bdc3c18d950f32bd1b67e95543b96758ff468868bf9e29ec6b505892a870-fix_intersections.gif" />

<Callout icon="🪄" theme="default">
  ### Fixing intersections between a Template and a Deformable will automatically trigger fitting updates on the Shapes. As a result, the Deformable’s fitting will improve across all Shapes thanks to the intersection fixes on the Template!
</Callout>

For more information about the Intersection Solver, check the [official documentation](https://developer.didimo.co/docs/intersection-solver).

***

## Create Crowds

A **Crowd** is a collection of characters that follow the Template’s technical requirements but feature variations in head and body shape, along with randomized Deformables assigned to each Crowd Character. You can create rules to control how these elements influence your Crowd's appearance.

### How to create a Crowd

1. **Create a Crowd Object**
   Right-click anywhere and select **Create → Crowd**. This will generate a new Crowd object under the **Crowds** section in the **Project** tab. You can now rename your Crowd.

   <Image align="center" alt="Locating the Crowds section on the Project tab." border={false} caption="Locating the Crowds section on the Project tab." src="https://files.readme.io/f85494d65482bc17efd50bbf412cea8a8d7026be6bee10ff6d7115997aeae148-Screenshot_2025-08-08_at_12.25.35.png" width="400px" />
2. **Instantiate Characters on your Crowd**

   1. A Crowd can include Characters from multiple Templates. To define how many Characters each Template should contribute:
      1. Add a new entry under **Characters Per Template**.
      2. Enter the desired number of characters in the **Character Count** slot.
      3. Drag the corresponding Template into the **Asset Object** slot.
   2. Click **Apply Character Count** to generate the Characters.

      <Image align="center" alt="Instantiating Characters in a Crowd." border={false} caption="Instantiating Characters in a Crowd." src="https://files.readme.io/fb8837c624789fc16d4016c666fc2f85130fec91ec9d3c3ae3a603ce162d16d2-Screenshot_2025-08-08_at_12.26.23.png" width="600px" />

      <br />

Your Crowd will now contain the correct number of Characters, all matching their respective Templates. From here, you can define rules to introduce variations and make your Crowd come to life!

### Shape blending types

Before moving on to **Crowd Rules** to customize your crowd generation, it’s important to understand how **Popul8** creates characters. Crowd characters are generated by blending existing shapes, and the blending method depends on the type of **Shape** you are working with. This type is determined by the **Blend As Absolute** toggle, which is off by default (meaning the shape is treated as a **delta** shape) but can be switched on to represent an **absolute** shape.

When a shape represents a relative change from the **template** shape, whether it’s localized (e.g., nose size, ear length, eye angle) or more global (e.g., overall height, body weight), it should be treated as a delta shape. Delta shapes adjust specific traits in relation to the template, rather than replacing it entirely.

#### Examples of delta shapes:

*Local variations:* larger nose, longer ears, eyes tiled upward, wider jaw, ...

*Global variations:* taller/shorter, thinner/fatter, more muscular/less muscular, ...

<Callout icon="📘" theme="info">
  **Important:**
  If you have multiple delta shapes affecting the same feature (e.g. different versions of height or corpulence), they should not be used together, as this can cause distortion. To avoid this, group them into the same crowd rule with a **Shape Blend Number** of 1 (default), so only one is randomly selected and applied at a time.

  In contrast, absolute shapes encode several combined differences from the template, such as fully unique heads that modify proportions, age features, or ethnicity. These are designed to replace the template rather than layer changes on top of it. Absolute shapes are blended simultaneously to create rich variation. Just make sure the **Blend As Absolute** flag is turned on, and set a **Shape Blend Number** of 3 or more in the rule for best results.
</Callout>

#### Key blending guidelines:

Treating absolute shapes as deltas will considerably limit the range of plausible variations, since only one shape will be selected and blended at a time. This prevents the system from combining multiple distinct features, which is precisely the strength of absolute blending.

Conversely, treating delta shapes as absolute can lead to unintended results, such as the template features appearing repeatedly across all blended characters, or combinations of conflicting deltas creating unrealistic shapes.

### Introducing Crowd Rules - rules for facial variation

You may want to introduce **facial variations** in your Crowd to enhance diversity. You can achieve this by blending between the **Shapes** associated with the Template of each Crowd Character.

Popul8’s blending method seamlessly combines the geometry and textures of your selected Shapes with varying weights, generating unique and natural-looking facial variations across your Crowd. You can use Shapes that you previously designed in the Shape Editor or Shapes designed in an external software and imported into Popul8.

In the **DemoExpress** project, you'll find **externally designed Shapes** assigned to the **Male Template** ( from ***African\_1*** to ***West\_Asian3***). These Shapes feature distinct head shapes and different albedos for the head, body, and eyes. When using a Shape to generate **facial variations** in a Crowd, which is a special case, you must enable the **Blend Textures** and **Blend As Absolute** toggles for each Shape.

<Image align="center" alt="Blend Textures and Is Facial Variation toggles." border={false} caption="Blend Textures and Blend As Absolute toggles." src="https://files.readme.io/670aefd6eda1ffe2630690e50f6464405312f8249356273d3b8d7babe9477de6-Screenshot_2025-10-28_at_16.38.30.png" width="600px" />

In the **Crowd Rules** section, you'll find a rule called **Rule MixFaces**, which defines how Shapes are blended within the Crowd to create facial variations. Here's how to create that rule:

1. **Create a New Crowd Rule**
   1. Right-click anywhere and select **Create → Crowd Rule**. This will instantiate a new **Crowd Rule**, which you can rename.
2. **Set Up the Rule for Facial Variations**

   1. In the **Crowd Rule** settings, specify that you're creating **facial variations** by setting **Shape Blend Number** to a value between 1 and the total number of Shapes included in the rule. This determines how many Shapes each character will blend together using varying weights. A higher number increases variation potential but may also result in more exaggerated or unconventional shapes.

      <Image align="center" alt="Shape Blend Type and Number" border={false} caption="Shape Blend Type and Number." src="https://files.readme.io/8be4234ae867c8a0ecf3d412059225e5c81e462443eb30b182e7577e8dd3ca19-Screenshot_2025-08-08_at_12.34.47.png" width="400px" />
3. **Assign Shapes to the Rule**

   1. Drag the previously labeled **facial variation Shapes** into the **Properties** section.

      <Image align="center" alt="Crowd rule for facial variations" border={false} caption="Crowd rule for facial variations" src="https://files.readme.io/7b18db4506ee70c54fcaee1a9a6760e469beb25a967aded130c4e42f7a31bf97-Screenshot_2025-08-08_at_12.35.56.png" />

Now, you’re ready to use this rule in a Crowd! To apply it:

* Open your **Crowd** object.
* Drag the newly created **Crowd Rule** into the **Crowd Rule Editor Graph**.
* Link it to the **Crowd**, as shown below.

<Image align="center" alt="Linking a rule to the Crowd in the Crowd Rule Editor." border={false} caption="Linking a rule to the Crowd in the Crowd Rule Editor." src="https://files.readme.io/c82e0ea8cff9d2a603a2479cedea5409e586e7a9d750a7b71c4ecdee3f2b5bf0-Screenshot_2025-08-08_at_12.37.24.png" width="600px" />

<Callout icon="🪄" theme="default">
  ### Any new rule linked in the Crowd Rule Editor will automatically update your Crowd!
</Callout>

You can now drag your **Crowd** to the **Outliner** and instantly see all the variations you've created!

<Image align="center" alt="A Crowd with facial variations." border={false} caption="A Crowd with facial variations." src="https://files.readme.io/5fce4fd8b5bf333bddfe18492abda751c78172c9e6ff509c323c15522e66b99c-mix_faces_crowd.png" />

### Crowd rules for height and weight variation

You can also create rules to achieve **variations in body weight and height** in your Crowd! You can create simple rules like the ones shown below, where we use two Shapes to create **height variation** (the **Tall** and **Short** Shapes) and **weight variation** (the **Thin** and **Heavy** Shapes).

Setting the **Shape Blend Number** to **1** will provide natural body variations in your Crowd.

|                                                   Crowd Rule for height variation                                                   |                                                   Crowd Rule for weight variation                                                   |
| :---------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------: |
| ![](https://files.readme.io/0dc4cc0e37898232088940dc868984bd728f8689f3895ab0038eed1669495cba-Screenshot_2025-08-08_at_12.39.01.png) | ![](https://files.readme.io/2bcf18ab99b0374a336607c206f580564ca5386842d390c7fb93556100e4fd77-Screenshot_2025-08-08_at_12.39.23.png) |

You can see below the effect of linking these two rules on the **Crowd Rule Editor** .

<Image align="center" alt="Adding the weight and height rules to the Crowd Rule Editor.Adding the weight and height rules to the Crowd Rule Editor." border={false} caption="Adding the weight and height rules to the Crowd Rule Editor." src="https://files.readme.io/82501f181baba79f31bfaabbaa9431b3806239d8cbca865b6539f757fe618f4c-height_weight_graph.png" />

<Image align="center" alt="A Crowd with facial, weight, and height variations." border={false} caption="A Crowd with facial, weight, and height variations." src="https://files.readme.io/77fa1409301bb1620583c265c924a625ad105f46ee3a33b0f85ba437494311cb-height_weight_crowd.png" />

### Crowd rules for distribution of deformables

You can create rules to **distribute Deformables** across the Characters in your Crowd using the **same procedure as the body height and weight rules**.

You can design separate rules to distribute Deformables for different body areas, such as the **legs, torso, feet, head, and more**—the choice is yours!

<Image align="center" alt="Adding a few rules to distribute Deformables in the Crowd." border={false} caption="Adding a few rules to distribute Deformables in the Crowd." src="https://files.readme.io/888d35c6026230fe11936c906984a5d443759b84f8198d2cab7b0d55f906c510-deformables_rules.png" />

<Image align="center" alt="A Crowd with facial, weight, and height variations, and randomized Deformables." border={false} caption="A Crowd with facial, weight, and height variations, and randomized Deformables." src="https://files.readme.io/b4107338ffb3613a9be7079e1e16dee6db631016f6c1c325df1500fe6f9f5482-deformables_crowds.png" />

### The power of randomization

Not happy with how a Character looks? Want to **tweak** a specific feature—maybe make it a bit taller or adjust its proportions? Or perhaps the overall **look** of your Crowd isn’t quite right, and you’d like to try again. You can easily **randomize** either a **specific Character** from the Crowd or the **entire Crowd** with just a few clicks!

**Tweaking traits of a Crowd Character**

<iframe src="https://drive.google.com/file/d/1qjF0kx-k1UwOqqnLU8i8j-qGukDR1euQ/preview" width="640" height="340" allow="autoplay" />

**Randomize Crowd Character**

<iframe src="https://drive.google.com/file/d/1nyVxpiz31-8rUciVV0wz38-4FeL7aZuc/preview" width="640" height="340" allow="autoplay" />

**Randomize a Crowd**

<iframe src="https://drive.google.com/file/d/1ZXlQAIu4HDZHRheLSo_NrLFNZhaXmwJx/preview" width="640" height="340" allow="autoplay" />

<br />

### Cross-Species Creations: Hybrid Crowds Unleashed

Why limit yourself to just head and body variations? Use the **Crowd’s blending system** as a creative playground to bring **novel creations** to life!

In **DemoExpress**, we created a hybrid Crowd by **blending several human Shapes with a Goblin Shape** to showcase the true power of blending. ⚠️ **But be warned**—with great power comes great responsibility! Be sure to fine-tune your Crowd rules to ensure the results match your expectations.

<Image align="center" alt="A crowd that blends human Shapes with a Goblin Shape." border={false} caption="A crowd that blends human Shapes with a Goblin Shape." src="https://files.readme.io/288d7e976899a41dc42ee8ee38cb9d7bccbc4c15b8fd5ca6e8790799ef706f2e-Screenshot_2025-08-08_at_12.41.29.png" width="600px" />

### Optimizing Crowds with Culling

Rendering large Crowds can be computationally expensive, regardless of your engine choice. To reduce this load, you can **cull parts of the body** of your Crowd Characters that are occluded by the **Deformables** assigned to each Character. (*Note: Culls are not currently applied to assets outside of the crowds*). To do this, you’ll need to define **cull masks** for each mesh of the Character, for each Deformable. Here’s how:

1. **Enter the intended Deformable** under the Template.
2. **Create an item** in the **Cull Data** section.
3. **Drag a cull mask** to the **Texture** slot and assign the appropriate **Template mesh** to the **Mesh** slot.
4. Repeat steps 2 and 3 for all meshes that need to be culled.
5. Click **Apply Changes** when you're done.

Finally, enter a **Crowd Character** using the Deformable with the Cull Data applied to see the culling in action!

<Callout icon="🪄" theme="default">
  ### Assigning cull masks to a Deformable under a Template will propagate the culling information to the fitted Deformable on the Shapes, and will automatically be used in your Crowd Characters!
</Callout>

<Image align="center" alt="Assigning Cull Data to the body mesh of the Template on a specific Deformable." border={false} caption="Assigning Cull Data to the body mesh of the Template on a specific Deformable." src="https://files.readme.io/62a4e27182fb40a030d1c06ff533e940663b8fbe4494a1dbb9bc35bc449e4cb0-Screenshot_2025-08-08_at_12.44.01.png" width="600px" />

<Callout icon="🪄" theme="default">
  ### Culling is also an alternative to solve intersections between a Deformable and a Shape/ Template in a Crowd!
</Callout>

<Image align="center" alt="The effect of applying Cull Data in a Crowd Character." border={false} caption="The effect of applying Cull Data in a Crowd Character." src="https://files.readme.io/6eff43bbcf6b82afa11309e4d7c4f53d4eef373c516ac1054c77af647b2f4353-culling.gif" />

***

## Preview Animations

You can preview an **Animation** at any time on a Template, Shape, Crowd Character, or even an entire Crowd! Simply expand the **Animation dropdown** menu and select the desired item to see it play on-screen.

<Image align="center" alt="Animation preview on five Crowd Characters." border={false} caption="Animation preview on five Crowd Characters." src="https://files.readme.io/d1fd26f7bb5bd43e428275d0e7f478c0a827a18c02b2c75d30ead080a49e902d-Screencast_2025-04-03_15_32_25.gif" width="100% " />

***

## Export & Bridges

Once you're happy with the Crowds you designed you can export them in multiple ways:

* Bridge to:
  * Unity, following the steps described [here](https://developer.didimo.co/docs/unity-bridge).
  * Unreal Engine, following the steps described [here](https://developer.didimo.co/docs/unreal-bridge).
* Export the Crowd files by right-clicking the Crowd and selecting **Export as → Crowd**.
* Export an individual Crowd Character by right-clicking the Character and selecting **Export as → Single**.

You can also export any Template, Shape, Deformable, and Animation by right-clicking and selecting **Export as→ Model**.

<Image align="center" alt="A Crowd exported to Unity through the Unity Bridge." border={false} caption="A Crowd exported to Unity through the Unity Bridge." src="https://files.readme.io/459b04b15f505cbd9a0ffb0b2bdd3b3d2c6a9c7ac99ff653a12be4b12f09323f-Screenshot_2025-04-03_at_16.56.52.png" />