Realtime Character Morphing

Hey everyone,

I’ll be posting updates of my thesis progress on this thread.

The aim is to create a realtime morphing character taking inspiration from James Heller (Prototype 2), Clayface (Arkham City) etc.

At the moment concepts have been produced and the basemeshes are being created.

Concepts for the character:

After talking to Jared Fry (Lead Character Artist on Prototype 2) it was clear that mesh swapping is done instead of morphing these characters. So taking this into account the first 3 concepts will be swapped onto the character and then morphed into place (giving a growth effect) and the last will be a morph target changing the structure of the face.

Here are the basemeshes so far:

Reminds me in concept of the Xenomorph XNA demo from High Voltage:

I can’t find any paper on the subject. IIRC the base mesh just had a bunch of extra verts to accomplish all the topological changes – it sounded like a lot of work. I don’t remember any other details, really. Anyone around here work on that?

recently i worked on a similar project where a hand pops out of a photo frame “photo” and then it starts walking around with the frame. well the idea is to have the base mesh the same topo but need to be clever with the edgeflow so that you can morph into desired character or object with the base rig still holding.

what i personally did is modeled the hand in the first place, then averaged the vertices or relax the model till it was looking flat like a photo frame. its just a matter of applying the blendshape or morph.

so if the model morphs into wings on the back or fire blade on the hand then you need to sculpt the base mesh from these shapes keep the edgeflow intact. it’s tricky :):

Black Forest Games did some morphing in Giana sisters: Twisted dreams and had a blogpost on the subject but that was just static objects and not characters. You might find something useful in there though.

http://gianasisterstwisteddreams.com/morphing-the-world-in-project-giana/

the best way to approach this is with intermediate blendshapes for example transforming the hand to a shield:

cut of hand without shield and same hand with shield and apply both to the rig
create blendshapes for both hands that have the same intermediate form but not the exact smae topology
when you want to morph:

transform hand to intermediate shape
hide hand and unhide shield that is in intermediate shape so the silhouette does not change
then change the intermediate shield hand to the full shield
if this is done carefully the viewer would not see the change of shape or switch

at least that is what i would try

I did this in XNA a few years back. You can check my site for it. It’s a pain in the ass, I might also add it’s even more of a pain in the ass for the modeller. If your trying to do it realtime, you will get to the bones of XNA’s shaders. I think I spent 2-3 weeks getting my first morph, although I was a total shader noob.

If it’s for your thesis, even though I have the code up there, I would refrain from reading it, I think my whole solution is up there. Let me know if I can help.

Thank you so much everyone for your replies, the info has been helpful and informative!! I have the most experience using UDK so will be attempting to create it within that engine. At the moment i’ve learned the character needs to be set up as a modular pawn, that way assets can be swapped in and out while still being a playable character.

Thanks peerke88 for your thoughts, that sounds quite interesting while keeping a nice visual effect!

Here is a test video going through the transformation process i will be following.

//youtu.be/8KoFGxAv4bA

[QUOTE=Steve_T;20072]Here is a test video going through the transformation process i will be following.

//youtu.be/8KoFGxAv4bA
[/QUOTE]

Looking good!

This may help. I’m not sure what software you’re using to create the models, but there’s an interesting trick you can do in Maya to get disparate meshes to match positions. If two objects have differing topologies but similar uv layouts you can perform a Transfer Attributes operation to get one mesh’s verts to match another’s by sampling their uvs.

If you put some history on the objects–like a polyTweakUV node–you can also make it so that adjusting one object’s uvs will cause it to move along the surface of the other object. I just put a post up on my blog that goes into more detail about how to do it.

I’m not sure how useful that’d be for you in terms of the actual rigging, but it might make the job of modeling the morphs easier.

Thanks for that Jon, I’m using Max so i don’t know if it’s the same, i’ll look into it!

Some progress, I have started sculpting the basemesh. The goal is to have the same features as Megan Fox. At the moment i think it is lacking so any crits would be good.

P.S. I haven’t started the ear yet.

I have been testing the workflow of creating a modular pawn in UDK lately with test assets.

I have now managed to create an Archetype of the ModPawn class, so now each asset can be hidden or unhidden from the same menu.

These are the two ladies i am referenceing for this project, megan fox for the face and jessica ennis for body proportions.

Some improvements to the face:

And some progress on the body:

Major Breakthrough! (In my opinion)

Modular pawn is now playable AND I am getting to grips of controlling it via script.

When the player spawns all assets are visible, I need to find a way to stop this from happening.

Anyway I have set up 2 functions, Swap changes the assets to spheres while Swapback changes them all to cuboids!

Success!

//youtu.be/D1uXbgyRS8E

Just fixed the problem at the beginning by using a PostBeginPlay function to hide the assets i don’t want visible on spawn.

Character Update

New progress, low poly is finally in UDK

Starting to set up the morphs now

Added texturing details

The blade morph is now working however there are still some problems activating it in the code

easiest way is to swap the asset mid transformation. this is what we din on transforming robots. it is too fast you cannot notice it.
the XNA example was amazing,though.