# Lab3 Studio content and Character Builder Documentation

Here you can learn more about the content and our framework, shipped with each character

**Our Fab store:**

{% embed url="<https://www.fab.com/sellers/Lab3%20Studio>" %}

{% hint style="info" %}
If you need any help along the way, don't hesitate to join [Discord](https://discord.com/invite/usPdGzqF5Q)
{% endhint %}

{% hint style="warning" %}
This documentation is still early in development
{% endhint %}

### Jump right in

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>What is Character Builder?</strong></td><td>Learn more about our character customization solution for Unreal Engine 5.3 and up</td><td></td><td></td><td><a href="/getting-started/what-is-character-builder">What is Character Builder?</a></td></tr><tr><td><strong>Quick Integration Guide</strong></td><td>Learn the basic integration steps </td><td></td><td></td><td><a href="/getting-started/quick-integration-guide">Quick Integration Guide</a></td></tr><tr><td><strong>Tools overview</strong></td><td>Learn more about our tools that help you leverage all of the capabilities</td><td></td><td></td><td></td></tr><tr><td><strong>What packs do we have?</strong></td><td>Learn more about all of the content we have</td><td></td><td></td><td></td></tr></tbody></table>

### Support

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Legacy Pack Access</strong></td><td>Learn now you can get Legacy versions of the packs even if they're no longer for sale</td><td></td><td><a href="/support/accessing-legacy-versions">Accessing Legacy Versions</a></td></tr><tr><td></td><td></td><td></td><td></td></tr><tr><td></td><td></td><td></td><td></td></tr></tbody></table>


# What is Character Builder?

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FRG8ddL4Bs7wOdOhlY5fj%2FWICB_01.png?alt=media&amp;token=e3262053-45e3-411e-a329-8956fd85c8ba" alt=""><figcaption></figcaption></figure>

Character Builder Framework is advanced and highly customizable modular character setup that comes with each and every pack we ship. It's main purpose is introducing cross-pack compatibility to our content.\
\
It goes around the typical limitations of Unreal Engine 5, allowing you to combine multiple packs into one, giving exponential customization capabilities with every single additional pack, while improving performance thanks to the Mesh Merger plugin that comes with UE5.&#x20;

### Architecture Philosophy

It was built with a simple idea in mind - the least hardcoding, the better. That's why you won't find typical enum-based setup here with pre-defined character parts. We use flexible setup with Gameplay Tags and Data Assets instead. \
\
We also were quite weary about possible large amounts of content and hard references, which will inevitably flood your GPU texture buffer. That's why we use careful asset management with soft references as much as possible to optimize it down only to the needed resources. \
\
Another point was cross compatibility between animation blueprints across the packs and different skeletons. Our solution was building a special layer setup, which allows you injecting any anim blueprint in the final skeleton of the character from any pack. No need to merge skeletons in the editor to have anim-dynamics or rigid body setup shared between two different models.&#x20;

<div data-full-width="false"><figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2Fw8HSVYe49WJnt7uAQL2x%2FWICB_02.png?alt=media&amp;token=7ac007e9-83ce-4072-b393-28a1c2ae246c" alt=""><figcaption></figcaption></figure></div>

Also, since the end result is a unique mesh and unique skeleton, we can retarget it live. Meaning, you can have any setup you can think of, for example give your character werewolf legs. \
Of course, we don't do such things, however here's a bit more conservative example of what skeletons look like:

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2F0m5oEVJFFPuquqGQJRmX%2FWICB_03.png?alt=media&amp;token=83840f96-c2d4-4adc-993a-080e5f9b6ed0" alt=""><figcaption></figcaption></figure>

These characters have different heights due to their shoes, different skeletons (still sharing the same UE5 Quinn skeleton) and combination of items from different Marketplace packs (from our store), but they still work together perfectly.&#x20;

### Additional features

There's lots and lots to talk about here. Our framework is still in development, however we already have a large number of things which distinguish us from similar products on the market. \
\
Such as **Mesh Replacement System**\
A lot of character pieces won't be compatible from the box with each other. Lots of clipping and misalignment, especially with multiple layers. In the example below you can take a look at character which has shirt with tie and two armors equipped. One has the clipping fixed automatically by the framework and other doesn't have it set up yet:

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2Fqqml1gauoUxV5hx9kNsX%2FWICB_04.png?alt=media&amp;token=6e9e14d4-c556-4165-b270-15020f9f3f4f" alt=""><figcaption></figcaption></figure>

It works across the packs too, thanks to the data driven approach. We update the packs from time to time to include new additions and fixes to the old content. \
It allows us to have custom fit items even when they weren't designed to work together like this:

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FqGhg7EPMIMU905t2Dex9%2FWICB_05.png?alt=media&amp;token=c4f5cf5a-3ae0-49fa-87af-126ff6291cfa" alt=""><figcaption></figcaption></figure>

**Preset System** is also quite flexible\
You can create presets through our example customization map and save them locally:

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FIwPYQTUhnTdH2uOn4UNq%2FWICB_06.png?alt=media&amp;token=56dde7bc-543e-43da-8603-0bd58b6b2afe" alt=""><figcaption></figcaption></figure>

To later convert to permanent Data Asset preset using our tool (shipped with each pack):

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FNQrDSXOVHgNw6OywmcIb%2FWICB_07.png?alt=media&amp;token=2327b654-be69-48f1-a742-41bfa2d93d96" alt=""><figcaption></figcaption></figure>

And both of them can be used to fetch your character data at runtime:

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FuU46GNnRjLyXIoFBdc45%2FWICB_08.png?alt=media&amp;token=dc13cf10-4191-49e1-9962-a0a82e4b95cf" alt=""><figcaption></figcaption></figure>

And there's many many more things, such as filtering items by body type, our consolidation tool to bake packs together, item bans (depending on what's equipped), different models of handing IK etc.&#x20;


# Quick Integration Guide

On this page we will cover quick setup to get the projects up and running as well as overview integration examples shipped with each pack. \
\
To start off, once you import the pack to your project and try to run it, it will give you some errors by default. \
To resolve this and possible other issues you want to follow the steps outlined in this guide.

## Enable Skeletal Merging plugin

{% hint style="danger" %}
Doing this step will remove compilation errors&#x20;
{% endhint %}

What we have to do is enable **Skeletal Merging** plugin first. You can do that by going to **Edit - Plugins**, enabling **Skeletal Merging** and restarting the editor.&#x20;

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2F79yW1t9aIjU6aAHVHyCA%2FQIG_02.png?alt=media&amp;token=277797b6-1b8c-49b3-af01-7b973d5f1fa1" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FLhgTaYPsJqufEpWRbLw7%2FQIG_03.png?alt=media&amp;token=6dc7a68f-30d7-4976-860a-c2aa45008665" alt=""><figcaption></figcaption></figure>

## Set up Project Tags

{% hint style="warning" %}
Without this step it could run fine, but you may experience issues in the packaged build
{% endhint %}

You want your project to include Gameplay Tags from the Data Table supplied with each instance of Character Builder. It won't break the project in an obvious way by not doing this step, but it is recommended to set it up to avoid all kind of issues which are not accounted for. \
\
To do so you want to go to **Project Settings** and type **Tags** in the search bar. In the **Gameplay Tag** **Table List** you want to select **ProjectTags** data table which by default can be found at: /Content/***\*ProjectName\****/CharacterBuilderComponent/Blueprints

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FNzfkL0gJYHvkJV70jdul%2FQIG_04.png?alt=media&amp;token=b770cfe6-27df-40db-8d37-b7447b88f081" alt=""><figcaption></figcaption></figure>

## Depth Stencil Settings

{% hint style="warning" %}
If your customization map doesn't look like screenshots you need to do this step
{% endhint %}

And last but not least, we want to set up settings for the way engine works with Depth Passes. In 5.4 you might not have to do it, but it is better to double check. \
\
This is needed in order for preview scene to render properly, our post process material is taking advantage of Depth Pass to isolate the character out, also some functionality of the plugin that has to do with Depth Pass is tied to this. \
\
It is not necessary for the functionality, but certainly is for aesthetics.&#x20;

Go to **Project Settings** - **Custom Depth Stencil Pass** and select **Enabled with Stencil**

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FmY3Gi34hX2F5bFBHXBBy%2FQIG_05.png?alt=media&amp;token=33bccf43-a92c-4d6d-b64a-51c4d1a6c74c" alt=""><figcaption></figcaption></figure>

## Example Integration

Lets break down typical integration example you can find in **\*MarketplacePackName\*/Blueprints/BP\_ExamplePawn\_\*\***

It has invisible mesh which drives animation and **CharacterBuilderComponent**.&#x20;

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2F0SaTMUJ1rq36VSzTIenl%2FQIG_06.png?alt=media&amp;token=416d02fe-0acf-49c7-8c94-4f427adccb3f" alt=""><figcaption></figcaption></figure>

You can click on **CharacterBuilderComponent** to see its settings in **Details Tab**&#x20;

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2Ftt32z0ic71OvGAtP2QiL%2FQIG_07.png?alt=media&amp;token=a0c19abb-a229-44b0-abc4-14f9ea54031c" alt=""><figcaption></figcaption></figure>

Lets break down what each of them does:

* **Pass Offset to IK**  - a lot of shoes have offsets to avoid clipping into the ground. If you have **BPI\_AnimBP** interface implemented your driving animation blueprint you can pass it through it to the IK solver to offset your character. If not, it will simply offset the mesh locally on the component.&#x20;
* **Only Equip Exactly Matched** - when this is checked, component fill its equip list from the supplied Item Data Asset list. If unchecked, it will leave character naked, unless you explicitly set which equips to use.&#x20;
* **Used With UI** - If true will execute UI related functions, interfaces and updates
* **Use Custom Depth and Depth Stencil Value** - Custom Depth Settings
* **Master Save Name** -  Local Preset System runs on a single Master Save for data management. Here you can set it's name, it is spawned automatically. You can distinguish your presets that way, if you need it.&#x20;
* **Auto Fetch Materials if Mat List Empty** - You can explicitly set material collections on each item by Tag. This option fetches the first Tag from collection and assigns it, instead of just using materials from the mesh itself.&#x20;
* **SCurve Global** - This controls values of the textures. At default Unreal lighting, 1.6 is good. If you have more dim environment and don't want textures to look too dark, you can set the value at around 1. For instance, customization map uses value of 1.&#x20;

You can set these settings at the runtime too using **Set Character Builder Settings** node:

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FQYBRePD2zB8LMY9XDMz2%2FQIG_08.png?alt=media&amp;token=4a795a5e-852b-435e-add0-8559ce9d3c3b" alt=""><figcaption></figcaption></figure>

To initialize the component, all you have to do is use Set Character Data node:

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FNb9crC4Q3LmnhN6h7r3u%2FQIG_09.png?alt=media&amp;token=6a3a57ab-2adc-4891-9111-d91bc53db6e3" alt=""><figcaption></figcaption></figure>

If you dont check **"Re-Init Character"** you also need to run **Initialize Character** node. \
\
Lets break down what each variable does:

* **Character Definition** - This is your Character Data Asset. It has a list of basic naked parts (Torso, Arms, Hands etc) and head mesh along with a few other options (like your head anim blueprint for example). Each character pack comes with one or two. You can select the one you want to use from the drop down here.&#x20;
* **Item Definitions Soft** - List of the item Data Assets to use with this character. If you have wrong body type (such as equipping female items on male) they won't go through the safeguard.&#x20;
* **Primary Tags** - Data Asset containing allowed Item Tags for this character, most of the time you leave this default.&#x20;
* **Parent Component** - mesh component to retarget animation from.&#x20;
* **Material Map** - Item ID - Material Tag map to set textures for each item
* **Item ID Map** - Slot Tag - Item ID map to explicitly select equips for each slot (if they are present in Item Definitions List)&#x20;

Typically it would be too much trouble setting this up manually. Usually it is done via preset system.&#x20;

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FeHznG1Y0taJGqswJHAnB%2FWICB_09.png?alt=media&amp;token=c28193cc-890e-4d96-9b59-e2b9f13307eb" alt=""><figcaption></figcaption></figure>

Function **Load Character Builder Preset** is called to fetch data from either locally saved preset, or Data Asset (if you convert it via our tool). You can set up the preset in the **Customization Map**

From there simply launch the game and enjoy, it should work. If you wanna see examples of explicitly setting up the nodes, they are in the blueprint.&#x20;


# Accessing Legacy Versions

Some of the packs released without **Character Builder Framework** were built in a slightly different way and had slightly different art. As the time goes on we're circling back and updating both art and the framework. As a consequence, sometimes we have to drop support a range of engine versions for which we can't develop. \
\
If you bought the pack with intentions of using it at **5.0-5.2 Unreal Engine** versions and it is no longer there or you want to access old version of the art, this page will guide you through the process. \
\
Current list of packs which had **5.0-5.2** support before and moving on will be available only as **5.3+**

* Stylized Modular Character: Tess (still available)
* Business Male 01 Modular (still available)
* Stylized Modular Character: Liberty (still available)
* Stylized Modular Character: Ivy (still available)
* Stylized Modular Character: Jun&#x20;

{% hint style="success" %}
With Fab release now we're able to push latest version to be accessible from within the launcher, and Legacy in the "Additional Files"
{% endhint %}

Click the Download button on the right hand side of the page, where you will be able to find the files alongside source .FBX archive for products which include them

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FlOY5qq3hgCounosjqeiR%2Fimage.png?alt=media&amp;token=ed78f1c1-173d-4eb2-ba1f-4400aa340720" alt=""><figcaption></figcaption></figure>


# Common Issues

{% hint style="success" %}
Unreal Engine 5 is quite a complex engine with a lot of version and platform specific nuances. \
This page aims to troubleshoot and solve common problems you may encounter.&#x20;
{% endhint %}

{% hint style="warning" %}
This page is getting updates as we gather feedback
{% endhint %}

### Content:

* [Character stopping animation after a few frames](/support/common-issues/character-stops-animation)
* [Character is unable to move with the default character controller](/support/common-issues/sample-character-unable-to-move)
* [Skeletal Merging plugin nodes corruption](/support/common-issues/skeletal-merging-nodes-corruption)


# Character Stops Animation

Process of setting up the character is explained in the [Quick Integration Guide ](/getting-started/quick-integration-guide)\
\
Sometimes even if you did everything correctly, you might encounter a bug where your character would freeze. \
\
It happens because when you use "invisible" mesh (skeletal mesh with a single small polygon) as your parent mesh for the generated character, it gets culled out and bones stop refreshing. \
\
To fix it, all you need to do is force the mesh to always tick and refresh bones like on the screenshot below:

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FdXS6ij6blsQMongf6UNP%2Fimage.png?alt=media&amp;token=f14bc17d-203d-4a1b-88f4-9afd3b729169" alt=""><figcaption></figcaption></figure>


# Sample Character Unable to Move

Some of the packs are shipped with the deprecated settings for movement input. It was never meant to be used in production setting and serves simply as an example from the old Third Person Sample. \
\
From 5.4 and up new way of setting up movement is Advanced Input plugin. \
Most packs actually come with all of the required files included.\
\
The best advice here we can provide is to look up relevant guides about it.\
\
Brief explanation on how to set it up:\
First, set the mapping for your Player Controller:

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FzvTMutqm63D7ZaoaULmb%2Fimage.png?alt=media&amp;token=701afe0d-7ca7-4c58-8959-fc926f639e7b" alt=""><figcaption></figcaption></figure>

And then set up the movement similar to this (this is not the best example tho):

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2Fu92KgtKkUsn0xEnX01Hm%2Fimage.png?alt=media&amp;token=04648104-aa1c-4529-948c-0440fec79923" alt=""><figcaption></figcaption></figure>


# Skeletal Merging Nodes Corruption

This is fairly uncommon issue, but sometimes it happens when using Skeletal Merging plugin. \
Even if you have the plugin enabled, nodes in the blueprint can randomly get corrupted like on the screenshot below. Refreshing and reconnecting them helps for a session, but after project reload it will get corrupted again.

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FVfXwdv6NJWf65SJ6rGgg%2Fimage.png?alt=media&amp;token=785d65c2-dd8e-4b2b-9085-d1755fdb5953" alt=""><figcaption></figcaption></figure>

To fix it, you going to have to change the order of your project module loading from "Default" to "PostDefault". You can do it by going into your .uproject file and changing it like this:

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FueuwTU9EjUYo444XcwTs%2Fimage.png?alt=media&amp;token=b48f42bb-a7db-4348-badf-224f2100b5ab" alt=""><figcaption></figcaption></figure>

Once you do that, the issue should be gone.&#x20;


# Changelog and Roadmap

{% hint style="danger" %}
This page is deprecated due to Mutable coming out into Beta with Unreal Engine 5.5 release. \
\
Currently we're working on adapting Character Builder to run off Mutable. More info and updates in our Discord.&#x20;
{% endhint %}

### Version Changelog

**0.10A Initial Release** - May 12, 2024\
First release of the framework. Barebones version with very few QoL features for runtime usability, but nearly feature-complete back end

**0.11A** - July 24, 2024 \
New features: \
**- Mesh replacement expansion** \
*Added sorting by priority to resolve conflicts and allow for more complicated combinations* \
**- Item bans** \
*Allows to blacklist certain items from being equipped together to resolve impossible cases of item combination. Reflected in the UI as well* \
**- Presets** \
*Major feature allowing to save and load presets both through UI as well as at runtime. Makes character customization and setup incredibly easy* \
**- Character material hard overwrite** \
*Small temporary feature letting you overwrite skin material of the character through Character Data Asset to make the framework ignore body material textures set by Item Data Assets*

**Bugfixes:**

* Fixed a bug with material data assets not loading sometimes in in preview scene, making UI experience with material selector clunky and unpleasant, if textures are not preloaded in memory
* It is now impossible to equip items with a wrong body type. Also, they will not show up on the UI
* Proper inheritance for demo content to solve issues with External Assets
* Various small bug fixes and function/variable cleanup

**0.12A** - August 24, 2024\
New features:\
**- Global SCurve adjustment on all materials**\
*From now on all character materials have this parameter exposed, you can set it in the component settings. This expands or contracts value range (depends on the parameter set) to help characters look great in any light setup.* \
**- Consolidation tool** \
*This tool, shipped with any 0.12A and up packs, allow to move and consolidate multiple Character Builder instances. It can also be used to move folders. Big quality of life change to make packs more usable together.* \
**- Save to Data Asset conversion tool**\
*This tool allows to convert locally saved presets to more permanent Data Assets, which is much easier to use.*&#x20;

**0.13A (Current)** - September 12, 2024

New features:\
**- Expanded functionality of Mesh Replacement System**\
More sophisticated and slot-targeted functionality to avoid doing manual entries in case of more typical edits across large number of items. &#x20;

### Current plans

Right now we're working on converting all legacy packs to the latest version (0.12A). It takes a while, since old content was done in a slightly different way, we're reworking some models and making sure that replacement meshes combos are working great across \~70 different items. \
\
Other goal is just developing more content.&#x20;

### Roadmap

In light of upcoming marketplace changes and a few other things going on the background, these goals might not be realistic, nobody knows what future holds at the moment. However, here's planned changes and hopeful timeframes for them:\
\
**0.15A** - UI overhaul, possibly with Common UI. Planned for late autumn/early winter 2024\
**0.20A** - Functionality expansion and more interaction through UI with Character Data Asset. Ability to customize faces, textures and base materials through the UI. Planned for 2025 with more concrete dates and timeframes early next year.\
**0.25A** - Standalone plugin with huge runtime performance boost. Late 2025


# What is an Item ID

{% hint style="info" %}
You might want to learn more about [Data Assets and their function](/character-builder/data-assets-and-their-function) first to have more insight on the topic
{% endhint %}

Every single item provided by the packs has its own unique ID assigned in its respective **Item Data Asset**. \
\
It is an integer of length of 9 digits with a format of **XXYYYZZCC**

**XX** - body type, currently in use - 10 and 20 (female and male) \
**YYY** - pack number item belongs to\
**ZZ** - item number in the pack\
**CC** - variation of the item

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FPqvCS41HU0CIr5G51moA%2FWID_01.png?alt=media&amp;token=f2c04cdc-95a3-4e7a-aa0c-eca7490f3a00" alt=""><figcaption><p>Example Item Definition Data Asset</p></figcaption></figure>

{% hint style="info" %}
Learn more about [Body Types](/character-builder/body-types)
{% endhint %}

ID is used a lot to indirectly and non-destructively reference items across different packs which might or might not be present in your project/selection of items for the character.&#x20;

Usage of Item ID:

* Selection of currently equipped items
* Setting material collection tags
* Picking right alternative meshes for Mesh Replacement System
* Item filtering by body type
* Banning incompatible items from being equipped
* UI interaction with component


# Body Types

Framework allows for having as many body types as you want. \
However, currently in use there are only two: basic male and female. \
Currently there is no plans to include other body types, but things can change in the future.&#x20;

<div><figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FOP90lqDfM00o9eIMDVuT%2FBT_01.png?alt=media&amp;token=14fcc976-472a-4d44-81fb-169c7fbea032" alt=""><figcaption><p>Basic Female</p></figcaption></figure> <figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2F0aUlSgxKBapA5fzX12TR%2FBT_02.png?alt=media&amp;token=bdb0dac4-0b94-4199-b86a-d23152b97ed3" alt=""><figcaption><p>Basic Male</p></figcaption></figure></div>

Both of them are arbitrary split into 5 parts plus head mesh (head is a separate mesh):

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FjxjHP7nsO9Xfq2Sil72C%2FBT_03.png?alt=media&amp;token=c003867d-c660-4bca-8f82-cb37cc46b1c3" alt=""><figcaption></figcaption></figure>

Naked version is a default state of the character. The nature of the framework is such that it will always load these parts, as defined in the Character Data Asset, which is needed to initialize the component. \
\
It is called **Default Item Set** as illustrated in the following screenshot

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FcLTSJxsxIye4i0wdyGG1%2FBT_04.png?alt=media&amp;token=0d339338-4640-4a56-b39d-8b2380c1d241" alt=""><figcaption><p>Default female character Data Asset shipped with all female packs</p></figcaption></figure>

Each body part has it's respective tag defined in its **Item Definition Data Asset**. \
Once you equip the character with an item which has the same tag, the body part gets hidden.\
Example - equipping pants. You no longer will need legs mesh since there's no use for it. \
&#x20;\
In case of items which cover more than a single body slot, such as sweaters, they can ban additional body tags. Only **Default Item Set** is affected by such bans. \
&#x20;

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FdZpZ1g29iTNqbKpwJPS6%2FBT_05.png?alt=media&amp;token=478903d3-3ac6-41cb-9629-f7bc975e50d0" alt=""><figcaption></figcaption></figure>

As mentioned before, all of this is an arbitrary and can be reconfigured to include as many or as few parts as needed. You could have entire character made out of only 3 configurable sets of parts, or in our case, have lots of different layers.&#x20;


# Data Assets and their function

{% hint style="warning" %}
This page is unfinished
{% endhint %}

Currently the framework is built using 5 different Data Asset types.&#x20;

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FnLv6gMjaqARCLSVHsCq1%2FDAF_01.png?alt=media&amp;token=c83a5121-7701-46ce-a865-30afbdcdc75f" alt=""><figcaption></figcaption></figure>

### Primary Tag Definition

{% hint style="info" %}
Learn more about [Body Types](/character-builder/body-types) and basic parts\
Also take a look at [Quick Integration Guide](/getting-started/quick-integration-guide) for context of using this Data Asset
{% endhint %}

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2Fd0W6DaCd3ksv9Xt6sHEb%2FDAF_02.png?alt=media&amp;token=1b60db01-9be1-40e1-81d2-56e1f91f8509" alt=""><figcaption><p>Default DA_PrimaryTags asset supplied with all characters</p></figcaption></figure>

This Data Asset is supplied by default with all characters. It contains a list of all possible equipment slots that will be processed by the instance of the framework you feed this Data Asset to.&#x20;

Outlined in red are default body part tags.&#x20;

Outlined in green are additional tags for additional items, they are not represented by the default item. \
You can make a copy of this Data Asset to include in the customization only the tags you want. If you do so, it will filter out automatically all of the items not matching the tag here.&#x20;

### Character Definition

This Data Asset type has a lot to unpack

<figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FcLTSJxsxIye4i0wdyGG1%2FBT_04.png?alt=media&amp;token=0d339338-4640-4a56-b39d-8b2380c1d241" alt=""><figcaption></figcaption></figure>

This is core Data Asset which supplies the character with default set of items as well as tells it which head mesh and body type to use.&#x20;

* **Head Mesh** - Head of the character;
* **Default IKRetargeter** - IK Retargeter which is used by framework unless you overwrite it manually in the Item Data Asset;
* **Default Item Set** - Set of Item Data Assets which act as a base of the character when nothing is equipped;
* **Default Invis Mesh** - Base mesh of the character when no items are present, even default item parts;
* **Head Anim BP** - Animation Blueprint for head where you can inject your facial animation.&#x20;
* **Body Type Signature** - Integer which acts as a filter for Items you might equip to prevent mismatches between body types;
* **Body and Head Materials** - you need to select both for this to have an effect. Temporary solution to hard overwrite all skin materials;&#x20;


# Iris Modular

<div><figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FCAZZ9o5h7Vt6aPKf78Gh%2FPromo01_1080p.png?alt=media&amp;token=41917cc2-f2df-4e8e-9559-1234b5224d0c" alt=""><figcaption></figcaption></figure> <figure><img src="https://2415611526-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCYaPBuluVd5iaV2SvGW6%2Fuploads%2FaGWSpks4UYBg9KGEBvGq%2FPromo06_1080p.png?alt=media&amp;token=ea89de7c-edcc-486c-8f0f-6a3b354f45df" alt=""><figcaption></figcaption></figure></div>


