1
$\begingroup$

I have two separate motion capture fbx's, one being the body which is 100 fps and the face being 24 fps. I just brought the both of them to blender 2.9 however since they both are two separate fps' and I'm trying to combine them to one character I don't know how to do so without one being faster or slower. I did some research beforehand and was fiddling around with the time remapping but it didn't do any good since the body and head just animated at different fps. I wish to get my head motion capture data to be at the same speed as my body motion capture which is 100fps. Can somebody help? Thank you.

Update: I did what was suggested by scaling the x axis of the face motion capture in the graph editor and reducing it by 0.24. My results where that the face animation went faster when the fps was set to 100fps which is the opposite of what I need it to do. I'm going to test out the inverse of what I input and see if it will fix the issue

Update 2: I rescaled the body animation so that it is at the same speed as the face animation by reducing it by 0.24. When I change the overall animation fps to 24fps then both the animations move at the same speed. However since I want both the animations to be at 100 fps I switched the frame rate back to 100 fps and I am trying to figure out how to remap 24fps to 100 fps in the time remapping.

$\endgroup$
5
  • $\begingroup$ Scale the imported keyframes on the x axis in the graph editor by 24/100. $\endgroup$
    – Leander
    Sep 23 '20 at 16:37
  • $\begingroup$ Thank you for the reply. Do I just eyeball it to get it from 24fps to 100 fps? or is there something I can click so that it does it correctly? Im still super new. $\endgroup$
    – Stunkulon
    Sep 23 '20 at 16:51
  • $\begingroup$ You can enter values with your keyboard. After selecting all the keyframes in the graph editor (A), hover over them and press S (scale) X (constrain scale to x axis) and continue with .24 to scale by 0.24. Press enter or click your action mouse button to confirm the new scale. $\endgroup$
    – Leander
    Sep 23 '20 at 17:06
  • 1
    $\begingroup$ If you have trouble with this or want to add information, just edit your question with more details. It is helpful to know what you have tried or what your skill level is for creating a good answer. $\endgroup$
    – Leander
    Sep 23 '20 at 17:07
  • 1
    $\begingroup$ Consider using the NLA editor for a non destructive way to scale duration of an action. $\endgroup$
    – batFINGER
    Sep 23 '20 at 17:40
1
$\begingroup$

The NLA Editor

Could consider dropping the actions into the NLA editor and scaling them to match.

For example sake have two actions 100 frames of an 100 frame per second action and 24 frames of a 24 frame per second action. At there designated frame rates each would last one second.

As noted in question if scene frame rate is 24 FPS the 100 frame action goes for 100 / 24 (approx 4 seconds), or conversely if at 100 fps the 24 frame per second lasts 24 / 100 seconds.

enter image description here

Among a few ways to animate time in the NLA editor can simply scale the length of one to match the other.

Drive the strip scale.

Better still can add a driver using the scene frame rate

Setting up the driver, right click in the scale property box and choose add driver

enter image description here

Add a single property variable, name it "fps" and point it to scene.render.fps by choosing scene and crunching render.fps as the data path. Now for the 24 frame per second action make the driver expression

24 / fps

copy the driver, paste into the 100 FPS strip scale property. Change the expression to

100 / fps

Now the two strips will match length, eg at 24 fps the 24 fps is 24 frames long and taking up 1 second, as is the 100 fps and vice versa.

enter image description here

Please note, could associate an fps with the action and use it in driver expression. Also for the correct fps the scene.render.frame_base property should be taken into account, eg at 23.98 fps the fps is 24 and the base is 1.001, ie actual frame rate = scene.render.fps / scene.render.fps_base.

$\endgroup$
1
  • $\begingroup$ Thank you. I'm going to try both methods out. I'm not sure how well they might go due to the face animation being shorter than the body animation since they where recorded at seperate times However I'll make sure to follow up and post my results. $\endgroup$
    – Stunkulon
    Sep 23 '20 at 20:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.