80
78
flow = md.flow_settings
80
layout.prop(flow, "smoke_flow_type", expand=False)
82
if flow.smoke_flow_type != "OUTFLOW":
83
split = layout.split()
85
col.label(text="Flow Source:")
86
col.prop(flow, "smoke_flow_source", expand=False, text="")
87
if flow.smoke_flow_source == "PARTICLES":
88
col.label(text="Particle System:")
89
col.prop_search(flow, "particle_system", ob, "particle_systems", text="")
91
col.prop(flow, "surface_distance")
92
col.prop(flow, "volume_density")
94
sub = col.column(align=True)
96
sub.prop(flow, "initial_velocity")
98
sub.active = flow.initial_velocity
99
sub.prop(flow, "velocity_factor")
100
if flow.smoke_flow_source == "MESH":
101
sub.prop(flow, "velocity_normal")
102
#sub.prop(flow, "velocity_random")
105
sub.label(text="Initial Values:")
106
sub.prop(flow, "use_absolute")
107
if flow.smoke_flow_type in {'SMOKE', 'BOTH'}:
108
sub.prop(flow, "density")
109
sub.prop(flow, "temperature")
110
sub.prop(flow, "smoke_color")
111
if flow.smoke_flow_type in {'FIRE', 'BOTH'}:
112
sub.prop(flow, "fuel_amount")
114
elif md.smoke_type == 'COLLISION':
115
coll = md.coll_settings
82
117
split = layout.split()
84
119
col = split.column()
85
col.prop(flow, "use_outflow")
86
col.label(text="Particle System:")
87
col.prop_search(flow, "particle_system", ob, "particle_systems", text="")
90
sub.active = not md.flow_settings.use_outflow
92
sub.prop(flow, "initial_velocity", text="Initial Velocity")
94
sub.active = flow.initial_velocity
95
sub.prop(flow, "velocity_factor", text="Multiplier")
98
sub.active = not md.flow_settings.use_outflow
99
sub.label(text="Initial Values:")
100
sub.prop(flow, "use_absolute")
101
sub.prop(flow, "density")
102
sub.prop(flow, "temperature")
105
class PHYSICS_PT_smoke_groups(PhysicButtonsPanel, Panel):
106
bl_label = "Smoke Groups"
107
bl_options = {'DEFAULT_CLOSED'}
110
def poll(cls, context):
112
return md and (md.smoke_type == 'DOMAIN')
114
def draw(self, context):
117
group = context.smoke.domain_settings
119
split = layout.split()
122
col.label(text="Flow Group:")
123
col.prop(group, "fluid_group", text="")
125
#col.label(text="Effector Group:")
126
#col.prop(group, "effector_group", text="")
129
col.label(text="Collision Group:")
130
col.prop(group, "collision_group", text="")
120
col.prop(coll, "collision_type")
123
class PHYSICS_PT_smoke_flow_advanced(PhysicButtonsPanel, Panel):
124
bl_label = "Smoke Flow Advanced"
125
bl_options = {'DEFAULT_CLOSED'}
128
def poll(cls, context):
130
return md and (md.smoke_type == 'FLOW') and (md.flow_settings.smoke_flow_source == "MESH")
132
def draw(self, context):
135
flow = context.smoke.flow_settings
137
split = layout.split()
140
col.prop(flow, "use_texture")
142
sub.active = flow.use_texture
143
sub.prop(flow, "noise_texture", text="")
144
sub.label(text="Mapping:")
145
sub.prop(flow, "texture_map_type", expand=False, text="")
146
if flow.texture_map_type == "UV":
147
sub.prop_search(flow, "uv_layer", ob.data, "uv_textures", text="")
148
if flow.texture_map_type == "AUTO":
149
sub.prop(flow, "texture_size")
150
sub.prop(flow, "texture_offset")
153
col.label(text="Vertex Group:")
154
col.prop_search(flow, "density_vertex_group", ob, "vertex_groups", text="")
157
class PHYSICS_PT_smoke_fire(PhysicButtonsPanel, Panel):
158
bl_label = "Smoke Flames"
159
bl_options = {'DEFAULT_CLOSED'}
162
def poll(cls, context):
164
return md and (md.smoke_type == 'DOMAIN')
166
def draw(self, context):
168
domain = context.smoke.domain_settings
170
split = layout.split()
171
split.enabled = not domain.point_cache.is_baked
173
col = split.column(align=True)
174
col.label(text="Reaction:")
175
col.prop(domain, "burning_rate")
176
col.prop(domain, "flame_smoke")
177
col.prop(domain, "flame_vorticity")
179
col = split.column(align=True)
180
col.label(text="Temperatures:")
181
col.prop(domain, "flame_ignition")
182
col.prop(domain, "flame_max_temp")
183
col.prop(domain, "flame_smoke_color")
186
class PHYSICS_PT_smoke_adaptive_domain(PhysicButtonsPanel, Panel):
187
bl_label = "Smoke Adaptive Domain"
188
bl_options = {'DEFAULT_CLOSED'}
191
def poll(cls, context):
193
return md and (md.smoke_type == 'DOMAIN')
195
def draw_header(self, context):
196
md = context.smoke.domain_settings
198
self.layout.prop(md, "use_adaptive_domain", text="")
200
def draw(self, context):
203
domain = context.smoke.domain_settings
204
layout.active = domain.use_adaptive_domain
206
split = layout.split()
207
split.enabled = (not domain.point_cache.is_baked)
209
col = split.column(align=True)
210
col.label(text="Resolution:")
211
col.prop(domain, "additional_res")
212
col.prop(domain, "adapt_margin")
214
col = split.column(align=True)
215
col.label(text="Advanced:")
216
col.prop(domain, "adapt_threshold")
133
219
class PHYSICS_PT_smoke_highres(PhysicButtonsPanel, Panel):