[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [1207] trunk/py/scripts/addons/ object_animrenderbake.py: SVN maintenance.
gsr b3d
gsr.b3d at infernal-iceberg.com
Sat Nov 27 20:08:16 CET 2010
Revision: 1207
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-extensions&revision=1207
Author: gsrb3d
Date: 2010-11-27 20:08:16 +0100 (Sat, 27 Nov 2010)
Log Message:
-----------
SVN maintenance.
Modified Paths:
--------------
trunk/py/scripts/addons/object_animrenderbake.py
Property Changed:
----------------
trunk/py/scripts/addons/object_animrenderbake.py
Modified: trunk/py/scripts/addons/object_animrenderbake.py
===================================================================
--- trunk/py/scripts/addons/object_animrenderbake.py 2010-11-27 12:07:28 UTC (rev 1206)
+++ trunk/py/scripts/addons/object_animrenderbake.py 2010-11-27 19:08:16 UTC (rev 1207)
@@ -1,184 +1,184 @@
-# ##### 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 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
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# 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, write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-# ##### END GPL LICENSE BLOCK #####
-
-bl_addon_info = {
- "name": "Animated Render Baker",
- "author": "Janne Karhu (jahka)",
- "version": (1, 0),
- "blender": (2, 5, 5),
- "location": "Render Properties > Bake",
- "description": "Renderbakes a series of frames",
- "category": "Object",
- 'wiki_url': 'http://wiki.blender.org/index.php/Extensions:2.5/Py/' \
- 'Scripts/Object/Animated_Render_Baker',
- 'tracker_url': 'https://projects.blender.org/tracker/index.php?'\
- 'func=detail&aid=24836&group_id=153&atid=467'}
-
-import bpy
-from bpy.props import *
-
-class OBJECT_OT_animrenderbake(bpy.types.Operator):
- bl_label = "Animated Render Bake"
- bl_description= "Bake animated image textures of selected objects"
- bl_idname = "object.anim_bake_image"
- bl_register = True
-
- def framefile(self, orig, frame):
- '''
- Set frame number to file name image.png -> image0013.png
- '''
- dot = orig.rfind(".")
- return orig[:dot] + ('%04d' % frame) + orig[dot:]
-
- def invoke(self, context, event):
- import bpy
- import shutil
-
- scene = context.scene
-
- start = scene.animrenderbake_start
- end = scene.animrenderbake_end
-
- # Check for errors before starting
- if start >= end:
- self.report({'ERROR'}, "Start frame must be smaller than end frame")
- return {'CANCELLED'}
-
- selected = context.selected_objects
-
- # Only single object baking for now
- if scene.render.use_bake_selected_to_active:
- if len(selected) > 2:
- self.report({'ERROR'}, "Select only two objects for animated baking")
- return {'CANCELLED'}
- elif len(selected) > 1:
- self.report({'ERROR'}, "Select only one object for animated baking")
- return {'CANCELLED'}
-
- if context.active_object.type != 'MESH':
- self.report({'ERROR'}, "The baked object must be a mesh object")
- return {'CANCELLED'}
-
- img = None
-
- #find the image that's used for rendering
- for uvtex in context.active_object.data.uv_textures:
- if uvtex.active_render == True:
- for uvdata in uvtex.data:
- if uvdata.image != None:
- img = uvdata.image
- break
-
- if img == None:
- self.report({'ERROR'}, "No valid image found to bake to")
- return {'CANCELLED'}
-
- if img.is_dirty:
- self.report({'ERROR'}, "Save the image that's used for baking before use")
- return {'CANCELLED'}
-
- # make sure we have an absolute path so that copying works for sure
- absp = bpy.path.abspath(img.filepath)
-
- print("Animated baking for frames " + str(start) + " - " + str(end))
-
- for cfra in range(start, end+1):
- print("Baking frame " + str(cfra))
-
- # update scene to new frame and bake to template image
- scene.frame_set(cfra)
- ret = bpy.ops.object.bake_image()
- if 'CANCELLED' in ret:
- return {'CANCELLED'}
-
- #currently the api doesn't allow img.save_as(), so just save the template image as usual for every frame and copy to a file with frame specific filename
- img.save()
- shutil.copyfile(absp, self.framefile(absp, cfra))
-
- print("Saved " + self.framefile(absp, cfra))
- print("Baking done!")
-
- return{'FINISHED'}
-
-# modifier copy of original bake panel draw function
-def draw_animrenderbake(self, context):
- layout = self.layout
-
- rd = context.scene.render
-
- row = layout.row()
- row.operator("object.bake_image", icon='RENDER_STILL')
-
- #----------- beginning of modifications ----------------
- row.operator("object.anim_bake_image", text="Animated Bake", icon="RENDER_ANIMATION")
- row = layout.row(align=True)
- row.prop(context.scene, "animrenderbake_start")
- row.prop(context.scene, "animrenderbake_end")
- #-------------- end of modifications ---------------------
-
- layout.prop(rd, "bake_type")
-
- if rd.bake_type == 'NORMALS':
- layout.prop(rd, "bake_normal_space")
- elif rd.bake_type in ('DISPLACEMENT', 'AO'):
- layout.prop(rd, "use_bake_normalize")
-
- # col.prop(rd, "bake_aa_mode")
- # col.prop(rd, "use_bake_antialiasing")
-
- layout.separator()
-
- split = layout.split()
-
- col = split.column()
- col.prop(rd, "use_bake_clear")
- col.prop(rd, "bake_margin")
- col.prop(rd, "bake_quad_split", text="Split")
-
- col = split.column()
- col.prop(rd, "use_bake_selected_to_active")
- sub = col.column()
- sub.active = rd.use_bake_selected_to_active
- sub.prop(rd, "bake_distance")
- sub.prop(rd, "bake_bias")
-
-def register():
- bpy.types.Scene.animrenderbake_start = IntProperty(
- name="Start",
- description="Start frame of the animated bake",
- default=1)
-
- bpy.types.Scene.animrenderbake_end = IntProperty(
- name="End",
- description="End frame of the animated bake",
- default=250)
-
- # replace original panel draw function with modified one
- panel = bpy.types.RENDER_PT_bake
- panel.old_draw = panel.draw
- panel.draw = draw_animrenderbake
-
-def unregister():
- # restore original panel draw function
- bpy.types.RENDER_PT_bake.draw = bpy.types.RENDER_PT_bake.old_draw
- del bpy.types.RENDER_PT_bake.old_draw
- del bpy.types.Scene.animrenderbake_start
- del bpy.types.Scene.animrenderbake_end
-
-if __name__ == "__main__":
- register()
+# ##### 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 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
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# 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, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+bl_addon_info = {
+ "name": "Animated Render Baker",
+ "author": "Janne Karhu (jahka)",
+ "version": (1, 0),
+ "blender": (2, 5, 5),
+ "location": "Render Properties > Bake",
+ "description": "Renderbakes a series of frames",
+ "category": "Object",
+ 'wiki_url': 'http://wiki.blender.org/index.php/Extensions:2.5/Py/' \
+ 'Scripts/Object/Animated_Render_Baker',
+ 'tracker_url': 'https://projects.blender.org/tracker/index.php?'\
+ 'func=detail&aid=24836&group_id=153&atid=467'}
+
+import bpy
+from bpy.props import *
+
+class OBJECT_OT_animrenderbake(bpy.types.Operator):
+ bl_label = "Animated Render Bake"
+ bl_description= "Bake animated image textures of selected objects"
+ bl_idname = "object.anim_bake_image"
+ bl_register = True
+
+ def framefile(self, orig, frame):
+ '''
+ Set frame number to file name image.png -> image0013.png
+ '''
+ dot = orig.rfind(".")
+ return orig[:dot] + ('%04d' % frame) + orig[dot:]
+
+ def invoke(self, context, event):
+ import bpy
+ import shutil
+
+ scene = context.scene
+
+ start = scene.animrenderbake_start
+ end = scene.animrenderbake_end
+
+ # Check for errors before starting
+ if start >= end:
+ self.report({'ERROR'}, "Start frame must be smaller than end frame")
+ return {'CANCELLED'}
+
+ selected = context.selected_objects
+
+ # Only single object baking for now
+ if scene.render.use_bake_selected_to_active:
+ if len(selected) > 2:
+ self.report({'ERROR'}, "Select only two objects for animated baking")
+ return {'CANCELLED'}
+ elif len(selected) > 1:
+ self.report({'ERROR'}, "Select only one object for animated baking")
+ return {'CANCELLED'}
+
+ if context.active_object.type != 'MESH':
+ self.report({'ERROR'}, "The baked object must be a mesh object")
+ return {'CANCELLED'}
+
+ img = None
+
+ #find the image that's used for rendering
+ for uvtex in context.active_object.data.uv_textures:
+ if uvtex.active_render == True:
+ for uvdata in uvtex.data:
+ if uvdata.image != None:
+ img = uvdata.image
+ break
+
+ if img == None:
+ self.report({'ERROR'}, "No valid image found to bake to")
+ return {'CANCELLED'}
+
+ if img.is_dirty:
+ self.report({'ERROR'}, "Save the image that's used for baking before use")
+ return {'CANCELLED'}
+
+ # make sure we have an absolute path so that copying works for sure
+ absp = bpy.path.abspath(img.filepath)
+
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list