Blender Underground

Away from the watchful eye of The Man
It is currently Tue May 21, 2013 9:21 pm

All times are UTC - 8 hours




Post new topic Reply to topic  [ 11 posts ] 
Author Message
 Post subject: Basic Puppetteering In Blender
PostPosted: Sat Jan 17, 2009 5:46 pm 
Offline
Associate
User avatar

Joined: Fri Jan 16, 2009 1:51 pm
Posts: 65
Location: Ridgecrest, CA
If you just want to get started, you can download a blend file ready to start at the scaling step from
http://www.soard-web.com/Blender/puppet ... tart.blend
I'm not going to say much for how well it was weight painted, but here it is.

Puppeteering is the process of using the motion of one armature to drive the motion of another armature. This tutorial goes as far as transferring motions from one armature to another of similar porportions.

This tutorial picks up from where Penix1's tutorial on importing makehuman into blender. You can get set up by following it through at least as far as importing and setting up the armature. You can find part one his tutorial here.

http://blenderunderground.com/forums/vi ... php?t=1038

Go head, I'll wait.

When you have gotten to this point, name the makehuman armature "target" for the sake of consistency.

I will be using the same bvh motion that he uses in his BVH tutorial.

http://blenderunderground.com/files/use ... lerina.bvh

Import the bvh file into your scene as armatures and rotate it in object mode -90 degrees. Go ahead and name the BVH armature "source"

There's a minor fix to the motion that needs to be done which is explained in Penix1's bvh tutorial. I'll recap it here.

Select the neck in pose mode and open an ipo window. Select the QuatW curve and move it up 3 points. (G Y 3) Do the same for the head. Ok now we can continue.

In object mode, set the source armature to about the same size as the target armature then position it so that the heads of the upper legs are lined up with the heads of the upper legs on the target armature.
Image

Go into pose mode on the source armature, select the hip and position the cursor on the selected object. (shift s, curser to selected)


Go into edit mode on the target armature. Rename the hip bone to Spine, and add a bone. (space key, add|bone) Name the new bone Hip. Position the cursor on the head of the spine bone and move the tail of the hip bone to the cursor. set the hip as the parent of the spine and set connected.
We need this extra bone to track the motion of the source.

Now for the fun part where we actually make the target armature follow the source armature.

Go into pose mode on the target armature. Select the hip bone. Add a copy location constraint to it. Set the target to source. Another entry box will appear asking you which bone. Enter "Hips". Also add a copy rotation constraint with the Hips on the source armature as the target.

Now that we have our target armature going everywhere our source armature goes, lets move on to the rest of the joints. The main technique is to add an ik solver pointing at the next joint in the chain with a chain length on 1 and add a copy rotation constraint. There are some special cases that we'll take as we come to them.

Ok so we'll start with the left upper leg, mostly because I'm right handed so I work from the right. On the target armature, select Thigh.L. Add a IK solver constraint to it. Set ChainLen to 1. Set the target of the constraint to the source armature, LeftLowLeg. The Thigh will snap into position. Now add a Copy Rotation constraint. Set the target to source, LeftUpLeg. In the constraint settings, turn off all axis except for "Y". I'll go over how to pick the right axis here in a minute. Make sure the CSpace parameter is set to local for both the target and owner. You may need to watch the animation every once in awhile as things may not look right with the source armature in it's rest position. Don't worry about that as long as the animation looks right, the rest position won't transfer over to the target armature permanently.

Image
Selecting the right axis:

The IKs track 2 axis for us. The only one missing is the axis that the bone twists on. Determining which axis that falls on is a simple matter. Type shift comma to set the pivot point to the median. Turn on the rotation manipulator. (ctrl+space, rotation) Then change the transform orientation to "Normal" (alt+space, normal). One of the three rotation axis will be along the twist rotation of the bone. That is the axis that you want to set on your copy rotation constraint.

Now repeat the process with the rest of the legs. Stop at the feet since that's where we reach our first special case.

Special Case 1. Missing or unusable end sites:

The end site in a BVH motion is the end of the bone. as you can see the feet or our source armature are tiny and pointing straight down. To fix this, we're going to use empties at the toes of our target armature, so set your source armature in rest position. The target will follow it but look all funky, again don't worry about this. Put your target armature in pose mode and click on the BigToe1.L. Snap the cursor to the selection and leave pose mode. Create an empty and name it Foot.L.IK. Then click on the source armature, and enter pose mode. select the empty then shift select the LeftFoot bone. type ctrl+P and parent the empty to the bone. Now set up an IK solver on your target's Foot.L bone and point it at the empty. Make sure it has a ChainLen of 1. Repeat the process for Foot.R.

That takes us to our next special case, the back and spine...

Special Case 2. Driving two bones with one.

This is more straight forward than it seems at first glance. For the spine bone, just add a copy rotation constraint, point it at the chest on the source armature and set it's influence to 0.5. For the Back bone, add the same copy rotation constraint. Also, add a ik solver, set the ChainLen to 2 and point it at the neck bone.

The neck and arms up to the hands are handled in the same way as the legs. so go ahead and take care of them. then we'll come back to the head and hands.

For the hands and head the process is basically the same as we used for the feet, except we're taking the locations for the empties from the source armature instead of the target armature. That's because we don't have any bones at the tip of the head or for fingers to point the IK constraint to.

In closing, I should mention that motion capture is not the end all be all of animation. It doesn't even speed things up. Just makes them look more nature. As you may have noticed from my little demonstration here, you still need to go back and clean things up. Mostly this just involves deleting offending key frames after baking.


Last edited by DragonEagle on Tue Jan 20, 2009 9:29 pm, edited 5 times in total.

Top
 Profile  
 
 Post subject:
PostPosted: Sat Jan 17, 2009 11:27 pm 
Offline
Associate
User avatar

Joined: Fri Jan 16, 2009 1:51 pm
Posts: 65
Location: Ridgecrest, CA
Ok I think it's finally done. I welcome any questions, comments, and suggestions.


Top
 Profile  
 
 Post subject:
PostPosted: Sun Jan 18, 2009 5:30 am 
Offline
Director
User avatar

Joined: Thu Sep 06, 2007 8:17 am
Posts: 5144
Location: West Virginia, USA
Very well done. I'll give it a spin tonight when I get a block of time to sit down with it to iron out any questions. Until then, cheers! :D

_________________
Life is an illusion....It's the magician you have to worry about!


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jan 21, 2009 10:57 pm 
Offline
Associate
User avatar

Joined: Fri Jan 16, 2009 1:51 pm
Posts: 65
Location: Ridgecrest, CA
Did a few fixes and added a blend file. I could really use some opinions on this.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jan 22, 2009 6:37 am 
Offline
Specialist
User avatar

Joined: Wed Dec 24, 2008 8:01 am
Posts: 3498
Well, it's nicely written; but I cannot comment on the contents. too advanced for me.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jan 22, 2009 9:00 am 
Offline
Associate
User avatar

Joined: Fri Jan 16, 2009 1:51 pm
Posts: 65
Location: Ridgecrest, CA
PNG_pyro wrote:
Well, it's nicely written; but I cannot comment on the contents. too advanced for me.


I'm not very good at simplifying directly. give it a go and let me know where you get stuck. I'll try to simplify it.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jan 22, 2009 9:38 am 
Offline
Specialist
User avatar

Joined: Wed Dec 24, 2008 8:01 am
Posts: 3498
Oh, it's not that; I just haven't gotten to working all the way through Penix1's Makehuman tutorials yet.

You've done a good job; I just can't work through it yet.


Top
 Profile  
 
 Post subject: Nice job here :-)
PostPosted: Fri Mar 06, 2009 8:57 am 
Offline
Informant

Joined: Fri Mar 06, 2009 8:53 am
Posts: 1
As the title says, nice job; haven't worked through your tutorial but it looks pretty straight forward.

I was wondering, it there is a way to 'parent' and 'un-parent' an existing armature to another one (imported BVH, all bones are named the same way). Rather than having to go through all the steps each time...


Top
 Profile  
 
 Post subject:
PostPosted: Tue Mar 10, 2009 2:38 am 
Offline
Informant

Joined: Wed Feb 25, 2009 1:31 am
Posts: 4
Hi all, and especially hi Basics ;)
and *thumbs* up to this tutorial. It works fine so far with the posted example.
I've gone through the tutorial, and i tried it with my own character as well.
The basic approach is clear and works, but i have little trouble anyway.

One kind of trouble is to make the puppeteering more "perfect" so it's little try'n'error to find the correct settings of the constraints (using localSpace or localWithParent, useTail or not etc.)

Another question, which is important to me is about the keyframes.
I would like to export the character and the applied movement into MD5.
But because the keys are set on the sourceArmature, the targetArmature doesn't have any keyframes.
Wich is a problem, because the animation doesn't get exported.
So is it possible somehow, to copy the keyframes from the sorceArmature to the targetArmature? Or let blender "record" the keyframes from the whole sequence of the animation (like setting a key automatically each frame)?

greetz
Imm0


Top
 Profile  
 
 Post subject: Re: Basic Puppetteering In Blender
PostPosted: Tue Apr 10, 2012 4:40 pm 
Offline
Informant

Joined: Tue Apr 10, 2012 4:37 pm
Posts: 1
So I am wondering how to motion track something to a character, simular to this picture
http://wiki.blender.org/uploads/9/9c/Bl ... acking.png

What is this called? and are there any tutorials on this?


Top
 Profile  
 
 Post subject: Re: Basic Puppetteering In Blender
PostPosted: Tue Apr 10, 2012 5:26 pm 
Offline
Director
User avatar

Joined: Thu Sep 06, 2007 8:17 am
Posts: 5144
Location: West Virginia, USA
That's motion capture or mocap for short. There are several tutorials on it on the net but it usually requires some sort of hardware to do the capture. Our own Evol Child did this one:

viewtopic.php?f=12&t=2540

_________________
Life is an illusion....It's the magician you have to worry about!


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 11 posts ] 

All times are UTC - 8 hours


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Translated by Xaphos © 2007, 2008, 2009 phpBB.fr