[Durian-svn] [3977] update to physics baking scripts to include adult dragon
campbell
institute at blender.org
Thu May 27 11:11:26 CEST 2010
Revision: 3977
https://blenderinstitute.dyndns.org/durian-svn/?do=log&project=durian&path=/&rev=3977
Author: campbell
Date: 2010-05-27 11:11:26 +0200 (Thu, 27 May 2010)
Log Message:
-----------
update to physics baking scripts to include adult dragon
Modified Paths:
--------------
pro/scripts/modules/finals_config.py
pro/scripts/ui/space_text_scripts.py
pro/scripts/utilities/batch_bake.py
Modified: pro/scripts/modules/finals_config.py
===================================================================
--- pro/scripts/modules/finals_config.py 2010-05-27 08:24:43 UTC (rev 3976)
+++ pro/scripts/modules/finals_config.py 2010-05-27 09:11:26 UTC (rev 3977)
@@ -1,9 +1,12 @@
# access thus
-''' # durian_init.py
-import finals_config
+default_durian_finals_init = """import finals_config
reload(finals_config)
-finals_config.setup(baked=True)
-'''
+finals_config.setup_sintel(baked=False)
+finals_config.setup_shaman(baked=False)
+finals_config.setup_guardian(baked=False)
+finals_config.setup_dragon_baby(baked=False)
+finals_config.setup_dragon_adult(baked=False)
+"""
import bpy
import os
@@ -337,6 +340,16 @@
'''
+def get_pointcache_shaman_cloth(obj=None):
+ ''' called externally '''
+ if obj is None:
+ obj = bpy.data.objects["GEO-robe_sim"]
+
+ mod = obj.modifiers["Cloth"]
+
+ return obj, mod
+
+
def setup_shaman(baked=False, sim=True, pre_roll=10):
base_dir, base_name, frame_start, frame_end, object_items = scene_info()
@@ -425,10 +438,18 @@
mod.point_cache.frame_start = frame_start - 1
elif base_name.startswith("04.1c"):
mod.point_cache.frame_start = frame_start - 3
-
- print("WOOOOHOOOO")
+def get_pointcache_dragon_adult_cloth(obj=None):
+ ''' called externally '''
+ if obj is None:
+ obj = bpy.data.objects["GEO-wing_a_sim"]
+
+ mod = obj.modifiers["Cloth"]
+
+ return obj, mod
+
+
def setup_dragon_adult(baked=False, sim=True, pre_roll=10):
base_dir, base_name, frame_start, frame_end, object_items = scene_info()
Modified: pro/scripts/ui/space_text_scripts.py
===================================================================
--- pro/scripts/ui/space_text_scripts.py 2010-05-27 08:24:43 UTC (rev 3976)
+++ pro/scripts/ui/space_text_scripts.py 2010-05-27 09:11:26 UTC (rev 3977)
@@ -3,14 +3,7 @@
def main(context):
- text = """import finals_config
-reload(finals_config)
-finals_config.setup_sintel(baked=False)
-finals_config.setup_shaman(baked=False)
-finals_config.setup_guardian(baked=False)
-finals_config.setup_dragon_baby(baked=False)
-finals_config.setup_dragon_adult(baked=False)
-"""
+ text = __import__("finals_config").default_durian_finals_init
textblock = bpy.data.texts.get("durian_init.py")
if textblock is None:
Modified: pro/scripts/utilities/batch_bake.py
===================================================================
--- pro/scripts/utilities/batch_bake.py 2010-05-27 08:24:43 UTC (rev 3976)
+++ pro/scripts/utilities/batch_bake.py 2010-05-27 09:11:26 UTC (rev 3977)
@@ -1,27 +1,25 @@
# replace
-# python /d/pro/scripts/utilities/batch_bake.py > /tmp/hair/bake.sh # build list
+# python /d/pro/scripts/utilities/batch_bake.py > /d/pro/scripts/utilities/batch_bake.sh # build list
# ./B -b /d/pro/scenes/05.8_ambushfight/05.8b_comp.blend -P /d/pro/scripts/utilities/batch_bake.py
# ./B bzz /d/pro/scenes/05.8_ambushfight/05.8b_comp.blend -P /d/pro/scripts/utilities/batch_bake.py
DEBUG = False
OVERRIDE = True
-BIN = "/b/B"
+# BIN = "/b/B"
+BIN = "/br/blender"
+RENDER_DIR = "/tmp/dragon_adult"
+
MULTIPROCESS = False
# what to bake!!
DO_SINTEL = False
-DO_DRAGON_BABY = True
+DO_SHAMAN = False
+DO_DRAGON_BABY = False
+DO_DRAGON_ADULT = True
-
-
-
-
-
-
-
# print("running", __file__)
import os
import sys
@@ -97,34 +95,41 @@
if DO_SINTEL:
if "GEO-sintel_hair_emit" not in bpy.data.objects:
- print("GEO-sintel_hair_emit not found...")
+ print("'GEO-sintel_hair_emit' not found...")
else:
ok |= 1
if DO_DRAGON_BABY:
if "GEO-wing_sim" not in bpy.data.objects:
- print("GEO-wing_sim not found...")
+ print("'GEO-wing_sim' not found...")
else:
ok |= 1
+ if DO_DRAGON_ADULT:
+ if "GEO-wing_a_sim" not in bpy.data.objects:
+ print("'GEO-wing_a_sim' not found...")
+ else:
+ ok |= 1
+
+ if DO_SHAMAN:
+ if "GEO-robe_sim" not in bpy.data.objects:
+ print("'GEO-robe_sim' not found...")
+ else:
+ ok |= 1
+
if not ok:
sys.exit(0)
if "durian_init.py" not in bpy.data.texts:
- text = """import finals_config
-reload(finals_config)
-finals_config.setup_sintel(baked=False)
-finals_config.setup_shaman(baked=False)
-finals_config.setup_guardian(baked=False)
-finals_config.setup_dragon_baby(baked=False)
-finals_config.setup_dragon_adult(baked=False)"""
textblock = bpy.data.texts.new("durian_init.py")
-
+ text = __import__("finals_config").default_durian_finals_init
+ textblock.from_string(text)
+
def use_simplify():
scene = bpy.context.scene
while scene:
- scene.render.use_simplify = True
+ scene.render.use_simplify = False
if DO_DRAGON_BABY: # needed for mdef
scene.render.simplify_subdivision = 1
@@ -171,16 +176,15 @@
"object": None
}
+ def generic_run_sim(obj_sim_name, get_pointcache_func, setup_sim_func):
+ '''Tricky function to bake '''
+ for obj in [obj for obj_name, obj in object_items if obj_name == obj_sim_name]:
+ obj, mod_sim = get_pointcache_func(obj)
- if DO_SINTEL:
- # sintel (hair)
- for obj in [obj for obj_name, obj in object_items if obj_name == "GEO-sintel_hair_emit"]:
- obj, psys = finals_config.get_pointcache_sintel_hair(obj)
-
context = base_context.copy()
- context["point_cache"] = psys.point_cache
-
+ context["point_cache"] = mod_sim.point_cache
+
lay = get_object_layers(get_group_instance(obj))
bpy.context.scene.layers = lay
@@ -190,63 +194,36 @@
print("layers:", lay)
- finals_config.setup_sintel(baked=False, pre_roll=0) # <--- why is this needed?
+ setup_sim_func(baked=False, pre_roll=0) # <--- why is this needed?
bpy.ops.ptcache.free_bake(context)
if OVERRIDE:
- finals_config.setup_sintel(baked=False, pre_roll=0)
+ setup_sim_func(baked=False, pre_roll=0)
else:
reload(durian_init) # <--- why is this needed?
bpy.ops.ptcache.bake(context, bake=True)
- for cmd in finals_config.pointcache_commands(psys.point_cache):
+ for cmd in finals_config.pointcache_commands(mod_sim.point_cache):
os.system(cmd)
+
+ if DO_SINTEL:
+ generic_run_sim("GEO-sintel_hair_emit", finals_config.get_pointcache_sintel_hair, finals_config.setup_sintel)
-
-
# dragon (cloth)
if DO_DRAGON_BABY:
- for obj in [obj for obj_name, obj in object_items if obj_name == "GEO-wing_sim"]:
- obj, mod_cloth = finals_config.get_pointcache_dragon_baby_cloth(obj)
+ generic_run_sim("GEO-wing_sim", finals_config.get_pointcache_dragon_baby_cloth, finals_config.setup_dragon_baby)
- context = base_context.copy()
-
- context["point_cache"] = mod_cloth.point_cache
+ # dragon (cloth)
+ if DO_DRAGON_ADULT:
+ generic_run_sim("GEO-wing_a_sim", finals_config.get_pointcache_dragon_adult_cloth, finals_config.setup_dragon_adult)
- lay = get_object_layers(get_group_instance(obj))
- bpy.context.scene.layers = lay
+ # dragon (cloth)
+ if DO_SHAMAN:
+ generic_run_sim("GEO-robe_sim", finals_config.get_pointcache_shaman_cloth, finals_config.setup_shaman)
- if True not in lay:
- print("Skipping", obj, "no instance")
- continue
-
- print("layers:", lay)
-
- finals_config.setup_dragon_baby(baked=False, pre_roll=0) # <--- why is this needed?
- bpy.ops.ptcache.free_bake(context)
-
- if OVERRIDE:
- finals_config.setup_dragon_baby(baked=False, pre_roll=0)
- else:
- reload(durian_init) # <--- why is this needed?
-
- bpy.ops.ptcache.bake(context, bake=True)
-
- for cmd in finals_config.pointcache_commands(mod_cloth.point_cache):
- os.system(cmd)
-
-
-
-
-
-
-
-
-
-
# import code
# code.interact()
@@ -270,9 +247,8 @@
bpy.context.scene.render.file_format = 'AVI_JPEG'
bpy.context.scene.render.file_quality = 95
- image_dir = "/tmp/hair/"
filename = bpy.data.filename.replace(".blend", ".avi")
- bpy.context.scene.render.output_path = os.path.join(image_dir, os.path.basename(filename))
+ bpy.context.scene.render.output_path = os.path.join(RENDER_DIR, os.path.basename(filename))
if OVERRIDE:
More information about the Durian-svn
mailing list