Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Genrich <daniel.genrich@gmx.net>2009-08-20 04:33:59 +0400
committerDaniel Genrich <daniel.genrich@gmx.net>2009-08-20 04:33:59 +0400
commit286c2ca80be4ae46dc220ada2fcc5bf636d5ff49 (patch)
tree91492852f1b0f8d6bc70d8b88113325e218e7f9d /release/ui/buttons_physics_smoke.py
parentc21627e31b0e82f28e35af51cec681897285ff78 (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.py205
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)