This page has all the information you need to understand and use MetaHumans in your Unreal Engine project. It includes all project settings, plugins, and console variables you'll need to load and work with MetaHumans effectively. You can find additional useful settings and commands here as well.
Project Settings and Console Variables
The following project settings and console variables will be added to the DefaultEngine.ini configuration file located in your project’s Config folder on the first import of a MetaHuman from Quixel Bridge.
These commands will be added under the [ConsoleVariables] and [/Script/Engine.RendererSettings] sections:
| Console Variable | Description | Required Value |
|---|---|---|
| Enables support of greater than 256 bone indices for rendering on individual sections on Skeletal Meshes. | True |
| Whether to use unlimited bone influences instead of the default 4/8 for GPU Skinning. This cannot be changed at runtime. | True |
| Whether or not to compile the GPU compute skinning cache shaders. It will compile the shaders for skinning on a compute job and not skin on the vertex shader. | True |
| When Support Compute Skin Cache ( | 0 |
| When | 1 |
| Forces Niagara ordering/dependency to be evaluated in the last tick group after all other groups for hair. With it disabled, Niagara is evaluated before the physics asset update and causes collision to be one frame behind in some cases. | 1 |
These changes require an editor restart.
Plugins
If you use an assembled character in a project that has not previously enabled the MetaHuman Creator plugin you may be required to enable one or more of the following plugins:
| Plugin | Description |
|---|---|
Groom | Enables support for rendering and simulation of hair grooms in Unreal Engine. |
Rig Logic Plugin | Enables support for 3Lateral’s facial animation rig. |
Live Link | Enables support of streaming animation data using a common interface from external sources into Unreal Engine using DCC tools like Maya or Motionbuilder. Live Link provides a way to edit animations externally while seeing a preview of your work inside Unreal Engine in real time. Motion capture systems can also use it to stream data into the engine that can be previewed in real time. For more information, see the Live Link plugin documentation. |
Live Link Control Rig | Enables support of Live Link data through Control Rig. |
Control Rig | Enables a node-based rigging system designed to provide riggers with tools to create flexible, dynamic, and procedural characters with artist-friendly interfaces. For more information, see Control Rig documentation. |
Megascans | Enables existing MetaHuman characters created in the MetaHuman Creator web application to be imported or migrated into the current project using Quixel Bridge. |
These changes require an editor restart.
Additional Console Commands for MetaHumans
The following sections highlight some additional console commands that you can use and add to your specific configuration (*.ini) files.
MetaHumans on Mobile
On mobile platforms, skinned characters are limited to a maximum of 75 bones. This is the maximum number of bones that can be skinned on mobile GPUs in a single draw call. To ensure that your MetaHumans are able to load and run on any mobile devices you deploy them to, add the following command to the DefaultEngine.ini configuration file in your project. Place it under the [ConsoleVariables] section:
Compat.MAX_GPUSKIN_BONES=75
DefaultDeviceProfiles.ini
Device Profiles provide options that you can use to set device and platform-specific configurations. With them, you can set many properties in a device profile that only affects that device or platform, such as scalability, rendering, textures, and much more.
You can manage and set device profiles options from the Device Profiles window, which can be accessed from the Tools > Platforms menu. Alternatively, you can manually add your own DefaultDeviceProfiles.ini configuration file to your project’s Config folder.
Texture LOD Groups
MetaHumans use large 8K textures, which are not suitable for all devices and platforms. Use the TextureLODGroups to manage the minimum and maximum LOD (mip) supported for specific TextureGroups, which are set in the Texture Editor by the Mip Gen Settings.
On mobile devices, the max texture size should change the value associated with MaxLODSize in the configuration file.
Alternatively, you can use the in-editor Device Profiles window to select the device or platform you want to edit. Click the pencil icon under the Texture LODGroups column.
Select the texture groups (World, WorldNormalMap, and so on) that you want to edit. Expand their categories and change the Max LOD Size.
For more information about supported platforms and their suggested best texture sizes, see refer to the Platform and LOD Specifications page.
Early Z Pass Culling
The Early Z Pass is used to initialize a depth-only culling for the base pass. For mobile and other types of platforms, it can make hair faster to render.
On mobile devices, like Android and iOS, the console variables can be added to the configuration file under the desired platform by adding +CVars= before any console command entry. For example:
+CVars=r.EarlyZPass=3
Alternatively, you can use the in-editor Device Profiles window to select the device or platform you want to edit. Click the pencil icon under the CVars column.
Under the Console Variables category, expand the sub-category related to the console variable you wish to add by hitting the plus (+) icon. You can search within the category’s relevant console variables, and only the ones specific to that sub-category will be displayed so that they are put in their proper location.
For Android and iOS, we recommend that you use:
r.EarlyZPass=3
r.Mobile.EarlyZPassOnlyMaterialMasking=1
General Platform Commands
Console variables in these sections are stored in their own platform-specific configuration file.
For example, in your project, you can have a [MyProject]/Config/<PlatformName> folder, such as iOS or Android. In this folder, you’ll have a configuration file called <Platform>Engine.ini.
Hair Strands Quality Settings
The following hair commands help improve the quality of hair on your MetaHumans and know where it’s possible to switch off settings that aren’t needed to regain some performance.
The following commands enable finer details on shadows cast by hair onto the character. They also provide finer detail when light is transmitted through the hair groom. Compared to the default values, these commands allow better quality at the expense of more GPU time and more GPU memory.
Add the following to the <Platform>Engine.ini file:
r.HairStrands.Voxelization.Raymarching.SteppingScale=1
r.HairStrands.Voxelization.Raymarching.SteppingScale.Shadow=1
r.HairStrands.Voxelization.Raymarching.SteppingScale.RayTracing=1
r.HairStrands.Voxelization.Virtual.VoxelWorldSize=0.1
r.HairStrands.Voxelization.Virtual.VoxelPageCountPerDim=4
Voxel Page Count Per Dim increases the performance, however at the cost of a decrease in quality.
The following settings can improve the quality and look of your MetaHumans and improve GPU performance:
| Console Variable | Description | Changed Value |
|---|---|---|
| In cases where environment lighting does not require occlusion cast by the groom onto the character’s face, you can disable ambient occlusion from sky light. Disable it to save some GPU time. | 0 |
| This controls the number of hair samples per pixel. Increasing the number of samples increases the quality but becomes more costly per frame. | 2 |
| This causes the cooking process to completely remove some hair LODs so that they don’t take up memory on the target device. Strand-based grooms (provided with MetaHumans LOD 0 and 1) use a lot of memory, and are not suitable for platforms like mobile. | 3 |
Starting in Unreal Engine 5.0, hair strands are ray traced using path tracing. As such, they are more costly in terms of performance.
Platform Scalability Overrides
Unreal Engine provides a number of preset scalability options. These presets are accessible through the Level Editor’s toolbar under the Settings > Engine Scalability Settings. These Scalability Settings can toggle individual low to cinematic quality, and each one toggles between console commands in the [UE Engine Path]/Engine/Config folder’s BaseScalability.ini configuration file.
These default scalability presets can be used for your own projects and even overridden per platform. To override per-platform presets for your project, you will need to create a <Platform> folder with a <Platform>Scalability.ini file inside (for example, Android for the folder name and AndroidScalability.ini for the configuration file).
Inside the configuration file, you can override scalability by using the same naming conventions of scalability sections and adding your own set of console variables and values to replace them.
For example, in BaseScalability.ini, if you want to replace the settings in the [EffectsQuality@3], you would add that to a <Platform>Scalability.ini:
[EffectsQuality@3]
r.TranslucencyLightingVolumeDim=64
r.RefractionQuality=2
r.SSR.Quality=3
To see some examples set up for mobile platforms, download the MetaHumans sample project and go to the Config folder. You’ll find examples set up for iOS and Android.
Useful Platform Scalability Settings
The following settings are useful for controlling quality and performance:
| Console Variable | Description | Changed Value |
|---|---|---|
| This toggles Burley subsurface scattering to fall back to run scattering in separable transmission for better performance. | 0 |
| This enables parts of the subsurface scattering algorithm to run in half resolution. This results in lower resolution but is faster to render. | 1 |
| This forces all groom elements in the project to use Cards and Meshes geometry in place of strands. If there is no Cards geometry available, nothing is displayed. | 1 |
Nanite and Lumen
MetaHumans work with Lumen Global Illumination. However, Nanite Virtualized Geometry does not support skeletal meshes and therefore will not work with MetaHumans.
Next Up
Platform and LOD Specifications
Technical specifications for MetaHumans on different platforms.