Morph-O-Matic, the award winning Morph modifier for 3ds max,
celebrated its 10th year of existence in 2011. 2011 also marked
the introduction of
Morph-O-Matic’s game engine scripting API.
For several years, many were under the impression that it was
impossible to use morph based animations with game engines like Unity 3D.
We had the chance to speak with Chris West,
one of the creators of Mega-Fiers; who have made this
possible for everyone; and as he puts it, it wasn’t impossible
…just very complicated.
Can you tell us a bit more
about what Mega Fiers is about, and who you are?
Chris:
I started programming games with the Vic20 and have
worked my way through C64, Amiga, SNES, PSX, Saturn and
PC and now ended up with Unity. For the past 27 years I
have worked in the game industry with my brother Tony
handling the artistic and creative side of things, doing
all sorts of games. MegaFiers came about after we moved
over to Unity, we created our own 3d engine for the PC
and part of that was a recreation of 3ds Max’s modifier
system. So we could use things like FFD, Morphs and
Bends in our game worlds and have complete control over
the systems instead of using baked animations. When we
moved to Unity we wanted those same functions in our
system so I started porting them over to C#, I did a
little video on YouTube to show it off and was surprised
by the number of emails asking where they could buy the
system, so once the Asset store came along I took the
plunge; packaged it all up and made it available.
What's your take on why so many
game engines don't support morph animations and some
claim that it is not do-able?
Chris:
That’s an interesting question, to be honest I didn’t
realize people claimed it wasn’t doable, I guess people
don't like the idea of having to code up two systems
when one will do in their minds. Skin and bones is a
great system but to get the finesse and detail that
morphs provide you need a lot of bones and with the
limitations on number of bones per vertex, especially on
mobile platforms, it just isn’t possible to get the
depth of animation that you can with morphs, plus with a
good morphing engine once a morph is set you have no
overhead. Unity makes it nice and easy to update meshes
for each frame; so it was relatively simple to add a
morph layer on top of the normal bone based animation
system; and with the very compact and optimized nature
of the Morph-O-Matic data, the morphing system really
has very little impact on frame rates. It just allows
the artist to have the control they want especially with
the easy channel mixing and progressive targets.
To integrate Morph-O-Matic, you
have used the Morph-O-Matic Game Engine Scripting API,
How easy was the integration with your code/pipeline?
Chris:
It was a breeze to use, the only issue I had was I use
C++ for my max plugins and exporters so I just had to
learn to use Maxscript from C++ but that was easy in the
end, most people would probably use Maxscript from the
start and the API is so simple to use with that. To do
the exporter was a few simple lines of code as the API
was obviously designed with ease of use in mind, it just
gives you the data you need, nice and simple. The
equivalent C++ version for morpher was a little more
complex plus you have to figure out the redundant data
yourself something which isn’t an issue with the
Morph-O-Matic API. On the Unity side of things I did
decide to write a new morpher to use the Morph-O-Matic
data as it has some extras mainly the greatly reduced
amount of memory for morphs which allowed for a cleaner
and faster morph modifier in Unity.