Home Technical Talk

How we handle Morphing - Project Giana

polycounter lvl 6
Offline / Send Message
BlackForestGames polycounter lvl 6
Hello Polycounters!

In addition to the news about project Giana, here is a more detailed explanation of the work and problems we had with the morphing in our game.

Hope you enjoy!

Breaking the Morph, or How We Made Things Work Again

It’s so much easier to break things than to make them work like they should... This was also the case for the core feature of the visuals, the 3D morphing.
You can read about it in the article we published earlier here. [Klick]

Easy to Break, Hard to Fix

Creating an object using an already defined topology can be quite a challenge, depending on how different the shapes of the objects are. When we produced these kinds of objects, in most of the cases we noticed that with a topology appropriate to a cute world object, the polygon resolution wasn’t high enough for its dark world counterpart. So far so bad …

Finished cute world asset.

In most of the cases we just carefully added polys where they were needed, making sure that the cuts that were added were done in exactly the same order. In most of the cases, this worked out and you ended up with an object that looked good in the cute world, could morph into the shape of the dark world object and also looked good in the dark world. If not, you could hope that you have enough undos set to revert to a working but not final state.

Finished cute and dark world assets capable of morphing.

Depending on the object, we developed several solutions to fix the morphing issues.

1. Add cut by cut in both objects

Our common approach to this issue was the simplest one. You basically do the same as described above; you just switch and check more often between the objects. This way you can be sure that you have enough undos. The downside of this is that it can take some time.

Asset created using this worklflow.

2. Go with the flow

Depending on the complexity of the cute world mesh, another approach we had was just to finish the dark world mesh and then adjust this mesh to match the cute world again. This was time consuming as well, but the freeform tools were quite handy. This way we could conform and relax the mesh to the original. This works fine if the shape of the object is not that complex.

Asset done using this workflow.

If the objects were too complex, then the only weapon of choice basically had to be the snap.

3. Skin Wrap

Another nice way to recreate broken morphing is to use the skin wrap modifier. Here you just need an already morphing, not necessarily final asset that you can use as the target for the not morphing, but final asset. Here you have to tweak the values to get the best result so that you don’t have to adjust too much. Once this is done, you may need to adjust some verts to get the desired result. With a good resolution of the morphing mesh, the skin wrap alone is enough. The only restriction this method has is that you need to have a morphing asset, which in our case we unfortunately rarely had.

The lods of the tree were done this way, saving us a lot of time.

4. Do it the complex way

The power of scripting should never be underestimated. You just need to have an idea of how achieve the desired results; there is always someone who can write the script for that. In our case we were lucky to have the idea and the knowledge in-house so the development of this tool could be kept short and on point.
To describe the idea in general: morphing doesn’t work when the vertex IDs don’t match as they should between two objects. It’s unlikely that both objects already have the final mapping for one of the worlds, and if so, then the UVW vertex IDs most likely won’t match either. The only common element between the two objects is the topology. That was basically the hook for this tool.

Screenshot of the interface of the Transfer Data Tool.

In the tool you have to define the source and target objects. In most cases, it’s a dark world object and a duplicate of its cute world counterpart. The second step is to define the group of polys that should be transferred. This is a limitation, but also an advantage as you can recreate just part of the object. Due to the way the algorithm works, the selected polys must create an island. With that done, you just define the start poly, the edge and the vertex in both of the objects and with a push of a button, you will get an object that the cute world object can use as a morph target and morphs correctly.

A side note: we designed the tool so that it can not only be used to reinstate the morphing, but also to recreate the symmetry of an object and to transfer the mapping from one side to the other or from one object to another. Given the need and a little bit of time we will extend the tool to support other data that needs to be transferred (e.g. skinning, vertex colors, etc.).


In our eyes, the decision to use a morphing this unique did provide a visually stunning game. It did take much more time to produce the assets though, but it all comes down to the experience with the tools used, which we luckily had, giving us the possibility to choose and adapt to our needs.

We hope you had fun reading and maybe try it by yourself :)

And if you like what you have seen, maybe you want to support us and check out the link in the signature.


Andreas Feist



  • MikeF
    Offline / Send Message
    MikeF polycounter lvl 19
    thanks for the write up, very interesting approach.
    i work with morphs almost all the time for my current job, never crossed my mind to use something besides vertex id's
  • Xoliul
    Offline / Send Message
    Xoliul polycounter lvl 14
    Saw this a few days ago, very cool stuff. Must be quite challenging to work like this...
  • bugo
    Offline / Send Message
    bugo polycounter lvl 17
    All sums to a good conversation in between artists, coders and tech artists that are ahead of the issues and create the solutions. Kudos for you guys. And thanks for sharing it with us.
  • Ace-Angel
    Offline / Send Message
    Ace-Angel polycounter lvl 7
    That's all awesome, just a request that in the future, if you guys could slow down the videos, so I can actually see the transitions much better, that would be great.
  • killnpc
    Offline / Send Message
    killnpc polycounter
    thank you for sharing the process behind this!
  • BlackForestGames
    Offline / Send Message
    BlackForestGames polycounter lvl 6
    Hi all,

    sorry for the late answer, it's just Holidays are awesome working late to catch up the work isn’t.
    Anyways, thank you for the interest.
    We are going to show some more assets as soon as we have the time set up some renders.
    Ace-Angel: I’ll try to have one or two of the objects also morph slower so you can see for yourself. But be warned that this also means that you may see bad clipping and other not so cool looking stuff when played at a slower rate.

  • gray
    i'm not sure how your script works but if your going to do this sort of thing a lot look into vertex reordering and localized vertex reordering. thats how film studios deal this sort of thing. and there is a lot of morphing and remodeling in that environment.

    your morphs have a nice personality to them regardless, kudos.
Sign In or Register to comment.