diff --git a/scripts/addons_core/pose_library/pose_creation.py b/scripts/addons_core/pose_library/pose_creation.py index 4c64285a164..a22101d8c9b 100644 --- a/scripts/addons_core/pose_library/pose_creation.py +++ b/scripts/addons_core/pose_library/pose_creation.py @@ -30,7 +30,6 @@ from bpy.types import ( FCurve, Keyframe, ) -from bpy_extras import anim_utils FCurveValue = Union[float, int] @@ -78,6 +77,7 @@ class PoseActionCreator: def create(self) -> Optional[Action]: """Create a single-frame Action containing only the given bones, or None if no anim data was found.""" + from bpy_extras import anim_utils try: dst_action = self._create_new_action() @@ -116,6 +116,8 @@ class PoseActionCreator: def _store_animated_parameters(self, dst_channelbag: ActionChannelbag) -> None: """Store the current value of any animated bone properties.""" + from bpy_extras import anim_utils + if self.params.src_action is None: return src_channelbag = anim_utils.action_get_channelbag_for_slot(self.params.src_action, self.params.src_action_slot) diff --git a/scripts/modules/animsys_refactor.py b/scripts/modules/animsys_refactor.py index c187e83167e..c91e344a8b1 100644 --- a/scripts/modules/animsys_refactor.py +++ b/scripts/modules/animsys_refactor.py @@ -16,8 +16,6 @@ import sys import bpy -from bpy_extras import anim_utils - IS_TESTING = False @@ -153,6 +151,7 @@ def update_data_paths(rna_update, log=sys.stdout): and options is an opaque data. class_name, fcurve and options may be None! """ + from bpy_extras import anim_utils rna_update_from_map = {} for ren_class, ren_from, ren_to, options in rna_update: diff --git a/scripts/startup/bl_operators/object.py b/scripts/startup/bl_operators/object.py index bf58875f403..2ccf13997c5 100644 --- a/scripts/startup/bl_operators/object.py +++ b/scripts/startup/bl_operators/object.py @@ -14,7 +14,6 @@ from bpy.app.translations import ( pgettext_rpt as rpt_, contexts as i18n_contexts, ) -from bpy_extras import anim_utils class SelectPattern(Operator): @@ -821,6 +820,8 @@ class TransformsToDeltasAnim(Operator): return (obs is not None) def execute(self, context): + from bpy_extras import anim_utils + # map from standard transform paths to "new" transform paths STANDARD_TO_DELTA_PATHS = { "location": "delta_location", diff --git a/scripts/startup/bl_operators/rigidbody.py b/scripts/startup/bl_operators/rigidbody.py index e4e5768cdc8..19f85e7fdf8 100644 --- a/scripts/startup/bl_operators/rigidbody.py +++ b/scripts/startup/bl_operators/rigidbody.py @@ -8,7 +8,6 @@ from bpy.props import ( EnumProperty, IntProperty, ) -from bpy_extras import anim_utils class CopyRigidbodySettings(Operator): @@ -107,6 +106,8 @@ class BakeToKeyframes(Operator): return (obj and obj.rigid_body) def execute(self, context): + from bpy_extras import anim_utils + bake = [] objects = [] scene = context.scene diff --git a/scripts/startup/bl_operators/sequencer.py b/scripts/startup/bl_operators/sequencer.py index 77d2addd4c8..fdb0382a722 100644 --- a/scripts/startup/bl_operators/sequencer.py +++ b/scripts/startup/bl_operators/sequencer.py @@ -14,7 +14,6 @@ from bpy.props import ( IntProperty, ) from bpy.app.translations import pgettext_rpt as rpt_ -from bpy_extras import anim_utils def _animated_properties_get(strip): @@ -146,6 +145,8 @@ class SequencerFadesClear(Operator): return strip is not None def execute(self, context): + from bpy_extras import anim_utils + scene = context.scene animation_data = scene.animation_data if animation_data is None: