Cleanup: renaming guiding -> guide
The term guide makes sense on it's own in this context.
This commit is contained in:
parent
79e51d9e5f
commit
ca277d7d60
@ -70,7 +70,7 @@ MANTA::MANTA(int *res, FluidModifierData *mmd) : mCurrentID(++solverID)
|
||||
mUsingObstacle = (mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_OBSTACLE);
|
||||
mUsingInvel = (mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_INVEL);
|
||||
mUsingOutflow = (mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_OUTFLOW);
|
||||
mUsingGuiding = (mmd->domain->flags & FLUID_DOMAIN_USE_GUIDING);
|
||||
mUsingGuiding = (mmd->domain->flags & FLUID_DOMAIN_USE_GUIDE);
|
||||
|
||||
// Simulation constants
|
||||
mTempAmb = 0; // TODO: Maybe use this later for buoyancy calculation
|
||||
@ -200,7 +200,7 @@ MANTA::MANTA(int *res, FluidModifierData *mmd) : mCurrentID(++solverID)
|
||||
}
|
||||
|
||||
if (mUsingGuiding) {
|
||||
mResGuiding = (mmd->domain->guiding_parent) ? mmd->domain->guide_res : mmd->domain->res;
|
||||
mResGuiding = (mmd->domain->guide_parent) ? mmd->domain->guide_res : mmd->domain->res;
|
||||
initGuiding(mmd);
|
||||
}
|
||||
if (mUsingFractions) {
|
||||
@ -226,7 +226,7 @@ MANTA::MANTA(int *res, FluidModifierData *mmd) : mCurrentID(++solverID)
|
||||
initOutflow(mmd);
|
||||
|
||||
if (mUsingGuiding) {
|
||||
mResGuiding = (mmd->domain->guiding_parent) ? mmd->domain->guide_res : mmd->domain->res;
|
||||
mResGuiding = (mmd->domain->guide_parent) ? mmd->domain->guide_res : mmd->domain->res;
|
||||
initGuiding(mmd);
|
||||
}
|
||||
|
||||
@ -603,7 +603,7 @@ std::string MANTA::getRealValue(const std::string &varName, FluidModifierData *m
|
||||
else if (varName == "USING_OBSTACLE")
|
||||
ss << (mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_OBSTACLE ? "True" : "False");
|
||||
else if (varName == "USING_GUIDING")
|
||||
ss << (mmd->domain->flags & FLUID_DOMAIN_USE_GUIDING ? "True" : "False");
|
||||
ss << (mmd->domain->flags & FLUID_DOMAIN_USE_GUIDE ? "True" : "False");
|
||||
else if (varName == "USING_INVEL")
|
||||
ss << (mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_INVEL ? "True" : "False");
|
||||
else if (varName == "USING_OUTFLOW")
|
||||
@ -920,11 +920,11 @@ std::string MANTA::getRealValue(const std::string &varName, FluidModifierData *m
|
||||
ss << (((mmd->domain->particle_type & tmpVar)) ? "True" : "False");
|
||||
}
|
||||
else if (varName == "GUIDING_ALPHA")
|
||||
ss << mmd->domain->guiding_alpha;
|
||||
ss << mmd->domain->guide_alpha;
|
||||
else if (varName == "GUIDING_BETA")
|
||||
ss << mmd->domain->guiding_beta;
|
||||
ss << mmd->domain->guide_beta;
|
||||
else if (varName == "GUIDING_FACTOR")
|
||||
ss << mmd->domain->guiding_vel_factor;
|
||||
ss << mmd->domain->guide_vel_factor;
|
||||
else if (varName == "GRAVITY_X")
|
||||
ss << mmd->domain->gravity[0];
|
||||
else if (varName == "GRAVITY_Y")
|
||||
@ -1535,7 +1535,7 @@ int MANTA::readGuiding(FluidModifierData *mmd, int framenr, bool sourceDomain)
|
||||
targetFile[0] = '\0';
|
||||
|
||||
std::string gformat = getCacheFileEnding(mmd->domain->cache_data_format);
|
||||
const char *subdir = (sourceDomain) ? FLUID_DOMAIN_DIR_DATA : FLUID_DOMAIN_DIR_GUIDING;
|
||||
const char *subdir = (sourceDomain) ? FLUID_DOMAIN_DIR_DATA : FLUID_DOMAIN_DIR_GUIDE;
|
||||
|
||||
BLI_path_join(
|
||||
cacheDirGuiding, sizeof(cacheDirGuiding), mmd->domain->cache_directory, subdir, NULL);
|
||||
@ -1590,7 +1590,7 @@ int MANTA::bakeData(FluidModifierData *mmd, int framenr)
|
||||
BLI_path_join(cacheDirGuiding,
|
||||
sizeof(cacheDirGuiding),
|
||||
mmd->domain->cache_directory,
|
||||
FLUID_DOMAIN_DIR_GUIDING,
|
||||
FLUID_DOMAIN_DIR_GUIDE,
|
||||
NULL);
|
||||
BLI_path_make_safe(cacheDirData);
|
||||
BLI_path_make_safe(cacheDirGuiding);
|
||||
@ -1736,7 +1736,7 @@ int MANTA::bakeGuiding(FluidModifierData *mmd, int framenr)
|
||||
BLI_path_join(cacheDirGuiding,
|
||||
sizeof(cacheDirGuiding),
|
||||
mmd->domain->cache_directory,
|
||||
FLUID_DOMAIN_DIR_GUIDING,
|
||||
FLUID_DOMAIN_DIR_GUIDE,
|
||||
NULL);
|
||||
BLI_path_make_safe(cacheDirGuiding);
|
||||
|
||||
@ -1804,7 +1804,7 @@ void MANTA::exportSmokeScript(FluidModifierData *mmd)
|
||||
bool colors = mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_COLORS;
|
||||
bool fire = mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_FIRE;
|
||||
bool obstacle = mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_OBSTACLE;
|
||||
bool guiding = mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_GUIDING;
|
||||
bool guiding = mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_GUIDE;
|
||||
bool invel = mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_INVEL;
|
||||
|
||||
std::string manta_script;
|
||||
@ -1912,7 +1912,7 @@ void MANTA::exportLiquidScript(FluidModifierData *mmd)
|
||||
bool floater = mmd->domain->particle_type & FLUID_DOMAIN_PARTICLE_FOAM;
|
||||
bool tracer = mmd->domain->particle_type & FLUID_DOMAIN_PARTICLE_TRACER;
|
||||
bool obstacle = mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_OBSTACLE;
|
||||
bool guiding = mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_GUIDING;
|
||||
bool guiding = mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_GUIDE;
|
||||
bool invel = mmd->domain->active_fields & FLUID_DOMAIN_ACTIVE_INVEL;
|
||||
|
||||
std::string manta_script;
|
||||
|
@ -133,8 +133,8 @@ class PHYSICS_PT_settings(PhysicButtonsPanel, Panel):
|
||||
if md.fluid_type == 'DOMAIN':
|
||||
domain = md.domain_settings
|
||||
|
||||
# Deactivate UI if guiding is enabled but not baked yet
|
||||
layout.active = not (domain.use_guiding and not domain.has_cache_baked_guiding and (domain.guiding_source == 'EFFECTOR' or (domain.guiding_source == 'DOMAIN' and not domain.guiding_parent)))
|
||||
# Deactivate UI if guides are enabled but not baked yet.
|
||||
layout.active = not (domain.use_guide and not domain.has_cache_baked_guide and (domain.guide_source == 'EFFECTOR' or (domain.guide_source == 'DOMAIN' and not domain.guide_parent)))
|
||||
|
||||
is_baking_any = domain.is_cache_baking_any
|
||||
has_baked_data = domain.has_cache_baked_data
|
||||
@ -237,7 +237,7 @@ class PHYSICS_PT_settings(PhysicButtonsPanel, Panel):
|
||||
if effec.effec_type == 'GUIDE':
|
||||
col.prop(effec, "velocity_factor", text="Velocity Factor")
|
||||
col = flow.column()
|
||||
col.prop(effec, "guiding_mode", text="Guiding Mode")
|
||||
col.prop(effec, "guide_mode", text="Guide Mode")
|
||||
|
||||
|
||||
class PHYSICS_PT_borders(PhysicButtonsPanel, Panel):
|
||||
@ -643,8 +643,8 @@ class PHYSICS_PT_noise(PhysicButtonsPanel, Panel):
|
||||
|
||||
domain = context.fluid.domain_settings
|
||||
|
||||
# Deactivate UI if guiding is enabled but not baked yet
|
||||
layout.active = domain.use_noise and not (domain.use_guiding and not domain.has_cache_baked_guiding and (domain.guiding_source == 'EFFECTOR' or (domain.guiding_source == 'DOMAIN' and not domain.guiding_parent)))
|
||||
# Deactivate UI if guides are enabled but not baked yet.
|
||||
layout.active = domain.use_noise and not (domain.use_guide and not domain.has_cache_baked_guide and (domain.guide_source == 'EFFECTOR' or (domain.guide_source == 'DOMAIN' and not domain.guide_parent)))
|
||||
|
||||
is_baking_any = domain.is_cache_baking_any
|
||||
has_baked_noise = domain.has_cache_baked_noise
|
||||
@ -709,8 +709,8 @@ class PHYSICS_PT_mesh(PhysicButtonsPanel, Panel):
|
||||
|
||||
domain = context.fluid.domain_settings
|
||||
|
||||
# Deactivate UI if guiding is enabled but not baked yet
|
||||
layout.active = domain.use_mesh and not (domain.use_guiding and not domain.has_cache_baked_guiding and (domain.guiding_source == 'EFFECTOR' or (domain.guiding_source == 'DOMAIN' and not domain.guiding_parent)))
|
||||
# Deactivate UI if guides are enabled but not baked yet.
|
||||
layout.active = domain.use_mesh and not (domain.use_guide and not domain.has_cache_baked_guide and (domain.guide_source == 'EFFECTOR' or (domain.guide_source == 'DOMAIN' and not domain.guide_parent)))
|
||||
|
||||
is_baking_any = domain.is_cache_baking_any
|
||||
has_baked_mesh = domain.has_cache_baked_mesh
|
||||
@ -781,8 +781,8 @@ class PHYSICS_PT_particles(PhysicButtonsPanel, Panel):
|
||||
|
||||
domain = context.fluid.domain_settings
|
||||
|
||||
# Deactivate UI if guiding is enabled but not baked yet
|
||||
layout.active = not (domain.use_guiding and not domain.has_cache_baked_guiding and (domain.guiding_source == 'EFFECTOR' or (domain.guiding_source == 'DOMAIN' and not domain.guiding_parent)))
|
||||
# Deactivate UI if guides are enabled but not baked yet.
|
||||
layout.active = not (domain.use_guide and not domain.has_cache_baked_guide and (domain.guide_source == 'EFFECTOR' or (domain.guide_source == 'DOMAIN' and not domain.guide_parent)))
|
||||
|
||||
is_baking_any = domain.is_cache_baking_any
|
||||
has_baked_particles = domain.has_cache_baked_particles
|
||||
@ -888,8 +888,8 @@ class PHYSICS_PT_diffusion(PhysicButtonsPanel, Panel):
|
||||
|
||||
domain = context.fluid.domain_settings
|
||||
|
||||
# Deactivate UI if guiding is enabled but not baked yet
|
||||
layout.active = not (domain.use_guiding and not domain.has_cache_baked_guiding and (domain.guiding_source == 'EFFECTOR' or (domain.guiding_source == 'DOMAIN' and not domain.guiding_parent)))
|
||||
# Deactivate UI if guides are enabled but not baked yet.
|
||||
layout.active = not (domain.use_guide and not domain.has_cache_baked_guide and (domain.guide_source == 'EFFECTOR' or (domain.guide_source == 'DOMAIN' and not domain.guide_parent)))
|
||||
|
||||
is_baking_any = domain.is_cache_baking_any
|
||||
has_baked_any = domain.has_cache_baked_any
|
||||
@ -917,8 +917,8 @@ class PHYSICS_PT_diffusion(PhysicButtonsPanel, Panel):
|
||||
col.prop(domain, "surface_tension", text="Surface Tension")
|
||||
|
||||
|
||||
class PHYSICS_PT_guiding(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Guiding"
|
||||
class PHYSICS_PT_guide(PhysicButtonsPanel, Panel):
|
||||
bl_label = "Guides"
|
||||
bl_parent_id = 'PHYSICS_PT_fluid'
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_OPENGL'}
|
||||
@ -937,7 +937,7 @@ class PHYSICS_PT_guiding(PhysicButtonsPanel, Panel):
|
||||
is_baking_any = domain.is_cache_baking_any
|
||||
|
||||
self.layout.enabled = not is_baking_any
|
||||
self.layout.prop(md, "use_guiding", text="")
|
||||
self.layout.prop(md, "use_guide", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -945,7 +945,7 @@ class PHYSICS_PT_guiding(PhysicButtonsPanel, Panel):
|
||||
|
||||
domain = context.fluid.domain_settings
|
||||
|
||||
layout.active = domain.use_guiding
|
||||
layout.active = domain.use_guide
|
||||
|
||||
is_baking_any = domain.is_cache_baking_any
|
||||
has_baked_data = domain.has_cache_baked_data
|
||||
@ -954,32 +954,32 @@ class PHYSICS_PT_guiding(PhysicButtonsPanel, Panel):
|
||||
flow.enabled = not is_baking_any and not has_baked_data
|
||||
|
||||
col = flow.column()
|
||||
col.prop(domain, "guiding_alpha", text="Weight")
|
||||
col.prop(domain, "guiding_beta", text="Size")
|
||||
col.prop(domain, "guiding_vel_factor", text="Velocity Factor")
|
||||
col.prop(domain, "guide_alpha", text="Weight")
|
||||
col.prop(domain, "guide_beta", text="Size")
|
||||
col.prop(domain, "guide_vel_factor", text="Velocity Factor")
|
||||
|
||||
col = flow.column()
|
||||
col.prop(domain, "guiding_source", text="Velocity Source")
|
||||
if domain.guiding_source == 'DOMAIN':
|
||||
col.prop(domain, "guiding_parent", text="Guiding Parent")
|
||||
col.prop(domain, "guide_source", text="Velocity Source")
|
||||
if domain.guide_source == 'DOMAIN':
|
||||
col.prop(domain, "guide_parent", text="Guide Parent")
|
||||
|
||||
if domain.cache_type == 'MODULAR':
|
||||
col.separator()
|
||||
|
||||
if domain.guiding_source == 'EFFECTOR':
|
||||
if domain.guide_source == 'EFFECTOR':
|
||||
split = layout.split()
|
||||
bake_incomplete = (domain.cache_frame_pause_guiding < domain.cache_frame_end)
|
||||
if domain.has_cache_baked_guiding and not domain.is_cache_baking_guiding and bake_incomplete:
|
||||
bake_incomplete = (domain.cache_frame_pause_guide < domain.cache_frame_end)
|
||||
if domain.has_cache_baked_guide and not domain.is_cache_baking_guide and bake_incomplete:
|
||||
col = split.column()
|
||||
col.operator("fluid.bake_guiding", text="Resume")
|
||||
col.operator("fluid.bake_guides", text="Resume")
|
||||
col = split.column()
|
||||
col.operator("fluid.free_guiding", text="Free")
|
||||
elif not domain.has_cache_baked_guiding and domain.is_cache_baking_guiding:
|
||||
split.operator("fluid.pause_bake", text="Pause Guiding")
|
||||
elif not domain.has_cache_baked_guiding and not domain.is_cache_baking_guiding:
|
||||
split.operator("fluid.bake_guiding", text="Bake Guiding")
|
||||
col.operator("fluid.free_guides", text="Free")
|
||||
elif not domain.has_cache_baked_guide and domain.is_cache_baking_guide:
|
||||
split.operator("fluid.pause_bake", text="Pause Guides")
|
||||
elif not domain.has_cache_baked_guide and not domain.is_cache_baking_guide:
|
||||
split.operator("fluid.bake_guides", text="Bake Guides")
|
||||
else:
|
||||
split.operator("fluid.free_guiding", text="Free Guiding")
|
||||
split.operator("fluid.free_guides", text="Free Guides")
|
||||
|
||||
|
||||
class PHYSICS_PT_collections(PhysicButtonsPanel, Panel):
|
||||
@ -1254,7 +1254,7 @@ classes = (
|
||||
PHYSICS_PT_mesh,
|
||||
PHYSICS_PT_particles,
|
||||
PHYSICS_PT_diffusion,
|
||||
PHYSICS_PT_guiding,
|
||||
PHYSICS_PT_guide,
|
||||
PHYSICS_PT_collections,
|
||||
PHYSICS_PT_cache,
|
||||
PHYSICS_PT_export,
|
||||
|
@ -363,15 +363,13 @@ void BKE_fluid_cache_free(FluidDomainSettings *mds, Object *ob, int cache_map)
|
||||
mds->cache_frame_pause_particles = 0;
|
||||
}
|
||||
|
||||
if (cache_map & FLUID_DOMAIN_OUTDATED_GUIDING) {
|
||||
flags &= ~(FLUID_DOMAIN_BAKING_GUIDING | FLUID_DOMAIN_BAKED_GUIDING |
|
||||
FLUID_DOMAIN_OUTDATED_GUIDING);
|
||||
BLI_path_join(
|
||||
temp_dir, sizeof(temp_dir), mds->cache_directory, FLUID_DOMAIN_DIR_GUIDING, NULL);
|
||||
if (cache_map & FLUID_DOMAIN_OUTDATED_GUIDE) {
|
||||
flags &= ~(FLUID_DOMAIN_BAKING_GUIDE | FLUID_DOMAIN_BAKED_GUIDE | FLUID_DOMAIN_OUTDATED_GUIDE);
|
||||
BLI_path_join(temp_dir, sizeof(temp_dir), mds->cache_directory, FLUID_DOMAIN_DIR_GUIDE, NULL);
|
||||
if (BLI_exists(temp_dir)) {
|
||||
BLI_delete(temp_dir, true, true);
|
||||
}
|
||||
mds->cache_frame_pause_guiding = 0;
|
||||
mds->cache_frame_pause_guide = 0;
|
||||
}
|
||||
mds->cache_flag = flags;
|
||||
}
|
||||
@ -789,12 +787,12 @@ void BKE_fluid_modifier_create_type_data(struct FluidModifierData *mmd)
|
||||
mmd->domain->particle_type = 0;
|
||||
mmd->domain->particle_scale = 1;
|
||||
|
||||
/* fluid guiding options */
|
||||
mmd->domain->guiding_parent = NULL;
|
||||
mmd->domain->guiding_alpha = 2.0f;
|
||||
mmd->domain->guiding_beta = 5;
|
||||
mmd->domain->guiding_vel_factor = 2.0f;
|
||||
mmd->domain->guiding_source = FLUID_DOMAIN_GUIDING_SRC_DOMAIN;
|
||||
/* fluid guide options */
|
||||
mmd->domain->guide_parent = NULL;
|
||||
mmd->domain->guide_alpha = 2.0f;
|
||||
mmd->domain->guide_beta = 5;
|
||||
mmd->domain->guide_vel_factor = 2.0f;
|
||||
mmd->domain->guide_source = FLUID_DOMAIN_GUIDE_SRC_DOMAIN;
|
||||
|
||||
/* cache options */
|
||||
mmd->domain->cache_frame_start = 1;
|
||||
@ -803,7 +801,7 @@ void BKE_fluid_modifier_create_type_data(struct FluidModifierData *mmd)
|
||||
mmd->domain->cache_frame_pause_noise = 0;
|
||||
mmd->domain->cache_frame_pause_mesh = 0;
|
||||
mmd->domain->cache_frame_pause_particles = 0;
|
||||
mmd->domain->cache_frame_pause_guiding = 0;
|
||||
mmd->domain->cache_frame_pause_guide = 0;
|
||||
mmd->domain->cache_flag = 0;
|
||||
mmd->domain->cache_type = FLUID_DOMAIN_CACHE_MODULAR;
|
||||
mmd->domain->cache_mesh_format = FLUID_DOMAIN_FILE_BIN_OBJECT;
|
||||
@ -913,8 +911,8 @@ void BKE_fluid_modifier_create_type_data(struct FluidModifierData *mmd)
|
||||
mmd->effector->type = FLUID_EFFECTOR_TYPE_COLLISION;
|
||||
mmd->effector->flags = 0;
|
||||
|
||||
/* guiding options */
|
||||
mmd->effector->guiding_mode = FLUID_EFFECTOR_GUIDING_MAXIMUM;
|
||||
/* guide options */
|
||||
mmd->effector->guide_mode = FLUID_EFFECTOR_GUIDE_MAX;
|
||||
mmd->effector->vel_multi = 1.0f;
|
||||
}
|
||||
}
|
||||
@ -1029,13 +1027,13 @@ void BKE_fluid_modifier_copy(const struct FluidModifierData *mmd,
|
||||
tmds->particle_type = mds->particle_type;
|
||||
tmds->particle_scale = mds->particle_scale;
|
||||
|
||||
/* fluid guiding options */
|
||||
tmds->guiding_parent = mds->guiding_parent;
|
||||
tmds->guiding_alpha = mds->guiding_alpha;
|
||||
tmds->guiding_beta = mds->guiding_beta;
|
||||
tmds->guiding_vel_factor = mds->guiding_vel_factor;
|
||||
/* fluid guide options */
|
||||
tmds->guide_parent = mds->guide_parent;
|
||||
tmds->guide_alpha = mds->guide_alpha;
|
||||
tmds->guide_beta = mds->guide_beta;
|
||||
tmds->guide_vel_factor = mds->guide_vel_factor;
|
||||
copy_v3_v3_int(tmds->guide_res, mds->guide_res);
|
||||
tmds->guiding_source = mds->guiding_source;
|
||||
tmds->guide_source = mds->guide_source;
|
||||
|
||||
/* cache options */
|
||||
tmds->cache_frame_start = mds->cache_frame_start;
|
||||
@ -1044,7 +1042,7 @@ void BKE_fluid_modifier_copy(const struct FluidModifierData *mmd,
|
||||
tmds->cache_frame_pause_noise = mds->cache_frame_pause_noise;
|
||||
tmds->cache_frame_pause_mesh = mds->cache_frame_pause_mesh;
|
||||
tmds->cache_frame_pause_particles = mds->cache_frame_pause_particles;
|
||||
tmds->cache_frame_pause_guiding = mds->cache_frame_pause_guiding;
|
||||
tmds->cache_frame_pause_guide = mds->cache_frame_pause_guide;
|
||||
tmds->cache_flag = mds->cache_flag;
|
||||
tmds->cache_type = mds->cache_type;
|
||||
tmds->cache_mesh_format = mds->cache_mesh_format;
|
||||
@ -1140,8 +1138,8 @@ void BKE_fluid_modifier_copy(const struct FluidModifierData *mmd,
|
||||
tmes->surface_distance = mes->surface_distance;
|
||||
tmes->type = mes->type;
|
||||
|
||||
/* guiding options */
|
||||
tmes->guiding_mode = mes->guiding_mode;
|
||||
/* guide options */
|
||||
tmes->guide_mode = mes->guide_mode;
|
||||
tmes->vel_multi = mes->vel_multi;
|
||||
}
|
||||
}
|
||||
@ -1256,23 +1254,23 @@ static void obstacles_from_mesh_task_cb(void *__restrict userdata,
|
||||
if (data->mes->type == FLUID_EFFECTOR_TYPE_GUIDE) {
|
||||
mul_v3_fl(hit_vel, data->mes->vel_multi);
|
||||
|
||||
switch (data->mes->guiding_mode) {
|
||||
case FLUID_EFFECTOR_GUIDING_AVERAGED:
|
||||
switch (data->mes->guide_mode) {
|
||||
case FLUID_EFFECTOR_GUIDE_AVERAGED:
|
||||
data->velocity_x[index] = (data->velocity_x[index] + hit_vel[0]) * 0.5f;
|
||||
data->velocity_y[index] = (data->velocity_y[index] + hit_vel[1]) * 0.5f;
|
||||
data->velocity_z[index] = (data->velocity_z[index] + hit_vel[2]) * 0.5f;
|
||||
break;
|
||||
case FLUID_EFFECTOR_GUIDING_OVERRIDE:
|
||||
case FLUID_EFFECTOR_GUIDE_OVERRIDE:
|
||||
data->velocity_x[index] = hit_vel[0];
|
||||
data->velocity_y[index] = hit_vel[1];
|
||||
data->velocity_z[index] = hit_vel[2];
|
||||
break;
|
||||
case FLUID_EFFECTOR_GUIDING_MINIMUM:
|
||||
case FLUID_EFFECTOR_GUIDE_MIN:
|
||||
data->velocity_x[index] = MIN2(fabsf(hit_vel[0]), fabsf(data->velocity_x[index]));
|
||||
data->velocity_y[index] = MIN2(fabsf(hit_vel[1]), fabsf(data->velocity_y[index]));
|
||||
data->velocity_z[index] = MIN2(fabsf(hit_vel[2]), fabsf(data->velocity_z[index]));
|
||||
break;
|
||||
case FLUID_EFFECTOR_GUIDING_MAXIMUM:
|
||||
case FLUID_EFFECTOR_GUIDE_MAX:
|
||||
default:
|
||||
data->velocity_x[index] = MAX2(fabsf(hit_vel[0]), fabsf(data->velocity_x[index]));
|
||||
data->velocity_y[index] = MAX2(fabsf(hit_vel[1]), fabsf(data->velocity_y[index]));
|
||||
@ -1446,7 +1444,7 @@ static void update_obstacleflags(FluidDomainSettings *mds,
|
||||
uint coll_index;
|
||||
|
||||
/* First, remove all flags that we want to update. */
|
||||
int prev_flags = (FLUID_DOMAIN_ACTIVE_OBSTACLE | FLUID_DOMAIN_ACTIVE_GUIDING);
|
||||
int prev_flags = (FLUID_DOMAIN_ACTIVE_OBSTACLE | FLUID_DOMAIN_ACTIVE_GUIDE);
|
||||
active_fields &= ~prev_flags;
|
||||
|
||||
/* Monitor active fields based on flow settings */
|
||||
@ -1464,7 +1462,7 @@ static void update_obstacleflags(FluidDomainSettings *mds,
|
||||
active_fields |= FLUID_DOMAIN_ACTIVE_OBSTACLE;
|
||||
}
|
||||
if (mes->type == FLUID_EFFECTOR_TYPE_GUIDE) {
|
||||
active_fields |= FLUID_DOMAIN_ACTIVE_GUIDING;
|
||||
active_fields |= FLUID_DOMAIN_ACTIVE_GUIDE;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1472,7 +1470,7 @@ static void update_obstacleflags(FluidDomainSettings *mds,
|
||||
if (active_fields & FLUID_DOMAIN_ACTIVE_OBSTACLE) {
|
||||
manta_ensure_obstacle(mds->fluid, mds->mmd);
|
||||
}
|
||||
if (active_fields & FLUID_DOMAIN_ACTIVE_GUIDING) {
|
||||
if (active_fields & FLUID_DOMAIN_ACTIVE_GUIDE) {
|
||||
manta_ensure_guiding(mds->fluid, mds->mmd);
|
||||
}
|
||||
mds->active_fields = active_fields;
|
||||
@ -4127,7 +4125,7 @@ static void BKE_fluid_modifier_processDomain(FluidModifierData *mmd,
|
||||
const int scene_framenr)
|
||||
{
|
||||
FluidDomainSettings *mds = mmd->domain;
|
||||
Object *guiding_parent = NULL;
|
||||
Object *guide_parent = NULL;
|
||||
Object **objs = NULL;
|
||||
uint numobj = 0;
|
||||
FluidModifierData *mmd_parent = NULL;
|
||||
@ -4151,9 +4149,9 @@ static void BKE_fluid_modifier_processDomain(FluidModifierData *mmd,
|
||||
mds->time_total = (scene_framenr - 1) * mds->frame_length;
|
||||
|
||||
/* Guiding parent res pointer needs initialization */
|
||||
guiding_parent = mds->guiding_parent;
|
||||
if (guiding_parent) {
|
||||
mmd_parent = (FluidModifierData *)modifiers_findByType(guiding_parent, eModifierType_Fluid);
|
||||
guide_parent = mds->guide_parent;
|
||||
if (guide_parent) {
|
||||
mmd_parent = (FluidModifierData *)modifiers_findByType(guide_parent, eModifierType_Fluid);
|
||||
if (mmd_parent->domain) {
|
||||
copy_v3_v3_int(mds->guide_res, mmd_parent->domain->res);
|
||||
}
|
||||
@ -4178,7 +4176,7 @@ static void BKE_fluid_modifier_processDomain(FluidModifierData *mmd,
|
||||
BLI_path_abs(mds->cache_directory, relbase);
|
||||
|
||||
int data_frame = scene_framenr, noise_frame = scene_framenr;
|
||||
int mesh_frame = scene_framenr, particles_frame = scene_framenr, guiding_frame = scene_framenr;
|
||||
int mesh_frame = scene_framenr, particles_frame = scene_framenr, guide_frame = scene_framenr;
|
||||
|
||||
bool with_smoke, with_liquid;
|
||||
with_smoke = mds->type == FLUID_DOMAIN_TYPE_GAS;
|
||||
@ -4189,40 +4187,40 @@ static void BKE_fluid_modifier_processDomain(FluidModifierData *mmd,
|
||||
bubble = mds->particle_type & FLUID_DOMAIN_PARTICLE_BUBBLE;
|
||||
floater = mds->particle_type & FLUID_DOMAIN_PARTICLE_FOAM;
|
||||
|
||||
bool with_script, with_adaptive, with_noise, with_mesh, with_particles, with_guiding;
|
||||
bool with_script, with_adaptive, with_noise, with_mesh, with_particles, with_guide;
|
||||
with_script = mds->flags & FLUID_DOMAIN_EXPORT_MANTA_SCRIPT;
|
||||
with_adaptive = mds->flags & FLUID_DOMAIN_USE_ADAPTIVE_DOMAIN;
|
||||
with_noise = mds->flags & FLUID_DOMAIN_USE_NOISE;
|
||||
with_mesh = mds->flags & FLUID_DOMAIN_USE_MESH;
|
||||
with_guiding = mds->flags & FLUID_DOMAIN_USE_GUIDING;
|
||||
with_guide = mds->flags & FLUID_DOMAIN_USE_GUIDE;
|
||||
with_particles = drops || bubble || floater;
|
||||
|
||||
bool has_data, has_noise, has_mesh, has_particles, has_guiding;
|
||||
has_data = has_noise = has_mesh = has_particles = has_guiding = false;
|
||||
bool has_data, has_noise, has_mesh, has_particles, has_guide;
|
||||
has_data = has_noise = has_mesh = has_particles = has_guide = false;
|
||||
|
||||
bool baking_data, baking_noise, baking_mesh, baking_particles, baking_guiding, bake_outdated;
|
||||
bool baking_data, baking_noise, baking_mesh, baking_particles, baking_guide, bake_outdated;
|
||||
baking_data = mds->cache_flag & FLUID_DOMAIN_BAKING_DATA;
|
||||
baking_noise = mds->cache_flag & FLUID_DOMAIN_BAKING_NOISE;
|
||||
baking_mesh = mds->cache_flag & FLUID_DOMAIN_BAKING_MESH;
|
||||
baking_particles = mds->cache_flag & FLUID_DOMAIN_BAKING_PARTICLES;
|
||||
baking_guiding = mds->cache_flag & FLUID_DOMAIN_BAKING_GUIDING;
|
||||
baking_guide = mds->cache_flag & FLUID_DOMAIN_BAKING_GUIDE;
|
||||
bake_outdated = mds->cache_flag &
|
||||
(FLUID_DOMAIN_OUTDATED_DATA | FLUID_DOMAIN_OUTDATED_NOISE |
|
||||
FLUID_DOMAIN_OUTDATED_NOISE | FLUID_DOMAIN_OUTDATED_MESH |
|
||||
FLUID_DOMAIN_OUTDATED_PARTICLES | FLUID_DOMAIN_OUTDATED_GUIDING);
|
||||
FLUID_DOMAIN_OUTDATED_PARTICLES | FLUID_DOMAIN_OUTDATED_GUIDE);
|
||||
|
||||
bool resume_data, resume_noise, resume_mesh, resume_particles, resume_guiding;
|
||||
bool resume_data, resume_noise, resume_mesh, resume_particles, resume_guide;
|
||||
resume_data = (!is_startframe) && (mds->cache_frame_pause_data == scene_framenr);
|
||||
resume_noise = (!is_startframe) && (mds->cache_frame_pause_noise == scene_framenr);
|
||||
resume_mesh = (!is_startframe) && (mds->cache_frame_pause_mesh == scene_framenr);
|
||||
resume_particles = (!is_startframe) && (mds->cache_frame_pause_particles == scene_framenr);
|
||||
resume_guiding = (!is_startframe) && (mds->cache_frame_pause_guiding == scene_framenr);
|
||||
resume_guide = (!is_startframe) && (mds->cache_frame_pause_guide == scene_framenr);
|
||||
|
||||
bool read_cache, bake_cache;
|
||||
read_cache = false, bake_cache = baking_data || baking_noise || baking_mesh || baking_particles;
|
||||
|
||||
bool with_gdomain;
|
||||
with_gdomain = (mds->guiding_source == FLUID_DOMAIN_GUIDING_SRC_DOMAIN);
|
||||
with_gdomain = (mds->guide_source == FLUID_DOMAIN_GUIDE_SRC_DOMAIN);
|
||||
|
||||
int o_res[3], o_min[3], o_max[3], o_shift[3];
|
||||
int mode = mds->cache_type;
|
||||
@ -4262,15 +4260,15 @@ static void BKE_fluid_modifier_processDomain(FluidModifierData *mmd,
|
||||
if (baking_particles && resume_particles) {
|
||||
particles_frame = prev_frame;
|
||||
}
|
||||
if (baking_guiding && resume_guiding) {
|
||||
guiding_frame = prev_frame;
|
||||
if (baking_guide && resume_guide) {
|
||||
guide_frame = prev_frame;
|
||||
}
|
||||
|
||||
/* Noise, mesh and particles can never be baked more than data. */
|
||||
CLAMP(noise_frame, noise_frame, data_frame);
|
||||
CLAMP(mesh_frame, mesh_frame, data_frame);
|
||||
CLAMP(particles_frame, particles_frame, data_frame);
|
||||
CLAMP(guiding_frame, guiding_frame, mds->cache_frame_end);
|
||||
CLAMP(guide_frame, guide_frame, mds->cache_frame_end);
|
||||
|
||||
/* Force to read cache as we're resuming the bake */
|
||||
read_cache = true;
|
||||
@ -4304,10 +4302,10 @@ static void BKE_fluid_modifier_processDomain(FluidModifierData *mmd,
|
||||
has_particles = manta_read_particles(mds->fluid, mmd, particles_frame);
|
||||
}
|
||||
|
||||
/* Read guiding cache. */
|
||||
if (with_guiding) {
|
||||
/* Read guide cache. */
|
||||
if (with_guide) {
|
||||
FluidModifierData *mmd2 = (with_gdomain) ? mmd_parent : mmd;
|
||||
has_guiding = manta_read_guiding(mds->fluid, mmd2, scene_framenr, with_gdomain);
|
||||
has_guide = manta_read_guiding(mds->fluid, mmd2, scene_framenr, with_gdomain);
|
||||
}
|
||||
|
||||
/* Read noise and data cache */
|
||||
@ -4385,7 +4383,7 @@ static void BKE_fluid_modifier_processDomain(FluidModifierData *mmd,
|
||||
}
|
||||
}
|
||||
|
||||
if (baking_guiding && with_guiding) {
|
||||
if (baking_guide && with_guide) {
|
||||
manta_guiding(depsgraph, scene, ob, mmd, scene_framenr);
|
||||
}
|
||||
if (baking_data) {
|
||||
@ -4452,7 +4450,7 @@ struct Mesh *BKE_fluid_modifier_do(
|
||||
mmd->domain->cache_flag &= ~FLUID_DOMAIN_OUTDATED_NOISE;
|
||||
mmd->domain->cache_flag &= ~FLUID_DOMAIN_OUTDATED_MESH;
|
||||
mmd->domain->cache_flag &= ~FLUID_DOMAIN_OUTDATED_PARTICLES;
|
||||
mmd->domain->cache_flag &= ~FLUID_DOMAIN_OUTDATED_GUIDING;
|
||||
mmd->domain->cache_flag &= ~FLUID_DOMAIN_OUTDATED_GUIDE;
|
||||
}
|
||||
if (!result) {
|
||||
result = BKE_mesh_copy_for_eval(me, false);
|
||||
|
@ -70,13 +70,13 @@
|
||||
#define FLUID_JOB_BAKE_NOISE "FLUID_OT_bake_noise"
|
||||
#define FLUID_JOB_BAKE_MESH "FLUID_OT_bake_mesh"
|
||||
#define FLUID_JOB_BAKE_PARTICLES "FLUID_OT_bake_particles"
|
||||
#define FLUID_JOB_BAKE_GUIDING "FLUID_OT_bake_guiding"
|
||||
#define FLUID_JOB_BAKE_GUIDES "FLUID_OT_bake_guides"
|
||||
#define FLUID_JOB_FREE_ALL "FLUID_OT_free_all"
|
||||
#define FLUID_JOB_FREE_DATA "FLUID_OT_free_data"
|
||||
#define FLUID_JOB_FREE_NOISE "FLUID_OT_free_noise"
|
||||
#define FLUID_JOB_FREE_MESH "FLUID_OT_free_mesh"
|
||||
#define FLUID_JOB_FREE_PARTICLES "FLUID_OT_free_particles"
|
||||
#define FLUID_JOB_FREE_GUIDING "FLUID_OT_free_guiding"
|
||||
#define FLUID_JOB_FREE_GUIDES "FLUID_OT_free_guides"
|
||||
#define FLUID_JOB_BAKE_PAUSE "FLUID_OT_pause_bake"
|
||||
|
||||
typedef struct FluidJob {
|
||||
@ -122,7 +122,7 @@ static inline bool fluid_is_bake_particle(FluidJob *job)
|
||||
}
|
||||
static inline bool fluid_is_bake_guiding(FluidJob *job)
|
||||
{
|
||||
return (STREQ(job->type, FLUID_JOB_BAKE_GUIDING));
|
||||
return (STREQ(job->type, FLUID_JOB_BAKE_GUIDES));
|
||||
}
|
||||
static inline bool fluid_is_free_all(FluidJob *job)
|
||||
{
|
||||
@ -146,7 +146,7 @@ static inline bool fluid_is_free_particles(FluidJob *job)
|
||||
}
|
||||
static inline bool fluid_is_free_guiding(FluidJob *job)
|
||||
{
|
||||
return (STREQ(job->type, FLUID_JOB_FREE_GUIDING));
|
||||
return (STREQ(job->type, FLUID_JOB_FREE_GUIDES));
|
||||
}
|
||||
|
||||
static bool fluid_initjob(
|
||||
@ -326,9 +326,9 @@ static void fluid_bake_endjob(void *customdata)
|
||||
mds->cache_flag &= ~FLUID_DOMAIN_OUTDATED_PARTICLES;
|
||||
}
|
||||
if (fluid_is_bake_guiding(job) || fluid_is_bake_all(job)) {
|
||||
mds->cache_flag &= ~FLUID_DOMAIN_BAKING_GUIDING;
|
||||
mds->cache_flag |= FLUID_DOMAIN_BAKED_GUIDING;
|
||||
mds->cache_flag &= ~FLUID_DOMAIN_OUTDATED_GUIDING;
|
||||
mds->cache_flag &= ~FLUID_DOMAIN_BAKING_GUIDE;
|
||||
mds->cache_flag |= FLUID_DOMAIN_BAKED_GUIDE;
|
||||
mds->cache_flag &= ~FLUID_DOMAIN_OUTDATED_GUIDE;
|
||||
}
|
||||
if (fluid_is_bake_data(job) || fluid_is_bake_all(job)) {
|
||||
mds->cache_flag &= ~FLUID_DOMAIN_BAKING_DATA;
|
||||
@ -399,12 +399,11 @@ static void fluid_bake_startjob(void *customdata, short *stop, short *do_update,
|
||||
job->pause_frame = &mds->cache_frame_pause_particles;
|
||||
}
|
||||
if (fluid_is_bake_guiding(job) || fluid_is_bake_all(job)) {
|
||||
BLI_path_join(
|
||||
temp_dir, sizeof(temp_dir), mds->cache_directory, FLUID_DOMAIN_DIR_GUIDING, NULL);
|
||||
BLI_path_join(temp_dir, sizeof(temp_dir), mds->cache_directory, FLUID_DOMAIN_DIR_GUIDE, NULL);
|
||||
BLI_dir_create_recursive(temp_dir); /* Create 'guiding' subdir if it does not exist already */
|
||||
mds->cache_flag &= ~(FLUID_DOMAIN_BAKED_GUIDING | FLUID_DOMAIN_OUTDATED_GUIDING);
|
||||
mds->cache_flag |= FLUID_DOMAIN_BAKING_GUIDING;
|
||||
job->pause_frame = &mds->cache_frame_pause_guiding;
|
||||
mds->cache_flag &= ~(FLUID_DOMAIN_BAKED_GUIDE | FLUID_DOMAIN_OUTDATED_GUIDE);
|
||||
mds->cache_flag |= FLUID_DOMAIN_BAKING_GUIDE;
|
||||
job->pause_frame = &mds->cache_frame_pause_guide;
|
||||
}
|
||||
if (fluid_is_bake_data(job) || fluid_is_bake_all(job)) {
|
||||
BLI_path_join(temp_dir, sizeof(temp_dir), mds->cache_directory, FLUID_DOMAIN_DIR_CONFIG, NULL);
|
||||
@ -492,7 +491,7 @@ static void fluid_free_startjob(void *customdata, short *stop, short *do_update,
|
||||
cache_map |= FLUID_DOMAIN_OUTDATED_PARTICLES;
|
||||
}
|
||||
if (fluid_is_free_guiding(job) || fluid_is_free_all(job)) {
|
||||
cache_map |= FLUID_DOMAIN_OUTDATED_GUIDING;
|
||||
cache_map |= FLUID_DOMAIN_OUTDATED_GUIDE;
|
||||
}
|
||||
#ifdef WITH_FLUID
|
||||
BKE_fluid_cache_free(mds, job->ob, cache_map);
|
||||
@ -800,12 +799,12 @@ void FLUID_OT_free_particles(wmOperatorType *ot)
|
||||
ot->poll = ED_operator_object_active_editable;
|
||||
}
|
||||
|
||||
void FLUID_OT_bake_guiding(wmOperatorType *ot)
|
||||
void FLUID_OT_bake_guides(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name = "Bake Guiding";
|
||||
ot->name = "Bake Guides";
|
||||
ot->description = "Bake Fluid Guiding";
|
||||
ot->idname = FLUID_JOB_BAKE_GUIDING;
|
||||
ot->idname = FLUID_JOB_BAKE_GUIDES;
|
||||
|
||||
/* api callbacks */
|
||||
ot->exec = fluid_bake_exec;
|
||||
@ -814,12 +813,12 @@ void FLUID_OT_bake_guiding(wmOperatorType *ot)
|
||||
ot->poll = ED_operator_object_active_editable;
|
||||
}
|
||||
|
||||
void FLUID_OT_free_guiding(wmOperatorType *ot)
|
||||
void FLUID_OT_free_guides(wmOperatorType *ot)
|
||||
{
|
||||
/* identifiers */
|
||||
ot->name = "Free Guiding";
|
||||
ot->name = "Free Guides";
|
||||
ot->description = "Free Fluid Guiding";
|
||||
ot->idname = FLUID_JOB_FREE_GUIDING;
|
||||
ot->idname = FLUID_JOB_FREE_GUIDES;
|
||||
|
||||
/* api callbacks */
|
||||
ot->exec = fluid_free_exec;
|
||||
|
@ -113,8 +113,8 @@ void FLUID_OT_bake_mesh(struct wmOperatorType *ot);
|
||||
void FLUID_OT_free_mesh(struct wmOperatorType *ot);
|
||||
void FLUID_OT_bake_particles(struct wmOperatorType *ot);
|
||||
void FLUID_OT_free_particles(struct wmOperatorType *ot);
|
||||
void FLUID_OT_bake_guiding(struct wmOperatorType *ot);
|
||||
void FLUID_OT_free_guiding(struct wmOperatorType *ot);
|
||||
void FLUID_OT_bake_guides(struct wmOperatorType *ot);
|
||||
void FLUID_OT_free_guides(struct wmOperatorType *ot);
|
||||
void FLUID_OT_pause_bake(struct wmOperatorType *ot);
|
||||
|
||||
/* dynamicpaint.c */
|
||||
|
@ -136,8 +136,8 @@ static void operatortypes_fluid(void)
|
||||
WM_operatortype_append(FLUID_OT_free_mesh);
|
||||
WM_operatortype_append(FLUID_OT_bake_particles);
|
||||
WM_operatortype_append(FLUID_OT_free_particles);
|
||||
WM_operatortype_append(FLUID_OT_bake_guiding);
|
||||
WM_operatortype_append(FLUID_OT_free_guiding);
|
||||
WM_operatortype_append(FLUID_OT_bake_guides);
|
||||
WM_operatortype_append(FLUID_OT_free_guides);
|
||||
WM_operatortype_append(FLUID_OT_pause_bake);
|
||||
}
|
||||
|
||||
|
@ -37,7 +37,7 @@ enum {
|
||||
FLUID_DOMAIN_USE_ADAPTIVE_DOMAIN = (1 << 7),
|
||||
FLUID_DOMAIN_USE_ADAPTIVE_TIME = (1 << 8), /* Adaptive time stepping in domain. */
|
||||
FLUID_DOMAIN_USE_MESH = (1 << 9), /* Use mesh. */
|
||||
FLUID_DOMAIN_USE_GUIDING = (1 << 10), /* Use guiding. */
|
||||
FLUID_DOMAIN_USE_GUIDE = (1 << 10), /* Use guiding. */
|
||||
FLUID_DOMAIN_USE_SPEED_VECTORS = (1 << 11), /* Generate mesh speed vectors. */
|
||||
FLUID_DOMAIN_EXPORT_MANTA_SCRIPT = (1 << 12), /* Export mantaflow script during bake. */
|
||||
FLUID_DOMAIN_USE_FRACTIONS = (1 << 13), /* Use second order obstacles. */
|
||||
@ -142,8 +142,8 @@ enum {
|
||||
|
||||
/* Guiding velocity source. */
|
||||
enum {
|
||||
FLUID_DOMAIN_GUIDING_SRC_DOMAIN = 0,
|
||||
FLUID_DOMAIN_GUIDING_SRC_EFFECTOR = 1,
|
||||
FLUID_DOMAIN_GUIDE_SRC_DOMAIN = 0,
|
||||
FLUID_DOMAIN_GUIDE_SRC_EFFECTOR = 1,
|
||||
};
|
||||
|
||||
/* Fluid data fields (active_fields). */
|
||||
@ -153,7 +153,7 @@ enum {
|
||||
FLUID_DOMAIN_ACTIVE_COLORS = (1 << 2),
|
||||
FLUID_DOMAIN_ACTIVE_COLOR_SET = (1 << 3),
|
||||
FLUID_DOMAIN_ACTIVE_OBSTACLE = (1 << 4),
|
||||
FLUID_DOMAIN_ACTIVE_GUIDING = (1 << 5),
|
||||
FLUID_DOMAIN_ACTIVE_GUIDE = (1 << 5),
|
||||
FLUID_DOMAIN_ACTIVE_INVEL = (1 << 6),
|
||||
FLUID_DOMAIN_ACTIVE_OUTFLOW = (1 << 7),
|
||||
};
|
||||
@ -183,22 +183,22 @@ enum {
|
||||
FLUID_DOMAIN_BAKED_MESH = (1 << 5),
|
||||
FLUID_DOMAIN_BAKING_PARTICLES = (1 << 6),
|
||||
FLUID_DOMAIN_BAKED_PARTICLES = (1 << 7),
|
||||
FLUID_DOMAIN_BAKING_GUIDING = (1 << 8),
|
||||
FLUID_DOMAIN_BAKED_GUIDING = (1 << 9),
|
||||
FLUID_DOMAIN_BAKING_GUIDE = (1 << 8),
|
||||
FLUID_DOMAIN_BAKED_GUIDE = (1 << 9),
|
||||
FLUID_DOMAIN_OUTDATED_DATA = (1 << 10),
|
||||
FLUID_DOMAIN_OUTDATED_NOISE = (1 << 11),
|
||||
FLUID_DOMAIN_OUTDATED_MESH = (1 << 12),
|
||||
FLUID_DOMAIN_OUTDATED_PARTICLES = (1 << 13),
|
||||
FLUID_DOMAIN_OUTDATED_GUIDING = (1 << 14),
|
||||
FLUID_DOMAIN_OUTDATED_GUIDE = (1 << 14),
|
||||
};
|
||||
|
||||
#define FLUID_DOMAIN_BAKING_ALL \
|
||||
(FLUID_DOMAIN_BAKING_DATA | FLUID_DOMAIN_BAKING_NOISE | FLUID_DOMAIN_BAKING_MESH | \
|
||||
FLUID_DOMAIN_BAKING_PARTICLES | FLUID_DOMAIN_BAKING_GUIDING)
|
||||
FLUID_DOMAIN_BAKING_PARTICLES | FLUID_DOMAIN_BAKING_GUIDE)
|
||||
|
||||
#define FLUID_DOMAIN_BAKED_ALL \
|
||||
(FLUID_DOMAIN_BAKED_DATA | FLUID_DOMAIN_BAKED_NOISE | FLUID_DOMAIN_BAKED_MESH | \
|
||||
FLUID_DOMAIN_BAKED_PARTICLES | FLUID_DOMAIN_BAKED_GUIDING)
|
||||
FLUID_DOMAIN_BAKED_PARTICLES | FLUID_DOMAIN_BAKED_GUIDE)
|
||||
|
||||
#define FLUID_DOMAIN_DIR_DEFAULT "cache_fluid"
|
||||
#define FLUID_DOMAIN_DIR_CONFIG "config"
|
||||
@ -206,7 +206,7 @@ enum {
|
||||
#define FLUID_DOMAIN_DIR_NOISE "noise"
|
||||
#define FLUID_DOMAIN_DIR_MESH "mesh"
|
||||
#define FLUID_DOMAIN_DIR_PARTICLES "particles"
|
||||
#define FLUID_DOMAIN_DIR_GUIDING "guiding"
|
||||
#define FLUID_DOMAIN_DIR_GUIDE "guiding"
|
||||
#define FLUID_DOMAIN_DIR_SCRIPT "script"
|
||||
#define FLUID_DOMAIN_SMOKE_SCRIPT "smoke_script.py"
|
||||
#define FLUID_DOMAIN_LIQUID_SCRIPT "liquid_script.py"
|
||||
@ -262,7 +262,7 @@ typedef struct FluidDomainSettings {
|
||||
struct GPUTexture *tex_velocity_x;
|
||||
struct GPUTexture *tex_velocity_y;
|
||||
struct GPUTexture *tex_velocity_z;
|
||||
struct Object *guiding_parent;
|
||||
struct Object *guide_parent;
|
||||
/** Vertex velocities of simulated fluid mesh. */
|
||||
struct FluidDomainVertexVelocity *mesh_velocities;
|
||||
struct EffectorWeights *effector_weights;
|
||||
@ -383,11 +383,11 @@ typedef struct FluidDomainSettings {
|
||||
char _pad6[6]; /* Unused. */
|
||||
|
||||
/* Fluid guiding options. */
|
||||
float guiding_alpha; /* Guiding weight scalar (determines strength). */
|
||||
int guiding_beta; /* Guiding blur radius (affects size of vortices). */
|
||||
float guiding_vel_factor; /* Multiply guiding velocity by this factor. */
|
||||
int guide_res[3]; /* Res for velocity guide grids - independent from base res. */
|
||||
short guiding_source;
|
||||
float guide_alpha; /* Guiding weight scalar (determines strength). */
|
||||
int guide_beta; /* Guiding blur radius (affects size of vortices). */
|
||||
float guide_vel_factor; /* Multiply guiding velocity by this factor. */
|
||||
int guide_res[3]; /* Res for velocity guide grids - independent from base res. */
|
||||
short guide_source;
|
||||
char _pad7[2]; /* Unused. */
|
||||
|
||||
/* Cache options. */
|
||||
@ -397,7 +397,7 @@ typedef struct FluidDomainSettings {
|
||||
int cache_frame_pause_noise;
|
||||
int cache_frame_pause_mesh;
|
||||
int cache_frame_pause_particles;
|
||||
int cache_frame_pause_guiding;
|
||||
int cache_frame_pause_guide;
|
||||
int cache_flag;
|
||||
char cache_mesh_format;
|
||||
char cache_data_format;
|
||||
@ -557,10 +557,10 @@ enum {
|
||||
|
||||
/* Guiding velocity modes. */
|
||||
enum {
|
||||
FLUID_EFFECTOR_GUIDING_MAXIMUM = 0,
|
||||
FLUID_EFFECTOR_GUIDING_MINIMUM = 1,
|
||||
FLUID_EFFECTOR_GUIDING_OVERRIDE = 2,
|
||||
FLUID_EFFECTOR_GUIDING_AVERAGED = 3,
|
||||
FLUID_EFFECTOR_GUIDE_MAX = 0,
|
||||
FLUID_EFFECTOR_GUIDE_MIN = 1,
|
||||
FLUID_EFFECTOR_GUIDE_OVERRIDE = 2,
|
||||
FLUID_EFFECTOR_GUIDE_AVERAGED = 3,
|
||||
};
|
||||
|
||||
/* Collision objects (filled with smoke). */
|
||||
@ -583,7 +583,7 @@ typedef struct FluidEffectorSettings {
|
||||
|
||||
/* Guiding options. */
|
||||
float vel_multi; /* Multiplier for object velocity. */
|
||||
short guiding_mode;
|
||||
short guide_mode;
|
||||
char _pad2[2];
|
||||
} FluidEffectorSettings;
|
||||
|
||||
|
@ -68,6 +68,13 @@ DNA_STRUCT_RENAME_ELEM(Camera, YF_dofdist, dof_distance)
|
||||
DNA_STRUCT_RENAME_ELEM(Camera, clipend, clip_end)
|
||||
DNA_STRUCT_RENAME_ELEM(Camera, clipsta, clip_start)
|
||||
DNA_STRUCT_RENAME_ELEM(Collection, dupli_ofs, instance_offset)
|
||||
DNA_STRUCT_RENAME_ELEM(FluidDomainSettings, cache_frame_pause_guiding, cache_frame_pause_guide)
|
||||
DNA_STRUCT_RENAME_ELEM(FluidDomainSettings, guiding_alpha, guide_alpha)
|
||||
DNA_STRUCT_RENAME_ELEM(FluidDomainSettings, guiding_beta, guide_beta)
|
||||
DNA_STRUCT_RENAME_ELEM(FluidDomainSettings, guiding_parent, guide_parent)
|
||||
DNA_STRUCT_RENAME_ELEM(FluidDomainSettings, guiding_source, guide_source)
|
||||
DNA_STRUCT_RENAME_ELEM(FluidDomainSettings, guiding_vel_factor, guide_vel_factor)
|
||||
DNA_STRUCT_RENAME_ELEM(FluidEffectorSettings, guiding_mode, guide_mode)
|
||||
DNA_STRUCT_RENAME_ELEM(Object, col, color)
|
||||
DNA_STRUCT_RENAME_ELEM(Object, dup_group, instance_collection)
|
||||
DNA_STRUCT_RENAME_ELEM(Object, dupfacesca, instance_faces_scale)
|
||||
|
@ -454,9 +454,9 @@ static void rna_Fluid_cachetype_set(struct PointerRNA *ptr, int value)
|
||||
}
|
||||
}
|
||||
|
||||
static void rna_Fluid_guiding_parent_set(struct PointerRNA *ptr,
|
||||
struct PointerRNA value,
|
||||
struct ReportList *UNUSED(reports))
|
||||
static void rna_Fluid_guide_parent_set(struct PointerRNA *ptr,
|
||||
struct PointerRNA value,
|
||||
struct ReportList *UNUSED(reports))
|
||||
{
|
||||
FluidDomainSettings *mds = (FluidDomainSettings *)ptr->data;
|
||||
Object *par = (Object *)value.data;
|
||||
@ -466,12 +466,12 @@ static void rna_Fluid_guiding_parent_set(struct PointerRNA *ptr,
|
||||
if (par != NULL) {
|
||||
mmd_par = (FluidModifierData *)modifiers_findByType(par, eModifierType_Fluid);
|
||||
if (mmd_par && mmd_par->domain) {
|
||||
mds->guiding_parent = value.data;
|
||||
mds->guide_parent = value.data;
|
||||
copy_v3_v3_int(mds->guide_res, mmd_par->domain->res);
|
||||
}
|
||||
}
|
||||
else {
|
||||
mds->guiding_parent = NULL;
|
||||
mds->guide_parent = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1082,14 +1082,14 @@ static void rna_def_fluid_domain_settings(BlenderRNA *brna)
|
||||
{0, NULL, 0, NULL, NULL},
|
||||
};
|
||||
|
||||
static EnumPropertyItem fluid_guiding_source_items[] = {
|
||||
{FLUID_DOMAIN_GUIDING_SRC_DOMAIN,
|
||||
static EnumPropertyItem fluid_guide_source_items[] = {
|
||||
{FLUID_DOMAIN_GUIDE_SRC_DOMAIN,
|
||||
"DOMAIN",
|
||||
0,
|
||||
"Domain",
|
||||
"Use a fluid domain for guiding (domain needs to be baked already so that velocities can "
|
||||
"be extracted but can be of any type)"},
|
||||
{FLUID_DOMAIN_GUIDING_SRC_EFFECTOR,
|
||||
{FLUID_DOMAIN_GUIDE_SRC_EFFECTOR,
|
||||
"EFFECTOR",
|
||||
0,
|
||||
"Effector",
|
||||
@ -1897,20 +1897,20 @@ static void rna_def_fluid_domain_settings(BlenderRNA *brna)
|
||||
|
||||
/* fluid guiding options */
|
||||
|
||||
prop = RNA_def_property(srna, "guiding_alpha", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "guiding_alpha");
|
||||
prop = RNA_def_property(srna, "guide_alpha", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "guide_alpha");
|
||||
RNA_def_property_range(prop, 1.0, 100.0);
|
||||
RNA_def_property_ui_text(prop, "Weight", "Guiding weight (higher value results in greater lag)");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "guiding_beta", PROP_INT, PROP_NONE);
|
||||
RNA_def_property_int_sdna(prop, NULL, "guiding_beta");
|
||||
prop = RNA_def_property(srna, "guide_beta", PROP_INT, PROP_NONE);
|
||||
RNA_def_property_int_sdna(prop, NULL, "guide_beta");
|
||||
RNA_def_property_range(prop, 1, 50);
|
||||
RNA_def_property_ui_text(prop, "Size", "Guiding size (higher value results in larger vortices)");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "guiding_vel_factor", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "guiding_vel_factor");
|
||||
prop = RNA_def_property(srna, "guide_vel_factor", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "guide_vel_factor");
|
||||
RNA_def_property_range(prop, 0.0, 100.0);
|
||||
RNA_def_property_ui_text(
|
||||
prop,
|
||||
@ -1918,16 +1918,16 @@ static void rna_def_fluid_domain_settings(BlenderRNA *brna)
|
||||
"Guiding velocity factor (higher value results in bigger guiding velocities)");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "guiding_source", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_sdna(prop, NULL, "guiding_source");
|
||||
RNA_def_property_enum_items(prop, fluid_guiding_source_items);
|
||||
prop = RNA_def_property(srna, "guide_source", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_sdna(prop, NULL, "guide_source");
|
||||
RNA_def_property_enum_items(prop, fluid_guide_source_items);
|
||||
RNA_def_property_ui_text(prop, "Guiding source", "Choose where to get guiding velocities from");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_Fluid_update");
|
||||
|
||||
prop = RNA_def_property(srna, "guiding_parent", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_pointer_sdna(prop, NULL, "guiding_parent");
|
||||
prop = RNA_def_property(srna, "guide_parent", PROP_POINTER, PROP_NONE);
|
||||
RNA_def_property_pointer_sdna(prop, NULL, "guide_parent");
|
||||
RNA_def_property_struct_type(prop, "Object");
|
||||
RNA_def_property_pointer_funcs(prop, NULL, "rna_Fluid_guiding_parent_set", NULL, NULL);
|
||||
RNA_def_property_pointer_funcs(prop, NULL, "rna_Fluid_guide_parent_set", NULL, NULL);
|
||||
RNA_def_property_flag(prop, PROP_EDITABLE);
|
||||
RNA_def_property_ui_text(prop,
|
||||
"",
|
||||
@ -1935,8 +1935,8 @@ static void rna_def_fluid_domain_settings(BlenderRNA *brna)
|
||||
"to have fluid modifier and be of type domain))");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_Fluid_update");
|
||||
|
||||
prop = RNA_def_property(srna, "use_guiding", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flags", FLUID_DOMAIN_USE_GUIDING);
|
||||
prop = RNA_def_property(srna, "use_guide", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flags", FLUID_DOMAIN_USE_GUIDE);
|
||||
RNA_def_property_ui_text(prop, "Use Guiding", "Enable fluid guiding");
|
||||
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_reset");
|
||||
@ -1966,8 +1966,8 @@ static void rna_def_fluid_domain_settings(BlenderRNA *brna)
|
||||
prop = RNA_def_property(srna, "cache_frame_pause_particles", PROP_INT, PROP_TIME);
|
||||
RNA_def_property_int_sdna(prop, NULL, "cache_frame_pause_particles");
|
||||
|
||||
prop = RNA_def_property(srna, "cache_frame_pause_guiding", PROP_INT, PROP_TIME);
|
||||
RNA_def_property_int_sdna(prop, NULL, "cache_frame_pause_guiding");
|
||||
prop = RNA_def_property(srna, "cache_frame_pause_guide", PROP_INT, PROP_TIME);
|
||||
RNA_def_property_int_sdna(prop, NULL, "cache_frame_pause_guide");
|
||||
|
||||
prop = RNA_def_property(srna, "cache_mesh_format", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_sdna(prop, NULL, "cache_mesh_format");
|
||||
@ -2051,12 +2051,12 @@ static void rna_def_fluid_domain_settings(BlenderRNA *brna)
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "cache_flag", FLUID_DOMAIN_BAKED_PARTICLES);
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, NULL);
|
||||
|
||||
prop = RNA_def_property(srna, "is_cache_baking_guiding", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "cache_flag", FLUID_DOMAIN_BAKING_GUIDING);
|
||||
prop = RNA_def_property(srna, "is_cache_baking_guide", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "cache_flag", FLUID_DOMAIN_BAKING_GUIDE);
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, NULL);
|
||||
|
||||
prop = RNA_def_property(srna, "has_cache_baked_guiding", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "cache_flag", FLUID_DOMAIN_BAKED_GUIDING);
|
||||
prop = RNA_def_property(srna, "has_cache_baked_guide", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "cache_flag", FLUID_DOMAIN_BAKED_GUIDE);
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, NULL);
|
||||
|
||||
/* Read only checks, avoids individually accessing flags above. */
|
||||
@ -2506,30 +2506,30 @@ static void rna_def_fluid_effec_settings(BlenderRNA *brna)
|
||||
{
|
||||
static EnumPropertyItem effec_type_items[] = {
|
||||
{FLUID_EFFECTOR_TYPE_COLLISION, "COLLISION", 0, "Collision", "Create collision object"},
|
||||
{FLUID_EFFECTOR_TYPE_GUIDE, "GUIDE", 0, "Guide", "Create guiding object"},
|
||||
{FLUID_EFFECTOR_TYPE_GUIDE, "GUIDE", 0, "Guide", "Create guide object"},
|
||||
{0, NULL, 0, NULL, NULL},
|
||||
};
|
||||
|
||||
static EnumPropertyItem fluid_guiding_mode_items[] = {
|
||||
{FLUID_EFFECTOR_GUIDING_MAXIMUM,
|
||||
static EnumPropertyItem fluid_guide_mode_items[] = {
|
||||
{FLUID_EFFECTOR_GUIDE_MAX,
|
||||
"MAXIMUM",
|
||||
0,
|
||||
"Maximize",
|
||||
"Compare velocities from previous frame with new velocities from current frame and keep "
|
||||
"the maximum"},
|
||||
{FLUID_EFFECTOR_GUIDING_MINIMUM,
|
||||
{FLUID_EFFECTOR_GUIDE_MIN,
|
||||
"MINIMUM",
|
||||
0,
|
||||
"Minimize",
|
||||
"Compare velocities from previous frame with new velocities from current frame and keep "
|
||||
"the minimum"},
|
||||
{FLUID_EFFECTOR_GUIDING_OVERRIDE,
|
||||
{FLUID_EFFECTOR_GUIDE_OVERRIDE,
|
||||
"OVERRIDE",
|
||||
0,
|
||||
"Override",
|
||||
"Always write new guiding velocities for every frame (each frame only contains current "
|
||||
"Always write new guide velocities for every frame (each frame only contains current "
|
||||
"velocities from guiding objects)"},
|
||||
{FLUID_EFFECTOR_GUIDING_AVERAGED,
|
||||
{FLUID_EFFECTOR_GUIDE_AVERAGED,
|
||||
"AVERAGED",
|
||||
0,
|
||||
"Averaged",
|
||||
@ -2569,9 +2569,9 @@ static void rna_def_fluid_effec_settings(BlenderRNA *brna)
|
||||
RNA_def_property_ui_text(prop, "Source", "Multiplier of obstacle velocity");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "guiding_mode", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_sdna(prop, NULL, "guiding_mode");
|
||||
RNA_def_property_enum_items(prop, fluid_guiding_mode_items);
|
||||
prop = RNA_def_property(srna, "guide_mode", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_sdna(prop, NULL, "guide_mode");
|
||||
RNA_def_property_enum_items(prop, fluid_guide_mode_items);
|
||||
RNA_def_property_ui_text(prop, "Guiding mode", "How to create guiding velocities");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_Fluid_update");
|
||||
}
|
||||
|
@ -163,11 +163,11 @@ static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphConte
|
||||
PFIELD_SMOKEFLOW,
|
||||
"Fluid Force Field");
|
||||
|
||||
if (mmd->domain->guiding_parent != NULL) {
|
||||
if (mmd->domain->guide_parent != NULL) {
|
||||
DEG_add_object_relation(
|
||||
ctx->node, mmd->domain->guiding_parent, DEG_OB_COMP_TRANSFORM, "Fluid Guiding Object");
|
||||
ctx->node, mmd->domain->guide_parent, DEG_OB_COMP_TRANSFORM, "Fluid Guiding Object");
|
||||
DEG_add_object_relation(
|
||||
ctx->node, mmd->domain->guiding_parent, DEG_OB_COMP_GEOMETRY, "Fluid Guiding Object");
|
||||
ctx->node, mmd->domain->guide_parent, DEG_OB_COMP_GEOMETRY, "Fluid Guiding Object");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -181,8 +181,8 @@ static void foreachIDLink(ModifierData *md, Object *ob, IDWalkFunc walk, void *u
|
||||
walk(userData, ob, (ID **)&mmd->domain->fluid_group, IDWALK_CB_NOP);
|
||||
walk(userData, ob, (ID **)&mmd->domain->force_group, IDWALK_CB_NOP);
|
||||
|
||||
if (mmd->domain->guiding_parent) {
|
||||
walk(userData, ob, (ID **)&mmd->domain->guiding_parent, IDWALK_CB_NOP);
|
||||
if (mmd->domain->guide_parent) {
|
||||
walk(userData, ob, (ID **)&mmd->domain->guide_parent, IDWALK_CB_NOP);
|
||||
}
|
||||
|
||||
if (mmd->domain->effector_weights) {
|
||||
|
Loading…
Reference in New Issue
Block a user