diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-03-30 05:11:21 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-03-30 05:11:21 +0400 |
commit | 91492ebc4dfa1f3deb1e2916ca80e7e472448792 (patch) | |
tree | d94ead20efd0bfbc3261a849afb5c3f0794a295b /system_demo_mode/demo_mode.py | |
parent | 5feda1e4d83b79455e0fccfc8a4faacfc7011438 (diff) |
fix for script error if no camera is found.
Diffstat (limited to 'system_demo_mode/demo_mode.py')
-rw-r--r-- | system_demo_mode/demo_mode.py | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/system_demo_mode/demo_mode.py b/system_demo_mode/demo_mode.py index 664b3253..b51072d1 100644 --- a/system_demo_mode/demo_mode.py +++ b/system_demo_mode/demo_mode.py @@ -96,7 +96,8 @@ def demo_mode_auto_select(): totimg += 1 # since our test files have this as defacto standard - if totimg >= 2: + scene = bpy.context.scene + if totimg >= 2 and (scene.camera or scene.render.use_sequencer): mode = 'RENDER' else: if play_area >= render_area: @@ -174,11 +175,17 @@ def demo_mode_init(): scene.render.file_format = 'AVI_JPEG' if global_config["anim_render"] else 'PNG' scene.render.use_file_extension = False scene.render.use_placeholder = False + try: + if global_config["anim_render"]: + bpy.ops.render.render('INVOKE_DEFAULT', animation=True) + else: + bpy.ops.render.render('INVOKE_DEFAULT', write_still=True) + except RuntimeError: # no camera for eg: + import traceback + traceback.print_exc() + + open(global_state["render_out"], 'w').close() # touch so we move on. - if global_config["anim_render"]: - bpy.ops.render.render('INVOKE_DEFAULT', animation=True) - else: - bpy.ops.render.render('INVOKE_DEFAULT', write_still=True) else: raise Exception("Unsupported mode %r" % global_config["mode"]) @@ -332,7 +339,7 @@ class DemoMode(bpy.types.Operator): # toggle if self.__class__.enabled and self.__class__.first_run == False: # this actually cancells the previous running instance - # should never happen now, DemoModeControl is for this. + # should never happen now, DemoModeControl is for this. return {'CANCELLED'} else: self.__class__.enabled = True @@ -351,14 +358,14 @@ class DemoMode(bpy.types.Operator): def disable(cls): if cls.enabled and cls.first_run == False: # this actually cancells the previous running instance - # should never happen now, DemoModeControl is for this. + # should never happen now, DemoModeControl is for this. cls.enabled = False class DemoModeControl(bpy.types.Operator): bl_idname = "wm.demo_mode_control" bl_label = "Control" - + mode = bpy.props.EnumProperty(items=( ('PREV', "Prev", ""), ('PAUSE', "Pause", ""), @@ -372,10 +379,10 @@ class DemoModeControl(bpy.types.Operator): demo_mode_next_file(-1) elif mode == 'NEXT': demo_mode_next_file(1) - else: # pause + else: # pause DemoMode.disable() return {'FINISHED'} - + def menu_func(self, context): # print("func:menu_func - DemoMode.enabled:", DemoMode.enabled, "bpy.app.driver_namespace:", DemoKeepAlive.secret_attr not in bpy.app.driver_namespace, 'global_state["timer"]:', global_state["timer"]) @@ -391,6 +398,7 @@ def menu_func(self, context): row.operator("wm.demo_mode_control", icon='PAUSE', text="").mode = 'PAUSE' row.operator("wm.demo_mode_control", icon='FF', text="").mode = 'NEXT' + def register(): bpy.utils.register_class(DemoMode) bpy.utils.register_class(DemoModeControl) @@ -447,9 +455,10 @@ def load_config(cfg_name=DEMO_CFG): blend_lookup = {} # initialize once, case insensitive dict + def lookup_file(filepath): filename = os.path.basename(filepath).lower() - + if not blend_lookup: # ensure only ever run once. blend_lookup[None] = None @@ -463,9 +472,9 @@ def load_config(cfg_name=DEMO_CFG): if filename.lower().endswith(".blend"): filepath = os.path.join(dirpath, filename) yield (filename.lower(), filepath) - + blend_lookup.update(dict(blend_dict_items(demo_search_path))) - + # fallback to orginal file return blend_lookup.get(filename, filepath) # done with search lookup @@ -476,7 +485,7 @@ def load_config(cfg_name=DEMO_CFG): filepath_test = os.path.join(basedir, filecfg["file"]) if not os.path.exists(filepath_test): filepath_test = lookup_file(filepath_test) # attempt to get from searchpath - if not os.path.exists(filepath_test): + if not os.path.exists(filepath_test): print("Cant find %r or %r, skipping!") continue |