Editor Documentation#

tip

Clicking on any image below will open it in a new tab for easier viewing.

Creating an Asset#

There are 2 ways to create a new Morph Tools asset:

Method 1: Right Click any skeletal mesh, and select Morph Tools Actions -> Create Morph Tools Asset

Method 2: Right Click anywhere in the content browser, and select Animation -> MorphTools Asset

  • You will then be prompted to select a skeletal mesh.

note

When creating the asset, a duplicate is always made of the selected skeletal mesh. This is to prevent any accidental changes to the original.

The newly created asset should be highlighted in the content browser. Double click it to open the Morph Tools editor interface.

Editor Interface#

Upon opening the editor for the first time, you will see this screen.

Along the top, there are 3 important buttons.

1. Export Preset Settings: Export the settings of this current asset to a MorphTools preset file.

  • This file can then be imported into another asset.
  • Currently, only settings from the morphs tab, bake tab and meshes tab are saved. The preview animation and mesh visibility settings are not saved.

2. Export Runtime Preset: Export the settings as a runtime preset, which can be applied to a mesh at runtime.

3. Import Preset Settings: Import a preset. See: Importing Presets

tip

I recommend undocking the rest of the tabs and enlarging them to full screen for ease of use. Multi monitor setups work great here.


Meshes Tab#

Meshes Tab Functions#

1. Add new meshes

2. Remove meshes. (right click)

3. Set a preview animation

4. Hide meshes from the preview scene via the visibility checkbox

5. Edit the mesh key (see below)

i> There are a few concepts about this tab that are important to note, as they affect all the other tabs:

1. By default, the first mesh added upon creation of the asset is considered the master mesh.

  • The master mesh cannot be changed or removed. If you need to change the master mesh, create a new asset.
  • Any mesh added after the master mesh is considered a slave mesh. The concept of a slave mesh will become important in the other sections.

2. The mesh key is auto generated when a mesh is added. You can edit the mesh key to make it more readable, but it must be unique among the meshes in the asset.

  • The master mesh key is not editable.

3. The mesh that is selected in the meshes tab is the one that is considered active for editing when using all other tabs.


Morphs Tab#

Morphs Tab Functions#

The morphs tab is where you can adjust morph weights, bake settings, and randomization settings. The currently selected mesh from the meshes tab is reflected via the mesh name at the top of the tab.

When you save the asset, the values you set will get saved with it. Upon reopening the asset, the previous settings will be applied automatically. The functionality of this tab is based on the morph target previewer in Persona, but has some additional columns and actions. The First 4 columns are identical to persona, the other columns are unique to this plugin.

i> A morph is considered a slave morph if it has a morph with the same name as one on the master mesh. The settings for slave morph can only be edited from the master. In this case, the entire row on the slave will be disabled.

Terms#

1. Bake: Permanently apply the deform of the morph into the mesh at selected weight when baking.

2. Remove: Remove the morph from the mesh when baking.

3. Blacklist: do absolutely nothing to this morph when baking.

4. Randomizer settings: min/max values to use when randomizing the morph weights. The checkbox on the left resets them to default.

note

The bake/remove/blacklist checkboxes have no effect on randomization.

important

Settings get saved with the MorphTools asset, NOT the skeletal mesh itself. The skeletal mesh asset is not altered until you bake or copy morphs.

Bake Tab#

Bake Tab Functions#

1. Change the output path for baked and edited meshes.

  • The current selected path is displayed below the button

2. Bake your meshes via the Bake Morphs button

3. Generate up to 100 random baked meshes at a time via the generate button

  • You can set randomization ranges in the morphs panel

4. Optionally Set bulk bake rules to override individual bake settings from the morph tab.

  • Setting bulk rules is entirely optional, but can be useful if you have a ton of morphs
  • For example, if I wanted to bake and delete all morphs that started with "nose_" I would use the following settings. Note that override individual rules in checked.

Bulk Matching#

!!> Important: All string matching is done by converting the Morph Target FNames to an FString. Since FNames are case insensitive, all bulk matching is also case insensitive.

Contains: Uses the UE4 FString::Contains function

DoesNotContain: The negated result of contains

StartsWith: Uses the UE4 FString::StartsWith function

EndsWith: Uses the UE4 FString::EndsWith function

Wildcard: Uses the UE4 FString::MatchesWildcard function

note

When baking and generating random meshes, the editor may become unresponsive for some time while calculating the morphs. This is normal.

Morph Edit Tab (Experimental)#

Terms and Settings#

  • Target Mesh: This is the mesh that is selected in the meshes panel. In context of the edit tab, its the mesh you are editing.
  • Source Mesh: This is only relevant for morph copying. Its the mesh that the morph targets are copied from.
  • Proximity Map: A proximity map is a custom DataAsset that gets generated when copying Morphs. It holds a map of the closest vertices on the source mesh to a given vertex on the target. You can reuse the generated map later as long as the vertex ordering of both meshes remains the same.
  • Average number of vertices (n): Leaving this as 1 creates a simple 1 to 1 mapping between vertices when generating the proximity map. If the value is greater than 1 it creates a 1-n mapping. In this case, the copy process averages the deform of the morph over the n closest vertices from the source mesh. It uses a simple average unless Use Weighted Average is checked.
    • If the meshes have similar topology, I usually get best results just leaving this at 1.
  • Use Weighted Average: A weighted average based on distance is used instead of a simple average when copying morphs. Only relevant if Average number of vertices is greater than 1.
  • Override Existing Morphs the same name: If this is checked when copying morphs, and the target mesh already has the morph being copied, it will be replaced with the morph from the source mesh.
  • Newline Delimited List Of Specific Morphs to Copy: Optionally provide a new line delimited list of specific morphs to copy. The list is generated using the TArray::ParseIntoArrayLines function. If this is empty it will attempt to copy ALL morphs from the source mesh.
  • Use Mesh Copies: If checked, the target mesh will be duplicated and the edits applied to that mesh instead when performing any action in this tab.
    • This is checked by default because I want to make sure the results are satisfactory on a copy first before I commit it to the main mesh.
  • Weight Multiplier : Very experimental, but can help in some cases where a morph is clipping. This simply multiplies the morph target delta by the specified factor when copying. Leaving this at 1.0 effectively turns this off.

Edit Tab Actions#

  • Copy Morphs: Copies morphs from the source mesh to the target based on the settings. Disabled until a source mesh is selected.

  • Build Proximity Map Only: Normally, a proximity map is automatically generated and saved when copying morphs. Use this if you only want to create a map, but not copy any morphs yet.

  • Multiply Existing Morphs: Multiply the morphs on the target mesh by the specified weight multiplier. This is a very naïve function, and many times will just make clipping worse, but it has its uses. The specific morphs to copy list is respected here.

  • Create New Morph From Current Morph Combo: Combines all morphs currently set the on Target mesh into a single morph. You must give this new morph a name in the below textbox or this button will be disabled. The specific morphs to copy list is NOT respected here.

Importing Presets#

There are multiple places to import preset data:

1. At the top of the baking panel via the import rules button.

  • This will only import the bulk rules from a preset file.

2. At the top of the morphs panel via the import morph settings button.

  • This will import morph settings only.

3. At the top of the main editor panel. This will import bake settings, and morph settings.

important

When matching imported morph settings to a mesh, the mesh keys must match, otherwise nothing will be imported. To force a match, change the mesh key in the preset to match the mesh key in the asset you are importing to.