diff options
author | Matt Ebb <matt@mke3.net> | 2009-12-14 02:30:18 +0300 |
---|---|---|
committer | Matt Ebb <matt@mke3.net> | 2009-12-14 02:30:18 +0300 |
commit | 3f612b6ea5b15b0a868f1472053378949722c88a (patch) | |
tree | a9e90b187efc7f9e2524bb0383f37533b7a264d8 | |
parent | 9f965ba62bc26c8c8f66c473f70d288800aec8d3 (diff) |
Description and more presets for animation players (rv / framecycler).
Also put a bit more logic for guessing player paths based on my system.
If anyone can make this a bit more clever/bulletproof, please feel free to
get involved in it, it's all python!
-rw-r--r-- | release/scripts/op/screen_play_rendered_anim.py | 49 | ||||
-rw-r--r-- | source/blender/editors/interface/resources.c | 3 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_userdef.c | 7 |
3 files changed, 50 insertions, 9 deletions
diff --git a/release/scripts/op/screen_play_rendered_anim.py b/release/scripts/op/screen_play_rendered_anim.py index bee73968b84..a2e21f0d510 100644 --- a/release/scripts/op/screen_play_rendered_anim.py +++ b/release/scripts/op/screen_play_rendered_anim.py @@ -24,7 +24,7 @@ # Originally written by Matt Ebb import bpy -import subprocess, platform +import subprocess, os, platform # from BKE_add_image_extension() img_format_exts = { @@ -50,8 +50,35 @@ img_format_exts = { 'THEORA':'ogg', } -class PlayRenderedAnim(bpy.types.Operator): +def guess_player_path(preset): + if preset == 'BLENDER24': + player_path = 'blender' + + if platform.system() == 'Darwin': + test_path = '/Applications/blender 2.49.app/Contents/MacOS/blender' + if os.path.exists(test_path): + player_path = test_path + + elif preset == 'DJV': + player_path = 'djv_view' + + if platform.system() == 'Darwin': + test_path = '/Applications/djv-0.8.2.app/Contents/Resources/bin/djv_view' + if os.path.exists(test_path): + player_path = test_path + + elif preset == 'FRAMECYCLER': + player_path = 'framecycler' + + elif preset == 'RV': + player_path = 'rv' + + + return player_path + +class PlayRenderedAnim(bpy.types.Operator): + '''Plays back rendered frames/movies using an external player.''' bl_idname = "screen.play_rendered_anim" bl_label = "Play Rendered Animation" bl_register = True @@ -67,13 +94,14 @@ class PlayRenderedAnim(bpy.types.Operator): # try and guess a command line if it doesn't exist if player_path == '': - if preset == 'BLENDER24': - player_path = 'blender' - elif preset == 'DJV': - player_path = 'djv_view' + player_path = guess_player_path(preset) # doesn't support ### frame notation yet - file = "%s%04d" % (bpy.utils.expandpath(rd.output_path), sce.start_frame) + if preset in ('BLENDER24', 'DJV', 'CUSTOM'): + file = "%s%04d" % (bpy.utils.expandpath(rd.output_path), sce.start_frame) + elif preset in ('FRAMECYCLER', 'RV'): + file = "%s#" % bpy.utils.expandpath(rd.output_path) + if rd.file_extensions: file += '.' + img_format_exts[rd.file_format] @@ -85,6 +113,12 @@ class PlayRenderedAnim(bpy.types.Operator): elif preset == 'DJV': opts = [file, "-playback_speed", str(rd.fps)] cmd.extend(opts) + elif preset == 'FRAMECYCLER': + opts = [file, "%d-%d" % (sce.start_frame, sce.end_frame)] + cmd.extend(opts) + elif preset == 'RV': + opts = ["-fps", str(rd.fps), "-play", "[ %s ]" % file] + cmd.extend(opts) else: # 'CUSTOM' cmd.extend(file) @@ -93,6 +127,7 @@ class PlayRenderedAnim(bpy.types.Operator): process = subprocess.Popen(cmd) except: pass + #raise OSError("Couldn't find an external animation player.") return('FINISHED',) diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c index 809b3387f28..b2ae5572a05 100644 --- a/source/blender/editors/interface/resources.c +++ b/source/blender/editors/interface/resources.c @@ -1283,6 +1283,9 @@ void init_userdef_do_versions(void) if (U.dbl_click_time == 0) { U.dbl_click_time = 350; } + if (U.anim_player_preset == 0) { + U.anim_player_preset =1 ; + } /* funny name, but it is GE stuff, moves userdef stuff to engine */ // XXX space_set_commmandline_options(); diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c index 21e601c3ba3..d3329907939 100644 --- a/source/blender/makesrna/intern/rna_userdef.c +++ b/source/blender/makesrna/intern/rna_userdef.c @@ -2360,9 +2360,11 @@ static void rna_def_userdef_filepaths(BlenderRNA *brna) static EnumPropertyItem anim_player_presets[] = { //{0, "INTERNAL", 0, "Internal", "Built-in animation player"}, // doesn't work yet! - {0, "BLENDER24", 0, "Blender 2.4", "Blender command line animation playback - path to Blender 2.4"}, + {1, "BLENDER24", 0, "Blender 2.4", "Blender command line animation playback - path to Blender 2.4"}, {2, "DJV", 0, "Djv", "Open source frame player: http://djv.sourceforge.net"}, - {3, "CUSTOM", 0, "Custom", "Custom animation player executable path"}, + {3, "FRAMECYCLER", 0, "FrameCycler", "Frame player from IRIDAS"}, + {4, "RV", 0, "rv", "Frame player from Tweak Software"}, + {50, "CUSTOM", 0, "Custom", "Custom animation player executable path"}, {0, NULL, 0, NULL, NULL}}; srna= RNA_def_struct(brna, "UserPreferencesFilePaths", NULL); @@ -2430,6 +2432,7 @@ static void rna_def_userdef_filepaths(BlenderRNA *brna) RNA_def_property_enum_sdna(prop, NULL, "anim_player_preset"); RNA_def_property_enum_items(prop, anim_player_presets); RNA_def_property_ui_text(prop, "Animation Player Preset", "Preset configs for external animation players"); + RNA_def_property_enum_default(prop, 1); /* set default to blender 2.4 player until an internal one is back */ /* Autosave */ |