An in-game character creator for MetaHuman actors. This page walks you through it step by step โ even if it's your first time.
Picture the "create your character" screen from RPGs: sliders, buttons, a choice of hairstyle and outfit. This plugin gives you a ready-made engine to build that screen โ for MetaHuman characters from Epic Games.
The one thing to remember: the plugin ships no characters. You (the developer) bring your own MetaHumans, grooms and outfits, and the plugin lets the player swap them live in-game and save the look.
Hair, eyebrows, beard, mustache, eyelashes, fuzz. "None" = bald / clean-shaven.
Swap the character's clothing with one click.
Switch between the body variants you register.
Material parameters โ e.g. makeup, tint. Sliders and color pickers.
One button = a random character or back to default.
The look is saved as a lightweight "recipe" (JSON or SaveGame).
A base creator-window class โ you design only the look, the logic is inside.
The plugin warns you about library mistakes before you even run the game.
Four blocks. The Library says "what's available", the Component "applies" it to the character, the Widget is the player's window, and the Recipe is the saved look.
You received MetaHumanCreatorKit_UE5.8.zip. Inside there's a folder named MetaHumanCreatorKit.
Copy the MetaHumanCreatorKit folder into your project's Plugins folder. If there's no Plugins folder yet โ just create one.
YourProject/ โโ Content/ โโ Plugins/ <-- here โ โโ MetaHumanCreatorKit/ โโ YourProject.uproject
Open your project. The editor will ask to build the plugin โ click Yes. After a moment the plugin is ready.
This is the key step. You create one file that lists everything the player can pick.
In the Content Browser: right-click โ Miscellaneous โ Data Asset โ pick MHCK Creator Library from the list. Name it e.g. DA_MyCreatorLibrary.
Open the file (double-click) and fill the tables. Here's what goes where:
| Section | What to enter |
|---|---|
| Bases | A BaseId (any name) + your MetaHuman's class (its Blueprint). |
| Groom Slots | One entry per slot. SlotId MUST match the groom component name on the MetaHuman exactly (see box below). Each option = OptionId + a groom asset. Empty asset = a "bald / none" option. |
| Material Params | ParamName = a real material parameter name. Choose Scalar (slider) or Color, the target (Face/Body/Outfit) and the slot index (-1 = all slots at once, e.g. skin tone). |
| Body Options | OptionId + a skeletal mesh for the body variant. |
| Outfit Options | OptionId + an outfit skeletal mesh (swapped on the SkeletalMesh component). |
| Morphs | MorphName = a morph target name on the mesh, with a min/max range. |
HairEyebrowsFuzzEyelashesMustacheBeard
The face is the Face component, the body is Body, and the outfit is SkeletalMesh. When you type aSlotId, use these same names.Double-click BP_YourMetaHuman.
In the Components panel click + Add and search for MHCK Customization Component. Add it.
Select the new component, in Details find the Library field and choose your DA_MyCreatorLibrary. Done.
bApplyDefaultOnBeginPlay โ if you tick it, the character starts with the default look from the library right away.Content Browser โ User Interface โ Widget Blueprint. When it asks for the parent class, choose MHCK Creator Widget.
Call Bind and pass the character's component. From now on the widget knows what to show.
In the On Creator Ready event, get the lists (Get Groom Slots, Get Outfit Options, ...) and create buttons. On click, call:
| Player action | Function to call |
|---|---|
| Picked a hairstyle | Pick Groom (SlotId, OptionId) |
| Moved a slider | Set Scalar (ParamName, Value) |
| Chose a color | Set Color (ParamName, Color) |
| Picked an outfit | Pick Outfit (OptionId) |
| Picked a body | Pick Body (OptionId) |
| Clicked "Randomize" | Randomize Character |
| Clicked "Reset" | Reset Character |
A character's look is a recipe (FMHCKCharacterRecipe) โ a small data packet (what was picked), not heavy meshes.
Get Recipe on the widget (or Get Current Recipe on the component) โ gives you the recipe.Recipe To Json โ turns it into text (for a file, network, or a shareable "character code").MHCK Save Game with Save Game To Slot.Recipe From Json โ text back into a recipe.Apply Recipe on the component โ the character takes on the saved look.Spawn Character From Recipe โ creates a fully configured character in one call.Two things come from how Epic builds MetaHumans. These are not plugin bugs โ good to know up front.
A smooth, continuous "fatness" slider isn't practical for MetaHuman in Unreal Engine. MetaHuman's baked body has no built-in shape morphs, and any continuous body-shape control would need either custom sculpted morph targets or Animation Blueprint bone-scaling โ neither of which fits a drop-in, self-contained plugin. So a real-time "watch the belly grow" slider is out.
The fast, reliable solution is discrete body presets: create 4–5 copies of the same character with different builds (using the Fat slider in MetaHuman Creator), register their body meshes as Body Options, and let a slider or selector switch the character from thin to fat. It swaps between the prebuilt bodies instead of morphing smoothly.
| Function | What it does |
|---|---|
Initialize From Library | Assigns the library and finds the meshes. |
Apply Recipe | Applies the whole saved look at once. |
Set Groom | Changes the groom in a slot (None = bald). |
Set Scalar Param / Set Color Param | Material slider / color. |
Set Morph | Sets a morph (if the mesh has one). |
Set Body / Set Outfit | Changes body / outfit. |
Randomize / Reset To Default | Random / default character. |
Preload Library Assets | Loads everything up front (smooth creator start). |
Get Current Recipe | Returns the current look to save. |
| Function | What it does |
|---|---|
Spawn Character From Recipe | Creates a ready character from a recipe. |
Configure Actor | Adds the component and applies a recipe to an existing actor. |
Recipe To Json / Recipe From Json | Save / load a recipe as text. |
The SlotId in the library must exactly match the groom component name on the MetaHuman (Hair, Beard...). Check the capitalization. The log shows a "no groom component matching slot" warning.
That's usually a baked material with no color parameter โ see Important MetaHuman notes. You need a non-baked material or your own parameter.
The plugin re-applies saved parameters after a mesh swap โ if they're in the library and recipe. Make sure the body color parameter is under Material Params with the Body target.
You need Unreal Engine 5.8 and the HairStrands plugin enabled (it enables itself). Close the editor, delete the plugin's Binaries and Intermediate folders, reopen the project and let it rebuild.
If you use your own SaveGame: save through the provided MHCK Save Game or via Recipe To Json. Both are set up to persist correctly.