Applying motion-capture (CMU bvh) to a non-standard armature: Rotation problems

Hi all,
I am trying to render a dataset for a computer vision system and I need multiple actions performed by different characters. Due to the size of this dataset, I need to create a workflow that could be run as a batch script (i.e. with minimal manual intervention).

I started out with free characters that are already rigged. Specifically the “super heroes” on http://tf3dm.com/3d-models/rigged-blender . They all have the same armature which would make scripting easy. These models were submitted by 3dregenerator, and work fine when the bones are manipulated manually.

For the motion capture data, I’m using the CMU dataset.

Now the problem is that the upper part of the armatures in these models are non-standard: the arm bones don’t trace the human anatomy and are placed at the joints of the arms. That makes the orientations of these bones really different than the mocap files, resulting in incorrect rotations, or rotations with a lot of offset. The legs and the rest of the body are okay.

Here are the two armatures at their resting pose:


I tried MANY different things to solve the motion mapping in the arms. These failed attempts include:

  1. Modifying the rest pose of the character so that it’ll match the mocap armature’s.
  2. Using “mocap tools” for retargeting (with or without twist correction)
  3. Applying “copy rotation” constrain and using local space <-> local space translation.
  4. Deleting these bones and redrawing new ones (this failed because I’d need to paint new weights. I can’t do that in a script)

How can I make sure that the rotations of the mocap armature will be reflected correctly on the model’s non-standard armature? Is it possible?
Has anyone successfully applied mocap data on 3dregenerator’s character’s before? Or can you recommend a character library with standardized armatures?
Thanks!