Morphing from one character/object silhouette to another?

I’ve always wondered how something like in this video can be done:

Basically in this video silhouettes of people morph to silhouettes of objects, other people and so on. And it’s all hard edges, not fading of one to transparency and fading the other from transparency, which would be easy to do.

How can you do that?

Hm, perhaps something like Flash was involved?

Though i think it might be doable in Blender. One way could be by crossfading two shrinkwrap modifiers, one targeting the start silhouette and the other the end one. Or if that would need too many polygons to look right, perhaps get the silhouettes as vectors and import them, then you would only need to have vertices around the edges. For a weaker fake you could simply just scale one object down while scaling the other up; being silhouettes the separation between them will not be completly obvious (though for more complex shapes, you might need to do something like rigging them and scale the bones individually along the axes orthogonal to the screen to avoid parts disapearing and them showing again).

I did a quick (very rough) test with the Shrinkwrap modifier approach, going from a cube to Suzanne (i got distracted and missed a bit of the ears though). Seems to do the trick:
http://img10.imageshack.us/img10/8233/wz9k.png
(the ears could probably be fixed by doing it more carefully)

Unfortunately i found out it seems modifiers don’t got “weights” as thought they did. I had to make the results of the Shrinkwrap modifiers into shapekeys and animate those instead.

I don’t know what this means tbh…

perhaps get the silhouettes as vectors and import them, then you would only need to have vertices around the edges.

What do you mean? How? The objects are 3d meshes inside Blender.

For a weaker fake you could simply just scale one object down while scaling the other up; being silhouettes the separation between them will not be completly obvious

I’ll actually try and see how this looks. :slight_smile:

(though for more complex shapes, you might need to do something like rigging them and scale the bones individually along the axes orthogonal to the screen to avoid parts disapearing and them showing again).

I don’t understand this part either.

I just got an idea. How about “oilifying” the frames where you’re scaling one object down and the other up? Oilifying an image makes edges in an image smoother, more organic". Now to find out how to achieve an “oilify” filter in Blender.
All I 'll need to do is animate the “oilify” amount from 0 to “full” when in middle of transition and then from “full” to 0 from middle of transition to end.
What do you think of this idea?

(here’s an oilified image in the GIMP image editor:)
http://i.imgur.com/iQjgY7D.png

It turns out there doesn’t seem to be a way to do that that way. What i had to do was apply the result as shapekeys, and then animate the shapekeys influences.

I mean taking the render into a program like Inkscape, converting the silhouette into a vector, then importing it back into Blender and use the flat silhouettes instead of full objects as targets for Shrinkwrapping.

Do you know anything about animating characters with armatures and stuff?

I think something like that might be doable with Blender’s compositor. Something like blurring and then converting back to black&white with a color ramp or something.

I… don’t know what you mean by that either :stuck_out_tongue:

I mean taking the render into a program like Inkscape, converting the silhouette into a vector, then importing it back into Blender and use the flat silhouettes instead of full objects as targets for Shrinkwrapping.

Oh I get it now. Could be an option if Inkscape could do bach converting. probably can, but will need to write a custom script for that, way over my head.

Do you know anything about animating characters with armatures and stuff?

Yes, animated many characters for video games. But I don’t get what you mean by “you might need to do something like rigging them and scale the bones individually along the axes orthogonal to the screen to avoid parts disapearing and them showing again”.

I think something like that might be doable with Blender’s compositor. Something like blurring and then converting back to black&white with a color ramp or something.

Thanks. I’ll see what I can get.

EDIT: Not bad but doesn’t look like the effect from the video.
http://www.pasteall.org/blend/24654

http://wiki.blender.org/index.php/Doc:2.6/Manual/Modifiers/Deform/Shrinkwrap
http://wiki.blender.org/index.php/Doc:2.6/Manual/Animation/Techs/Shape/Shape_Keys

I mean just using to get 2 flat silhouettes, one for the start of the morph and one for the end.

I mean animating the size of the bones in such way that each part of the shrinking object disappears into the corresponding part of the growing object, avoiding stuff like the arm of a shrinking character moving past the arm of a growing character.

The contrast shouldn’t be animated; and i’m not sure 8 is strong enough. Just do it with a ColorRamp in Constant interpolation; much easier to tweak where the threshold should be.

I know what those are. I just don’t understand how you mean to use them. I reread the topic, but I still don’t get it.

I’ve used shrinkwrap before for character clothing. It’s useful for creating clothing. But I don’t see how it will work here. It makes one mesh “cover” another, not take its shape. With a Cube shrinkwrapping to Suzanne it looks decent, but even then its not perfect. Try to shrinkwrap a subdivided Suzanne to another Suzanne with different angle and see how bad it will look.
My objective is to have a silhouette of the second object in the end, but with simple shnrinkwraps I end up with a silhouette of my second object clearly covered with the first object, even though you just see the silhouette.

This is the problem:
http://i.imgur.com/t9Yv8sE.png
(black is the first object, r5ed is the second)

If you mean doing something more than that, then please try to reword your ideas.

I also don’t see how shrinkwrap will work with animated or moving objects.

I mean animating the size of the bones in such way that each part of the shrinking object disappears into the corresponding part of the growing object, avoiding stuff like the arm of a shrinking character moving past the arm of a growing character.

That will be a lot of work. And it looks weird tbh, when the whole body is morphing to a whole shape that seems ok, but when you morph (scale) just some parts it looks kind of disturbing, just tried :stuck_out_tongue:

Just do it with a ColorRamp in Constant interpolation; much easier to tweak where the threshold should be.

Woops. Yeah, looks better with color ramp. Still doesn’t look much like in that video though…
http://www.pasteall.org/blend/24672

Ok, i think i see what is missing. You’re supposed to Shrinkwrap a third object, not the two objects. Make that third object highpoly enough that it has enough to fit over the details of both objects.

Use a rounded shape that sorta resembles what you’re wrapping and fits around them, and use Shrinkwrap in Project mode, and in the negative direction.

Yeah, without being able to change the influence of the modifiers that will be an issue. Though on that video you showed, it seems most cases the objects aren’t changing shape while morphing, the camera was just moving around. Making a moving morph is gonna be a pain; i guess it might work though if you first do a static morph and then rig the morphing object to move like both targets (though, with this, you won’t be able to cheat by using flat silhouettes, you’ll need the actual 3d objects).

Thinning one thing while thickening the other, while only seeing their silhouettes, look disturbing?

I tweaked the file a bit, http://www.pasteall.org/blend/24674 (lemme know if you need help figuring out what i changed)