diff options
author | Daniel Genrich <daniel.genrich@gmx.net> | 2009-08-20 04:33:59 +0400 |
---|---|---|
committer | Daniel Genrich <daniel.genrich@gmx.net> | 2009-08-20 04:33:59 +0400 |
commit | 286c2ca80be4ae46dc220ada2fcc5bf636d5ff49 (patch) | |
tree | 91492852f1b0f8d6bc70d8b88113325e218e7f9d /release/ui/buttons_physics_smoke.py | |
parent | c21627e31b0e82f28e35af51cec681897285ff78 (diff) |
Smoke:
* cache for low res (deactivating high res for now)
* new way of view3d rendering of smoke (no longer 3 axes) -using 3dtexture now (introduced into gpu/intern)
* introducing LZO and LZMA libs into extern (makefiles missing for now)
* reducing memory usage after simulating for the frame ended (freeing temporary buffers)
* splitting smoke into 2 modifier for the cache-sake (it cannot handle more than 1 cache on the same modifier-index)
* no color on gui anymore
* fixing non-power-of-2 resolutions (hopefully)
* fixing select-deselect of domain drawing bug
* fixing drawobject.c coding style (making Ton happy) ;-)
HINT #1: If scons doesn't work -> cmakefiles are up-to-date, couldn't test scons (but i tried to mantain them, too)
CODERS HINT #1: we really need a way to disable adding all modifiers through "Add Modifiers" dropdown!
WARNING #1: before applying this commit, deactivate your SMOKE DOMAIN in your old files and save them then. You can open them then savely after that.
WARNING #2: File and cache format of smoke can be changed, this is not final!
Diffstat (limited to 'release/ui/buttons_physics_smoke.py')
-rw-r--r-- | release/ui/buttons_physics_smoke.py | 205 |
1 files changed, 165 insertions, 40 deletions
diff --git a/release/ui/buttons_physics_smoke.py b/release/ui/buttons_physics_smoke.py index 7e2395216c0..d187e4c5901 100644 --- a/release/ui/buttons_physics_smoke.py +++ b/release/ui/buttons_physics_smoke.py @@ -1,6 +1,11 @@ import bpy +def smoke_panel_enabled_low(smd): + if smd.smoke_type == 'TYPE_DOMAIN': + return smd.domain.point_cache.baked==False + return True + class PhysicButtonsPanel(bpy.types.Panel): __space_type__ = "PROPERTIES" __region_type__ = "WINDOW" @@ -38,6 +43,8 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel): split.itemL() if md: + + # layout.enabled = smoke_panel_enabled(md) layout.itemR(md, "smoke_type", expand=True) if md.smoke_type == 'TYPE_DOMAIN': @@ -49,13 +56,6 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel): col = split.column() col.itemL(text="Resolution:") col.itemR(domain, "maxres", text="Divisions") - - col.itemL(text="Display:") - col.itemR(domain, "visibility", text="Resolution") - col.itemR(domain, "color", slider=True) - sub = col.column() - sub.active = domain.highres - sub.itemR(domain, "viewhighres") col = split.column() col.itemL(text="Behavior:") @@ -88,9 +88,9 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel): #elif md.smoke_type == 'TYPE_COLL': # layout.itemS() - -class PHYSICS_PT_smoke_highres(PhysicButtonsPanel): - __label__ = "Smoke High Resolution" + +class PHYSICS_PT_smoke_groups(PhysicButtonsPanel): + __label__ = "Smoke Groups" __default_closed__ = True def poll(self, context): @@ -100,33 +100,89 @@ class PHYSICS_PT_smoke_highres(PhysicButtonsPanel): return False - def draw_header(self, context): - layout = self.layout - - high = context.smoke.domain_settings - - layout.itemR(high, "highres", text="") - def draw(self, context): layout = self.layout - high = context.smoke.domain_settings - - layout.active = high.highres + group = context.smoke.domain_settings split = layout.split() col = split.column() - col.itemL(text="Resolution:") - col.itemR(high, "amplify", text="Divisions") + col.itemL(text="Flow Group:") + col.itemR(group, "fluid_group", text="") + + #col.itemL(text="Effector Group:") + #col.itemR(group, "eff_group", text="") + + col = split.column() + col.itemL(text="Collision Group:") + col.itemR(group, "coll_group", text="") + +class PHYSICS_PT_smoke_cache(PhysicButtonsPanel): + __label__ = "Smoke Cache" + __default_closed__ = True + + def poll(self, context): + md = context.smoke + if md: + return (md.smoke_type == 'TYPE_DOMAIN') + + return False + + def draw(self, context): + layout = self.layout + + md = context.smoke - sub = split.column() - sub.itemL(text="Noise Method:") - sub.row().itemR(high, "noise_type", text="") - sub.itemR(high, "strength") + if md.smoke_type == 'TYPE_DOMAIN': -class PHYSICS_PT_smoke_groups(PhysicButtonsPanel): - __label__ = "Smoke Groups" + domain = md.domain_settings + cache = domain.point_cache + + layout.set_context_pointer("PointCache", cache) + + row = layout.row() + row.template_list(cache, "point_cache_list", cache, "active_point_cache_index") + col = row.column(align=True) + col.itemO("ptcache.add_new", icon="ICON_ZOOMIN", text="") + col.itemO("ptcache.remove", icon="ICON_ZOOMOUT", text="") + + row = layout.row() + row.itemR(cache, "name") + + row = layout.row() + row.itemR(cache, "start_frame") + row.itemR(cache, "end_frame") + + row = layout.row() + + if cache.baked == True: + row.itemO("ptcache.free_bake", text="Free Bake") + else: + row.item_booleanO("ptcache.bake", "bake", True, text="Bake") + + subrow = row.row() + subrow.enabled = cache.frames_skipped or cache.outdated + subrow.itemO("ptcache.bake", "bake", False, text="Calculate to Current Frame") + + row = layout.row() + #row.enabled = smoke_panel_enabled(psys) + row.itemO("ptcache.bake_from_cache", text="Current Cache to Bake") + + row = layout.row() + #row.enabled = smoke_panel_enabled(psys) + + layout.itemL(text=cache.info) + + layout.itemS() + + row = layout.row() + row.itemO("ptcache.bake_all", "bake", True, text="Bake All Dynamics") + row.itemO("ptcache.free_bake_all", text="Free All Bakes") + layout.itemO("ptcache.bake_all", "bake", False, text="Update All Dynamics to current frame") + +class PHYSICS_PT_smoke_highres(PhysicButtonsPanel): + __label__ = "Smoke High Resolution" __default_closed__ = True def poll(self, context): @@ -136,24 +192,93 @@ class PHYSICS_PT_smoke_groups(PhysicButtonsPanel): return False + def draw_header(self, context): + layout = self.layout + + high = context.smoke.domain_settings + + layout.itemR(high, "highres", text="") + def draw(self, context): layout = self.layout - group = context.smoke.domain_settings + md = context.smoke_hr - split = layout.split() + if md: - col = split.column() - col.itemL(text="Flow Group:") - col.itemR(group, "fluid_group", text="") - - #col.itemL(text="Effector Group:") - #col.itemR(group, "eff_group", text="") + split = layout.split() + + col = split.column() + col.itemL(text="Resolution:") + col.itemR(md, "amplify", text="Divisions") + + sub = split.column() + sub.itemL(text="Noise Method:") + sub.row().itemR(md, "noise_type", text="") + sub.itemR(md, "strength") + sub.itemR(md, "show_highres") + +class PHYSICS_PT_smoke_cache_highres(PhysicButtonsPanel): + __label__ = "Smoke Cache" + __default_closed__ = True + + def poll(self, context): + return (context.smoke_hr != None) + + def draw(self, context): + layout = self.layout + + md = context.smoke_hr + + if md: + + cache = md.point_cache + + layout.set_context_pointer("PointCache", cache) + + row = layout.row() + row.template_list(cache, "point_cache_list", cache, "active_point_cache_index") + col = row.column(align=True) + col.itemO("ptcache.add_new", icon="ICON_ZOOMIN", text="") + col.itemO("ptcache.remove", icon="ICON_ZOOMOUT", text="") + + row = layout.row() + row.itemR(cache, "name") + + row = layout.row() + row.itemR(cache, "start_frame") + row.itemR(cache, "end_frame") + + row = layout.row() + + if cache.baked == True: + row.itemO("ptcache.free_bake", text="Free Bake") + else: + row.item_booleanO("ptcache.bake", "bake", True, text="Bake") + + subrow = row.row() + subrow.enabled = cache.frames_skipped or cache.outdated + subrow.itemO("ptcache.bake", "bake", False, text="Calculate to Current Frame") - col = split.column() - col.itemL(text="Collision Group:") - col.itemR(group, "coll_group", text="") + row = layout.row() + #row.enabled = smoke_panel_enabled(psys) + row.itemO("ptcache.bake_from_cache", text="Current Cache to Bake") + + row = layout.row() + #row.enabled = smoke_panel_enabled(psys) + + layout.itemL(text=cache.info) + + layout.itemS() + + row = layout.row() + row.itemO("ptcache.bake_all", "bake", True, text="Bake All Dynamics") + row.itemO("ptcache.free_bake_all", text="Free All Bakes") + layout.itemO("ptcache.bake_all", "bake", False, text="Update All Dynamics to current frame") + bpy.types.register(PHYSICS_PT_smoke) -bpy.types.register(PHYSICS_PT_smoke_highres) +bpy.types.register(PHYSICS_PT_smoke_cache) bpy.types.register(PHYSICS_PT_smoke_groups) +#bpy.types.register(PHYSICS_PT_smoke_highres) +#bpy.types.register(PHYSICS_PT_smoke_cache_highres) |