[Bf-extensions-cvs] [5c634a4] master: After Effects export: cleanup - remove "data" dict

Damien Picard noreply at git.blender.org
Wed May 25 12:43:15 CEST 2022


Commit: 5c634a4378dea4104c1455110d442691776c3701
Author: Damien Picard
Date:   Thu May 19 17:37:14 2022 +0200
Branches: master
https://developer.blender.org/rBAC5c634a4378dea4104c1455110d442691776c3701

After Effects export: cleanup - remove "data" dict

This dict is only used from the write_jsx_file function, so its
content can be stored directly there instead of passed around.

===================================================================

M	io_export_after_effects.py

===================================================================

diff --git a/io_export_after_effects.py b/io_export_after_effects.py
index 2b13b57..dccb56c 100644
--- a/io_export_after_effects.py
+++ b/io_export_after_effects.py
@@ -40,31 +40,6 @@ from math import degrees, floor
 from mathutils import Matrix, Vector, Color
 
 
-def get_comp_data(context):
-    """Create list of static blender's data"""
-    scene = context.scene
-    aspect_x = scene.render.pixel_aspect_x
-    aspect_y = scene.render.pixel_aspect_y
-    aspect = aspect_x / aspect_y
-    start = scene.frame_start
-    end = scene.frame_end
-    active_cam_frames = get_active_cam_for_each_frame(scene, start, end)
-    fps = scene.render.fps / scene.render.fps_base
-
-    return {
-        'scn': scene,
-        'width': scene.render.resolution_x,
-        'height': scene.render.resolution_y,
-        'aspect': aspect,
-        'fps': fps,
-        'start': start,
-        'end': end,
-        'duration': (end - start + 1.0) / fps,
-        'active_cam_frames': active_cam_frames,
-        'frame_current': scene.frame_current,
-        }
-
-
 def get_active_cam_for_each_frame(scene, start, end):
     """Create list of active camera for each frame in case active camera is set by markers"""
     active_cam_frames = []
@@ -107,8 +82,8 @@ class ObjectExport():
         self.name_ae = convert_name(self.obj.name)
         self.keyframes = {}
 
-    def get_prop_keyframe(self, context, prop_name, value, time):
-        """Set keyframe for given property"""
+    def get_prop_keyframe(self, prop_name, value, time):
+        """Get keyframe for given property, only if different from previous value"""
         prop_keys = self.keyframes.setdefault(prop_name, [])
         if len(prop_keys) == 0:
             prop_keys.append([time, value, False])
@@ -121,19 +96,19 @@ class ObjectExport():
         else:
             prop_keys[-1][2] = True
 
-    def get_keyframe(self, context, data, time, ae_size):
+    def get_keyframe(self, context, width, height, aspect, time, ae_size):
         """Store animation for the current frame"""
         ae_transform = convert_transform_matrix(self.obj.matrix_world,
-                                                data['width'], data['height'],
-                                                data['aspect'], True, ae_size)
+                                                width, height,
+                                                aspect, True, ae_size)
 
-        self.get_prop_keyframe(context, 'position', ae_transform[0:3], time)
-        self.get_prop_keyframe(context, 'orientation', ae_transform[3:6], time)
-        self.get_prop_keyframe(context, 'scale', ae_transform[6:9], time)
+        self.get_prop_keyframe('position', ae_transform[0:3], time)
+        self.get_prop_keyframe('orientation', ae_transform[3:6], time)
+        self.get_prop_keyframe('scale', ae_transform[6:9], time)
 
     def get_obj_script(self, include_animation):
         """Get the JSX script for the object"""
-        return self.get_type_script() + self.get_prop_script(include_animation) + self.get_post_script()
+        return self.get_type_script() + self.get_anim_script(include_animation) + self.get_post_script()
 
     def get_type_script(self):
         """Get the basic part of the JSX script"""
@@ -142,22 +117,22 @@ class ObjectExport():
         type_script += f'{self.name_ae}.source.name = "{self.name_ae}";\n'
         return type_script
 
-    def get_prop_script(self, include_animation):
+    def get_anim_script(self, include_animation):
         """Get the part of the JSX script encoding animation"""
-        prop_script = ""
+        anim_script = ""
 
         # Set values of properties, add keyframes only where needed
         for prop, keys in self.keyframes.items():
             if include_animation and len(keys) > 1:
                 times = ",".join(str(k[0]) for k in keys)
                 values = ",".join(str(k[1]) for k in keys).replace(" ", "")
-                prop_script += (
+                anim_script += (
                     f'{self.name_ae}.property("{prop}").setValuesAtTimes([{times}],[{values}]);\n')
 
                 # Set to HOLD the frames after which animation is fixed
                 # for several frames, to avoid interpolation errors
                 if any(k[2] for k in keys):
-                    prop_script += (
+                    anim_script += (
                         f'var hold_frames = {[i + 1 for i, k in enumerate(keys) if k[2]]};\n'
                         'for (var i = 0; i < hold_frames.length; i++) {\n'
                         f'  {self.name_ae}.property("{prop}").setInterpolationTypeAtKey(hold_frames[i], KeyframeInterpolationType.HOLD);\n'
@@ -166,27 +141,28 @@ class ObjectExport():
             # No animation for this property
             else:
                 value = str(keys[0][1]).replace(" ", "")
-                prop_script += (
+                anim_script += (
                     f'{self.name_ae}.property("{prop}").setValue({value});\n')
-        prop_script += '\n'
 
-        return prop_script
+        anim_script += '\n'
+
+        return anim_script
 
     def get_post_script(self):
         """This is only used in lights as a post-treatment after animation"""
         return ""
 
 class CameraExport(ObjectExport):
-    def get_keyframe(self, context, data, time, ae_size):
+    def get_keyframe(self, context, width, height, aspect, time, ae_size):
         ae_transform = convert_transform_matrix(self.obj.matrix_world,
-                                                data['width'], data['height'],
-                                                data['aspect'], True, ae_size)
-        zoom = convert_lens(self.obj, data['width'], data['height'],
-                            data['aspect'])
+                                                width, height,
+                                                aspect, True, ae_size)
+        zoom = convert_lens(self.obj, width, height,
+                            aspect)
 
-        self.get_prop_keyframe(context, 'position', ae_transform[0:3], time)
-        self.get_prop_keyframe(context, 'orientation', ae_transform[3:6], time)
-        self.get_prop_keyframe(context, 'zoom', zoom, time)
+        self.get_prop_keyframe('position', ae_transform[0:3], time)
+        self.get_prop_keyframe('orientation', ae_transform[3:6], time)
+        self.get_prop_keyframe('zoom', zoom, time)
 
     def get_type_script(self):
         type_script = f'var {self.name_ae} = newComp.layers.addCamera("{self.name_ae}",[0,0]);\n'
@@ -195,24 +171,24 @@ class CameraExport(ObjectExport):
 
 
 class LightExport(ObjectExport):
-    def get_keyframe(self, context, data, time, ae_size):
+    def get_keyframe(self, context, width, height, aspect, time, ae_size):
         ae_transform = convert_transform_matrix(self.obj.matrix_world,
-                                                data['width'], data['height'],
-                                                data['aspect'], True, ae_size)
+                                                width, height,
+                                                aspect, True, ae_size)
         self.type = self.obj.data.type
         color = list(self.obj.data.color)
         intensity = self.obj.data.energy * 10.0
 
-        self.get_prop_keyframe(context, 'position', ae_transform[0:3], time)
+        self.get_prop_keyframe('position', ae_transform[0:3], time)
         if self.type in {'SPOT', 'SUN'}:
-            self.get_prop_keyframe(context, 'orientation', ae_transform[3:6], time)
-        self.get_prop_keyframe(context, 'intensity', intensity, time)
-        self.get_prop_keyframe(context, 'Color', color, time)
+            self.get_prop_keyframe('orientation', ae_transform[3:6], time)
+        self.get_prop_keyframe('intensity', intensity, time)
+        self.get_prop_keyframe('Color', color, time)
         if self.type == 'SPOT':
             cone_angle = degrees(self.obj.data.spot_size)
-            self.get_prop_keyframe(context, 'Cone Angle', cone_angle, time)
+            self.get_prop_keyframe('Cone Angle', cone_angle, time)
             cone_feather = self.obj.data.spot_blend * 100.0
-            self.get_prop_keyframe(context, 'Cone Feather', cone_feather, time)
+            self.get_prop_keyframe('Cone Feather', cone_feather, time)
 
     def get_type_script(self):
         type_script = f'var {self.name_ae} = newComp.layers.addLight("{self.name_ae}", [0.0, 0.0]);\n'
@@ -232,14 +208,14 @@ class LightExport(ObjectExport):
 
 
 class ImageExport(ObjectExport):
-    def get_keyframe(self, context, data, time, ae_size):
+    def get_keyframe(self, context, width, height, aspect, time, ae_size):
         # Convert obj transform properties to AE space
         plane_matrix = get_image_plane_matrix(self.obj)
         # Scale plane to account for AE's transforms
-        plane_matrix = plane_matrix @ Matrix.Scale(100.0 / data['width'], 4)
+        plane_matrix = plane_matrix @ Matrix.Scale(100.0 / width, 4)
 
-        ae_transform = convert_transform_matrix(plane_matrix, data['width'],
-                                                data['height'], data['aspect'],
+        ae_transform = convert_transform_matrix(plane_matrix, width,
+                                                height, aspect,
                                                 True, ae_size)
         opacity = 0.0 if self.obj.hide_render else 100.0
 
@@ -247,7 +223,7 @@ class ImageExport(ObjectExport):
             self.filepath = get_image_filepath(self.obj)
 
         image_width, image_height = get_image_size(self.obj)
-        ratio_to_comp = image_width / data['width']
+        ratio_to_comp = image_width / width
         scale = ae_transform[6:9]
         if image_height != 0.0:
             scale[1] *= image_width / image_height
@@ -255,10 +231,10 @@ class ImageExport(ObjectExport):
             scale[0] /= ratio_to_comp
             scale[1] /= ratio_to_comp
 
-        self.get_prop_keyframe(context, 'position', ae_transform[0:3], time)
-        self.get_prop_keyframe(context, 'orientation', ae_transform[3:6], time)
-        self.get_prop_keyframe(context, 'scale', scale, time)
-        self.get_prop_keyframe(context, 'opacity', opacity, t

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list