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
Its 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 wasnt 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 dont 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 doesnt work when the vertex IDs dont match as they should between two objects. Its unlikely that both objects already have the final mapping for one of the worlds, and if so, then the UVW vertex IDs most likely wont 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, its 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.