Morph Tools Plugin

Bake Morph Targets, Combine Morph Targets and Copy Morph Targets. All without leaving the editor.

Marketplace link: https://www.unrealengine.com/marketp…90c524bafd847f
Example Project: https://www.dropbox.com/s/v8p151s6zs…ample.zip?dl=0

Feature List

Editor

  1. Bake and remove morph targets from skeletal meshes
  2. Create morph presets
  3. Custom Morph Tools Asset editor
  • COPY MORPHS from one mesh to another - Based on vertex proximity: Vertex ordering is irrelevant - Works great for clothing with similar topology to the base mesh

  • COMBINE morphs - Combine multiple morph targets into a single morph target. Save RAM at runtime.

  • Random mesh generation based on the morphs of the mesh. - Easily create hundreds of different NPC meshes with customizable random mesh generation.

see: Editor Documentation

Runtime

  1. Bake and remove morph targets from skeletal meshes
  2. Save and load the baked mesh to disc
  3. Set morphs based on a morph preset
  • presets can be constructed at runtime or in the Morph Tools Editor

see: Runtime Documentation

Detailed Documentation and feature list can be found here: https://kostenickj.com/docs/morphtools

Questions and support: Post in this thread. Or join the Morph Tools discord at JK Plugins Support

Why I made this:

Morph tools is a product born out of the needs from my ongoing game project. I was designing a character creation system primarily based around morph targets. My mesh size began to rapidly increase as I added more and more customization options. Eventually I had around 2000 morph targets and my mesh size on disc was around 1GB. Anytime I needed to make an edit to a single morph, it took at least 30 minutes to reimport the mesh it back into the editor; my workflow was stifled.

I realized I needed a system to make it feasible to actually use a mesh with this many morph targets in a real game.

The first, and most important feature I implemented was morph target “baking”.

Morph Baking: permanently apply the deformation of the morph target the the mesh data (and optionally remove the morph target entirely).

Baking morphs is essential to performance in my project. For example, my character meshes have a lot of “set and forget” morph targets, like nose size, body size, or other things that don’t change over time. There is no need to recalculate the vertex positions every frame if I only never need to set them once. At runtime I had hundreds of morph targets eating up RAM and being needlessly calculated even though I didn’t need them to be.

With my baking system I can set the morphs once during a controlled scenario (in my case, character generation) and then immediately bake and delete them from the mesh once character creation is over. In my extreme example this saved about 500mb of runtime memory.

Once baked, the skeletal mesh can then be saved to disc and loaded from a save game later without ever having to set the targets again. In the example project, I show you how to do this.

Baking works both at runtime (in a packaged game) and in the editor via a custom asset editor.

Next, I needed a faster way to iterate on morph targets. It took almost 30 minutes each time I needed to reimport my mesh after tweaking a morph, so I implemented morph target copying.

Morph Copying (experimental): Copy morphs from one mesh to another based on vertex proximity.

Using the morph copy tool, I can import my mesh with a single morph target, then use the Morph Tools editor to copy the morph over to my “master” mesh. This process cuts morph target iteration time down significantly.

Vertex ordering between meshes is irrelevant; the process works purely on vertex proximity mapping between the source and target meshes.

Since the copy process uses vertex proximity and not vertex ordering, it can be used to create morphs for character clothing meshes in certain scenarios. Clothing meshes that are mostly skin tight and have similar topology to the base character mesh are the best candidates. In my project I am able use the morph copy feature almost exclusively to copy morphs from my base character mesh to clothing meshes without ever having to create the morphs on the clothing item in a 3d editor.

1 Like

Reserved for future information

Congrats on the release, I’ll probably be picking it up at some point.
Best of luck with the sales ( and support. )

I really want to buy this plugin but I need to use it with 4.19. I see the source code is included so I was going to try and get it working myself. Am I going to have to change a lot or do you think it’ll be fairly easy?

It should be fairly easy. If you have trouble let me know and i can help.

Awesome thank you! I’ll purchase soon.

Cool, if you cant get it working correctly in 4.19. I will give a full refund.

Interesting plugin!
I’m not sure if I need it in my case, let’s say that I have an in-game character creator with around 100-200 morph targets for body & face shaping. That’s not an extreme amount like in your example (2k morphs), so I guess that using the same un-baked skeletal mesh for in-game character would not be that bad…?

BTW. We have a discussion regarding morph target performance here, might be relevant:
https://forums.unrealengine.com/development-discussion/animation/40825-morph-target-performance-question/page2

We bought the plugin and tried to use it, but somehow the output mesh from the editor is the same as the source without morph. I did a test with a joint, a cube and a single morph. Then in your editor, selected an output path and then generated 10 random meshes. I also manually set a morph weight and Bake Morphs. All meshes are the same source cube. Did something break with the 4.24.3 hotfix?

Note that unchecking Remove keeps the original morph intact in the output mesh. It just seems as if morphs are not being applied before being baked.

You are right, something has changed about skeletal meshes from 4.23 -> 4.24

Here is what i posted on my discord:

It looks like some changed about skeletal meshes between 4.23 and 4.24 that is causing an issue when baking morphs in editor, but i haven’t figured out the exact cause yet. Baking morphs in 4.24 version only works on meshes that were imported with 4.23 or earlier engine version. Even my test mesh doesn’t work if I re import it into 4.24. I am still trying to figure out why, but in the meantime a simple workaround is:

  1. Import the FBX into UE 4.23.
  2. Move the mesh to 4.24 project and everything should work fine.
  3. Also, the size of imported meshes seem to have doubled or tripled in 4.24 for some reason… My test mesh is 18mb on import in 4.24 and only 4mb in 4.23! Once i figure out the problem, I will make an update hopefully to the plugin, but that still doesnt explain the crazy mesh size increase.

Im working on trying to figure out what changed. All my initial 4.24 tests worked because i imported the test mesh in 4.23, i feel like it has to have something to do with this:
https://forums.unrealengine.com/deve…from-4-23-4-24

Since this bakes the morphs, does that mean we can use Apex with meshes that have morph targets again? (have not been able to since 4.10)

We bought the plugin and tried to use it, we exported :

  • 1 Character Creator 3 nude body
  • 1 Character Creator 3 default black underwear clothes

Both are imported in Unreal 4.27 with the same skeleton.

When I try to “Copy Morphs” with your plugin ( underwear as target), I haven’t no morphes after the process. Can you help me ?