Sharing animations.

What is the best way to share animations for a model that has different proportions. For example when i apply a new rig with the same hierarchy same joints… basically taking the first rig, what is the best way to size it up to the new model?

Should I translate the joints, rotate them? What could and would go wrong? Basically i dont want to retarget as a different skeleton… Basically do rotations need to remain the same in numeric value without being able to be adjusted? Or what…?

did you try assign skeleton after import? Then you dont have to re target anims.

Well im binding skeleton to a new model that is a bit different in elbow positions and stuff like that… and im just tryn to figure out if rotating joints to fit is a good idea espeacially since i want to keep joint orients lined up. Translating joints was never a good idea but then again i have no idea how unreal handles htis… espeacially since i want IK to work. So im pretty much just confused on how i should position joints translate and rotate with the same hierachy from an older skeleton (unreals) I want to reuse animations that used that skeleton…

You should scale the bones, that way they keep their original orientations. Then try setting the retargeting dropdown for the bone to AnimationScaled and see if it looks good.

what if the shoulders are in a different position. Do I ever use translate? And another question … so is rotating joints into position a no go as in should i never rotate the skeleton into postion to match better?

If the shoulders are in a different position you can still scale the clavicle bones. Also if you really need a different position you can move all of the bones starting from the shoulder to the fingers, that way orientations should stay the same. Same thing for legs and so on.

Rotating joints will mess up the animations when retargeted. Instead of rotating the bones of the rig to fit the mesh I would edit the mesh to fit the rig, at least if you want shareable animations.

well, I like to share animation on my social profiles, but that is not usefull all the time) so I am also interested in that question

i dont understand… if u use translate on say an elbow or wrist… then the orients will no longer line up… i dont know how iks work in unreal, but that would screw up iks in maya. Then the question is what about wrist turn joints… the rotations will no longer line up exactly. Your going to get a wobbaling wrist.

If you just scale with the top of the bone as the pivot, orientations will line up perfectly. If you make too huge of a change things will look different even though they have the same orientation. Example:

http://i.imgur.com/mZvpuuv.png

You can see that the arms are a bit lower compared to the original animation (Jog_Fwd_Rifle) because the shoulders and arms are much bigger. They still have the right orientation. The shoulders look messed up because of weights and the shoulders, I only resized the arms. On a normal character they would look the same as the smaller character.

If you move the whole chain you’re right that the orientations will change, but only the orientation between the spine (or whatever it is) and the clavicle, assuming you moved every bone under clavicle bone too. You would need to fix this by changing the retargeting base pose. It’s pretty easy however since the addition of being able to use a pose asset as a retargeting base pose.

In Blender you would add your original mannequin style character (in my case the UE4Tools rig) then constrain your changed rig to the original rig using Copy Location constraints on the clavicle bones. After that do Bake Action with visual keying on frame 2 to frame 2 and insert locrot keyframes for all bones, then go to frame 1 and reset all bones and insert keyframes again. Export the character with the animation, then in UE4 right click the animation and create a pose asset from it. Then in the skeleton retargeting manager screen click Modify Pose and choose the pose asset and the pose with the changed pose (probably second pose) and do Import. That’s it. The result should look something like this:

http://i.imgur.com/YjVT4o1.png

You can see that the orientations for the arms are correct even though the shoulders are in a completely different location. Again the mesh is not correct (I just moved the whole arms without doing anything) but with a real character it would look perfect.

Edit: Actually I picked a broken animation (twist bones not at the right location). Setting the twist bones to Skeleton made the character look like this:


Looks pretty good considering the (lack of) time I spent on it.

Well the rule is the animations have to match the rig so if you up the scale of some of the joints the animation that is applied based on the original rig will pull and scale the joints back to their original state. A way that does work, as in I’ve already tested it, is to set the joints into the desired position and then export the a single base pose frame as an animation sequence. From there you can add the pose to the animation migration path and any animation targeted towards the rig should be applied as an additive and not as an absolute.

I meant actually changing the scale of the bone in the mode in the 3d software that doesn’t set the scale to anything other than 1. In Blender this is done in edit mode (versus doing animation in pose mode). Thus in any animations the scale would still be 1. If you do this you can retarget animations from other rigs and they’ll still work. Even for crazy rigs, if you’ve got a mannequin pose in a pose asset (easily done by constraining the bones to a mannequin like rig and baking keyframes) you can end up with really good retargeting results. I’m guessing something like this is coming to UE4 later with the control rig sequence stuff which would give real time retargeting.