Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-01-23 18:30:46 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-01-23 18:30:46 +0400
commit09b3e8723ad6e709cc150a6aa7bb4d94bcd2695e (patch)
tree59b17f6498b87d170414d1824027d5e6c57b4082 /io_export_after_effects.py
parenta7fb1b31d8e7c3dade15a17aaeb5e7f3d75431f0 (diff)
pep8'ify
Diffstat (limited to 'io_export_after_effects.py')
-rw-r--r--io_export_after_effects.py161
1 files changed, 83 insertions, 78 deletions
diff --git a/io_export_after_effects.py b/io_export_after_effects.py
index 8a56f4a3..119bbd84 100644
--- a/io_export_after_effects.py
+++ b/io_export_after_effects.py
@@ -1,9 +1,9 @@
-# ***** BEGIN GPL LICENSE BLOCK *****
+# ##### BEGIN GPL LICENSE BLOCK #####
#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -11,12 +11,13 @@
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-# The Original Code is: all of this file.
-#
-# ***** END GPL LICENSE BLOCK *****
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
+# ##### END GPL LICENSE BLOCK #####
+
+# <pep8 compliant>
+
bl_info = {
'name': 'Export: Adobe After Effects (.jsx)',
'description': 'Export cameras, selected objects & camera solution 3D Markers to Adobe After Effects CS3 and above',
@@ -63,6 +64,7 @@ def get_comp_data(context):
'curframe': scene.frame_current,
}
+
# create list of active camera for each frame in case active camera is set by markers
def get_active_cam_for_each_frame(scene, start, end):
active_cam_frames = []
@@ -73,15 +75,15 @@ def get_active_cam_for_each_frame(scene, start, end):
if marker.camera:
sorted_markers.append([marker.frame, marker])
sorted_markers = sorted(sorted_markers)
-
- for i, marker in enumerate (sorted_markers):
+
+ for i, marker in enumerate(sorted_markers):
cam = marker[1].camera
if i is 0 and marker[0] > start:
start_range = start
else:
start_range = sorted_markers[i][0]
if len(sorted_markers) > i + 1:
- end_range = sorted_markers[i+1][0] - 1
+ end_range = sorted_markers[i + 1][0] - 1
else:
end_range = end
for i in range(start_range, end_range + 1):
@@ -91,7 +93,8 @@ def get_active_cam_for_each_frame(scene, start, end):
# in this case active_cam_frames array will have legth of 1. This will indicate that there is only one active cam in all frames
active_cam_frames.append(scene.camera)
- return(active_cam_frames)
+ return(active_cam_frames)
+
# create managable list of selected objects
def get_selected(context):
@@ -108,7 +111,7 @@ def get_selected(context):
elif is_plane(ob):
# not ready yet. is_plane(object) returns False in all cases. This is temporary
solids.append([ob, convert_name(ob.name)])
-
+
elif ob.type == 'LAMP':
# not ready yet. Lamps will be exported as nulls. This is temporary
nulls.append([ob, convert_name(ob.name)])
@@ -125,18 +128,20 @@ def get_selected(context):
return selection
+
# check if object is plane and can be exported as AE's solid
def is_plane(object):
# work in progress. Not ready yet
return False
+
# convert names of objects to avoid errors in AE.
def convert_name(name):
name = "_" + name
if name[0].isdigit():
name = "_" + name
-
+
name = bpy.path.clean_name(name)
name = name.replace("-", "_")
@@ -219,7 +224,8 @@ def convert_transform_matrix(matrix, width, height, aspect, x_rot_correction=Fal
#
# above is true if square pixels are used. If not - aspect compensation is needed, so final formula is:
# zoom = lens * dimension / sensor * aspect
-#
+
+
def convert_lens(camera, width, height, aspect):
if camera.data.sensor_fit == 'VERTICAL':
sensor = camera.data.sensor_height
@@ -227,7 +233,7 @@ def convert_lens(camera, width, height, aspect):
else:
sensor = camera.data.sensor_width
dimension = width
-
+
zoom = camera.data.lens * dimension / sensor * aspect
return zoom
@@ -284,28 +290,28 @@ def write_jsx_file(file, data, selection, include_active_cam, include_selected_c
'rotationX': '',
'zoom': '',
}
-
+ '''
# create structure for solids. Not ready yet. Temporarily not active
-# for i, obj in enumerate(selection['solids']):
-# name_ae = selection['solids'][i][1]
-# js_data['solids'][name_ae] = {
-# 'position': '',
-# 'orientation': '',
-# 'rotationX': '',
-# 'scale': '',
-# }
-
- # create structure for lights. Not ready yet. Temporarily not active
-# for i, obj in enumerate(selection['lights']):
-# name_ae = selection['lights'][i][1]
-# js_data['nulls'][name_ae] = {
-# 'position': '',
-# 'orientation': '',
-# 'rotationX': '',
-# 'scale': '',
-# }
-
-
+ for i, obj in enumerate(selection['solids']):
+ name_ae = selection['solids'][i][1]
+ js_data['solids'][name_ae] = {
+ 'position': '',
+ 'orientation': '',
+ 'rotationX': '',
+ 'scale': '',
+ }
+
+ # create structure for lights. Not ready yet. Temporarily not active
+ for i, obj in enumerate(selection['lights']):
+ name_ae = selection['lights'][i][1]
+ js_data['nulls'][name_ae] = {
+ 'position': '',
+ 'orientation': '',
+ 'rotationX': '',
+ 'scale': '',
+ }
+ '''
+
# create structure for nulls
for i, obj in enumerate(selection['nulls']): # nulls representing blender's obs except cameras, lamps and solids
if include_selected_objects:
@@ -354,8 +360,7 @@ def write_jsx_file(file, data, selection, include_active_cam, include_selected_c
matrix = Matrix.Translation(cam.matrix_basis.copy() * track.bundle)
# convert the position into AE space
ae_transform = convert_transform_matrix(matrix, data['width'], data['height'], data['aspect'], x_rot_correction=False)
- js_data['bundles_cam'][name_ae]['position'] += '[%f,%f,%f],' % (ae_transform[0], ae_transform[1], ae_transform[2])
-
+ js_data['bundles_cam'][name_ae]['position'] += '[%f,%f,%f],' % (ae_transform[0], ae_transform[1], ae_transform[2])
# get all keyframes for each object and store in dico
for frame in range(data['start'], data['end'] + 1):
@@ -401,21 +406,21 @@ def write_jsx_file(file, data, selection, include_active_cam, include_selected_c
js_data['cameras'][name_ae]['orientation'] += '[%f,%f,%f],' % (0, ae_transform[4], ae_transform[5])
js_data['cameras'][name_ae]['rotationX'] += '%f ,' % (ae_transform[3])
js_data['cameras'][name_ae]['zoom'] += '[%f],' % (zoom)
-
-
- # keyframes for all solids. Not ready yet. Temporarily not active
-# for i, ob in enumerate(selection['solids']):
-# #get object name
-# name_ae = selection['solids'][i][1]
-# #convert ob position to AE space
+ '''
+ # keyframes for all solids. Not ready yet. Temporarily not active
+ for i, ob in enumerate(selection['solids']):
+ #get object name
+ name_ae = selection['solids'][i][1]
+ #convert ob position to AE space
- # keyframes for all lights. Not ready yet. Temporarily not active
-# for i, ob in enumerate(selection['lights']):
-# #get object name
-# name_ae = selection['lights'][i][1]
-# #convert ob position to AE space
+ # keyframes for all lights. Not ready yet. Temporarily not active
+ for i, ob in enumerate(selection['lights']):
+ #get object name
+ name_ae = selection['lights'][i][1]
+ #convert ob position to AE space
+ '''
# keyframes for all nulls
if include_selected_objects:
@@ -467,7 +472,7 @@ def write_jsx_file(file, data, selection, include_active_cam, include_selected_c
jsx_file.write('%s.threeDLayer = true;\n' % name_ae)
jsx_file.write('%s.source.name = "%s";\n' % (name_ae, name_ae))
jsx_file.write('%s.property("position").setValue(%s);\n\n\n' % (name_ae, js_data['bundles_cam'][obj]['position']))
-
+
# create object bundles (not ready yet)
# create objects (nulls)
@@ -538,46 +543,46 @@ class ExportJsx(bpy.types.Operator, ExportHelper):
bl_label = "Export to Adobe After Effects"
filename_ext = ".jsx"
filter_glob = StringProperty(default="*.jsx", options={'HIDDEN'})
-
+
include_active_cam = BoolProperty(
- name = "Active Camera",
- description = "Include Active Camera Data",
- default = True,
+ name="Active Camera",
+ description="Include Active Camera Data",
+ default=True,
)
include_selected_cams = BoolProperty(
- name = "Selected Cameras",
- description = "Add Selected Cameras Data",
- default = True,
+ name="Selected Cameras",
+ description="Add Selected Cameras Data",
+ default=True,
)
include_selected_objects = BoolProperty(
- name = "Selected Objects",
- description = "Add Selected Objects Data",
- default = True,
+ name="Selected Objects",
+ description="Add Selected Objects Data",
+ default=True,
)
include_rotation = BoolProperty(
- name = "Rotation",
- description ="Include rotation of selected objects",
- default = True,
+ name="Rotation",
+ description="Include rotation of selected objects",
+ default=True,
)
include_scale = BoolProperty(
- name = "Scale",
- description = "Include scale of selected object",
- default = True,
+ name="Scale",
+ description="Include scale of selected object",
+ default=True,
)
include_cam_bundles = BoolProperty(
- name = "Camera 3D Markers",
- description = "Include 3D Markers of Camera Motion Solution for selected cameras",
- default = True,
+ name="Camera 3D Markers",
+ description="Include 3D Markers of Camera Motion Solution for selected cameras",
+ default=True,
)
# include_ob_bundles = BoolProperty(
-# name = "Objects 3D Markers",
-# description = "Include 3D Markers of Object Motion Solution for selected cameras",
-# default = True,
+# name="Objects 3D Markers",
+# description="Include 3D Markers of Object Motion Solution for selected cameras",
+# default=True,
# )
def draw(self, context):
layout = self.layout
-
+
box = layout.box()
box.label('Include Cameras and Objects:')
box.prop(self, 'include_active_cam')
@@ -616,4 +621,4 @@ def unregister():
bpy.types.INFO_MT_file_export.remove(menu_func)
if __name__ == "__main__":
- register() \ No newline at end of file
+ register()