3
$\begingroup$

I have a complex scene with physics (not baked) and I discovered a long way into the scene that I need to scale everything up for the physics to do it's thing right. I scaled everything up, pressed play and everything went to crap. My keyframes are interfering. Is there a way to set the scale of all of the objects across all of the keyframes without messing up the other keyframe settings?

$\endgroup$
  • 2
    $\begingroup$ You can try to parent all objects to an empty and scale the empty. $\endgroup$ – p2or Mar 27 '15 at 16:20
  • $\begingroup$ I gave it a try and it screwed all of the physics up. Command Z and try again! $\endgroup$ – Daniel Mar 27 '15 at 16:26
  • 3
    $\begingroup$ As alternative you can try to set the scene scale. $\endgroup$ – p2or Mar 27 '15 at 16:29
  • $\begingroup$ What's the best way to do that? $\endgroup$ – Daniel Mar 27 '15 at 16:42
  • $\begingroup$ There is only one: Properties Panel > Scene Tab (3. Icon) > Units $\endgroup$ – p2or Mar 27 '15 at 16:45
1
$\begingroup$

If your keyframes are interfering then that means you have keyframed the scale values of all or some of your objects.

If the scale doesn't change throughout your animation then you can delete all the scale keyframes and adjust the scale as you want. Using either the dopesheet or the graph editor, in the header you will find a little magnifying glass, clicking this will show a text box where you can enter scale then press ⏎ Enter, this will filter the display to only show scale channels so you can easily select all A and delete X.

Once the scale keyframes have been removed you can select all the objects and by using the object properties panel right click on the scale values and select copy to selected.

enter image description here

There is also an addon called Copy attributes menu that adds a menu to ⎈ CtrlC that allows you to copy attributes to all selected objects.

If you have keyframed changes in the scale values then you will want to use the graph editor, use the filter to show only scale channels. Now you can select all A and move them only on the Y axis to the size you want, GY. You can either move them a specific amount by entering a number or watch the scale properties as you move it.

$\endgroup$
1
$\begingroup$

Set the scale to the value you need and all the scale keyframes will be updated accordingly :

import bpy

scale = 2     #change this value  'scaling factor'

for action in  bpy.data.actions :
    for fcurve in action.fcurves :
        if fcurve.data_path == 'scale':
            for p in fcurve.keyframe_points :
                p.co[1] *= scale
$\endgroup$

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.