My partner and I are importing BVH animations/actions into Blender. Each has a single action and each brings in its own armature, with all armatures being the same. How would one go about turning these into a single armature possessing all of the actions, or how can we copy an action from one armature to another?
I’m not sure if this would work but you could probably duplicate the armature and parent it to the next mesh. I know that would take the actions across.
Actions (as presented in the Action Editor) can be applied only one at a time to any single Armature. However, Actions can be mixed and blended in the NLA Editor.
If an Action is listed in the “Browse existing choices” drop-down menu of the Actions Editor then it can be applied to any Armature (or Object for that matter) – the success of this of course depends on whether the Armature and Action bone names match up properly.
So, if you bring all your BVH Armatures and their Actions into a single .blend file, each Action should eventually be listed in the Actions Editor choices, and each can be applied separately to a single Armature. To make sure your Actions persist from one file closing to the next (if they don’t have users at the time the file is closed they’ll be deleted), click the “F” button near the Action name to set it up with a “Fake user.”
The NLA Editor is where you would then assign different Actions (or portions of them) to different frame ranges in the Timeline.
AFAIK there’s no simple way to combine the animations of one Action with those of another into the same Action – you’d have to make sure there’s no conflict in keyframes of the IPOs “contained” in each Action, for all bones and all channels, and then somehow copy all those IPOs into the “composite” Action – quite a task. The NLA Editor is the better place to combine and/or blend Actions.
Maybe I should spin this off into a different thread. I don’t want to hijack BS-er’s thread… but:
This is an interesting question, and the subtext is also very interesting. I think where you are heading with this is something I have also considered. Namely:
Can we create an intelligent BVH importer that lets us select a portion of a BVH motion, and apply it to an existing rig in Blender? (It has to be an existing rig, btw. You don’t want to have a bunch of armatures for your meshes and have to maintain that. That would be a nightmare. You want to create one rig, and then be able to apply different BVH files to it… or, better yet, have PORTIONS of BVH files applied.
The answer, I think, ultimately lies in a Python script (or two).
But the way of doing this is the most difficult part.
My “Day job” has consumed me lately, but I was experimenting with this. The wokflow I had arrived at (And it may not be the best) was as follows:
- Import BVH file, including armature.
- Create “Sizing Bones”. This is because I found my mesh very often did not fit the proportions of the BVH file’s. So, I created bones which were parented to the key points of the BVH armature, and made sure it wasn’t connected (ie keep offset) so i could move them later. In other words, I would add a size bone for the feet, hips, hands, and head of the BVH armature – at a minimum.
- Move the “Size bones” so they are near the correct points of my pre-existing rig (NOT the one imported with the BVH file. In fact, I would take the BVH rig and throw it on a different layer, and turn off it’s visibility, because I really don’t need it anymore)
- Parent my pre-existing rig to the new “size bones”
- Run through the animation sequence and create keys at the correct intervals. In other words, if you want to animate on 4’s and 8’s, then every four frames, I will select all of the bones in my pre-existing rig, and create a key for them. (One of the problems with BVH is it keys every bone on every frame. I find this is really a problem if I want to tweak things…)
- Now I can delete the BVH armature and the size bones, because the animation sequence I want is now keyed for my pre-existing rig.
I could repeat this as much as I want for new BVH files.
Much of this could be automated in a Python script, but before I got that far, I had to get back to the job that pays my bills! I will try again later… but that is what I came up with.
So… I guess one questions is: Blender Artists, does this approach make sense? Or is there a better way out there to apply BVH files to an existing rig?
@MarkJoel60 – sounds like a pretty good pipeline, and as long as you’re adding new keyframes for your pre-existing rig (I assume the BVH import process lets you specify where in the Timeline the import is active?), then all the imported Actions can be “transcribed” into a single Action, or as many as the animator needs. This sounds like a way of combining the BVH Actions, though indirectly.
Not that I can see. It allows you to specify a starting frame, but kt simply leaves a blank at the beginning and then imports the whole clip. So, if you say you want to start on the 5th frame, then the first five frames have nothing, and then the BVH starts at frame 6.
I haven’t played with all of the setting, but that looks like what happens.
Looks like there a couple of options for building a “BVH Action library” in a file – use MarkJoel60s process to keyframe the desired BVH motion into a new Action, or import many BVH Actions and keep them persistent (Fake User) for use with a single rig, with or without NLA, but probably “with” for more complex animations using many Actions.
I’m not sure whether the Actions a BVH import brings with it can be directly applied to a rig other than the BVH rig (or one identical to it) with any success, so that is a question (adapting the Action to custom rigs) yet to be resolved. MarkJoel60 seems to have addressed this in his procedure, though.
I think this has all addressed the OP’s question, so I wouldn’t worry about a hijacking charge