How to attach to MODEL - Using the BVH2ARM python for quicker MOCAP?

Using the BVH2ARM script, how to attach this to my model?

In my experience, BVH and Blender is still a pipe dream.
Just spend your time animating the character directly, instead of trying to leverage BVH.

I hate to sound defeatest… but that I sort of agree with Atom here.

If you want to use the existing armature (ie the one Blender creates for you) then the results can be pretty good. But trying to apply MoCap to an existing armature doesn’t seem to be very well thought out.

But that is only part of the problem. The other part of the problem is most BVH that you can get is not very good. The CMU library for example, has a lot of foot skating in it. So, even if you manage to get the motion attached, your feet will not seem right.

One of the best BVH/Blender examples I have seen is this:

I asked him about this on the forum and he said A) he used the BVH created armature and B) the reason his floor is like a Mattress is so the foot fall problem isn’t obvious.

He also probably spent as much time getting BVH to work as it would have taken to animate it himself.

I experimented with something that showed promise, but I got frustrated eventually and gave up. I would create target bones for my key joints/movement bones (ie feet, knees, arm, wrist, elbow, etc)

I brought the BVH in and let it create the armature. I put this armature right in front the one I wanted to animate. I would put my targets at the BVH’s armature’s positioning, and then set my rig to use them as their target. So, the BVH moved the targets, and the targets moved my armature. Every 4th frame, I would set a keyframe for my armature. When I was all done, I deleted the BVH and the target bones, because I didn’t need them anymore.

This worked… but honestly it was so much trouble, was it worth it? If I took this to the next level and made a script to do this, yes, it probably would be a time saver. But without that, it was pretty pointless.

And that is the problem with BVH. No one has done the heavy lifting required to make it really useful.

This product makes it useful (but it is LightWave only): Something like that is what is needed… but no one is working on it (to my knowledge…)

If you want to use BVH today, it is just as easy to use the BVH armature as a reference. Move your armature yourself, and set your keyframes based on what the BVH armature is doing…

True, this is more like roto-scoping, than Motion Capture, but your results will be quicker, and it works.

Or, if you are a coder, jump into python and make it truly useful. It would be really cool if it could be added to the work Ryan is doing with his AutoRigger script:

Or have it all folded into the Rigify stuff Team Durian is doing - Then we would have something!

Thanks Mark, I think the rotoscoping idea is great. Also shall try the mattress effect.

Well, technically, Blender tweens automatically anyway. The problem with moCap is that there is no tweening – it key-frames absolutely every frame.

But I admire your determination.

BTW, you could also constrain the bones (maybe) to prevent the foot from going too far down – but the joints are often very weird. They go from a rest position that looks normal to a very strange position in the first frame. That is one of the things that always frustrated me with MoCap.

Keep us posted!

You could give BVH Connect a try.

It was my 2.49 attempt at auto connecting an imported empty set to an existing character.

This is a Brilliant script Atom. Thanks




Amnity: I got your PM on this… but you have private messages turned off, so I was unable to send you my reply…

Sorry about that. Would you be able to post here that will be fine. Thanks!

Well there are a couple of ways you can use the BVH to rotoscope.

The easiest would be:

  • Copy your Mesh (without Armature)
  • Import BVH file and allow it to create it’s armature
  • Parent your mesh copy to the BVH Armature and do a quick weight paintover so it more or less deforms correctly
  • Move through your timeline as needed (ie: skip to frame 4,8,12,16, etc)
  • On each frame you want, use the BVH Mesh as a reference to set your “real” mesh and armature
  • Once set, select all bones on your “real” armature and insert a keyframe for rotation and location.
  • When you are all finished, delete the BVH mesh, armature and keyframes.

Step 5 is because BVH will key every frame – which is not what you want.

(As an aside… it is possible to actually copy the rotations from your BVH armature and apply them to your “real” armature (if your bones are named the same) – though probably won’t work the way you expect. Rotations of the bone are based on the initial bone setup… so, if you have the Z axis facing out, and the BVH model has the Z axis facing back, copying the rotation will make the bone seem to rotate backwards…)

Really appreciate this information MarkJ, I think I’m getting a better understanding of mocaps now. The rotoscoping seems so much easier, I think I’ll use that from now on. Thanks!

The way you got the BVH to dance was really amazing.

When I looked at the rig it seems to be a unique rigging, why is it that there are only rig joints which seem unconnected to each other, yet still follow the BVH empties? Did you have to rig the model first.

(Also when I tried to colour the dancing model it wouldn’t allow me to add a texture)

I’m still trying to make this work, but I’m getting the hang of it I think.

Thanks… but that wasn’t me. That was from a thread on Blender Underground:

And, he just imported the rig as is and used it in his mesh – he didn’t rotoscope. The “Jello Floor” was to get around a problem with the BVH file not doing floor tracking accurately…

Not sure what you mean. I have only used the armature without empties… You can rotate it, scale it, etc in the edit mode so it matches your armature.

Are you trying to color the model? Or the armature? Because if you are trying to color the armature (ie certain bones) you need to create bone groups, and apply color there. If you are trying to color the mesh, you probably want to create a new material, not texture.

Thanks for your reply Mark, actually I must have clicked the incorrect button, I was talking to Atom about his BVH CONNECT 1 script. I’m attempting it now. I read someplace to copy the actions from the action editor and paste them. I think its similar to Shape Keys animation. But I was wondering how the BVH connect Python was used. Do I use the imported armature with the empties? Do I still need to make my own armature in my model?

When I look at Atom’s blend the end of one bone has an empty stuck to it and the other end is stuck to the rotating bit of the bone. But that bone does not seem to be joined to the rest of the bones. The all stick out horizontally. Why was that? Should I set up my armature in my model like this instead of connecting them inside, vertically like a skeleton?

Thanks everyone for your help.

Just made my polygon move finally, I’m sooo happy!
It only took a few minutes to connect the motion perfectly, no bone naming necessary.
I was hoping there was a shortcut way. Found it on another forum.
I’m put up a tutorial soon!

Always fun watching your meshes move :slight_smile:

That’s a good idea. Also put up your video so we can see what you do… I always like seeing WIPs.

Glad you got it figured out!

:DHere is my tute - Quickly Connect your Mesh to Mocaps
it takes a while to render on 2.49b, 30-40 minutes, for 120 frames

  • I still trying to work out how to remove the armature.
    This time I tried recording the screen to see if that would work. The render time went down a bit.

OK, thanks for the video…

I guess I didn’t understand your original question, then… I thought you wanted to know how to attach a BVH motion to an existing armature…

Yeah, of you are willing to use the default armature, you can simply parent it to your mesh, and off you go… Sorry for the confusion. I didn’t understand what you were looking for…

The challenge is if you want to use two different BVHs that use two different model setups… Or if you create a rig you really like that doesn’t match your BVH’s default armature… Then this method wouldn’t work.

But if all you want to do is attach a BVH motion to your f=rig to see it go… yeah, the way you did it is the fastest…

That’s alright, I wanted try everything that works for everyone else, to help me understand it.
I think when it comes to trying to connect two different mocap models, I’ll patch them together in Flash.
Thanks for that I didn’t expect that parenting might not work then. I read somewhere that I could copy and paste it somewhere. Will try that later.