40# include <fmt/format.h>
64 rna_Fluid_update(bmain, scene,
ptr);
72 if (settings->fmd && settings->fmd->domain) {
90 if (settings->fmd && settings->fmd->domain) {
102 if (settings->fmd && settings->fmd->domain) {
114 if (settings->fmd && settings->fmd->domain) {
126 if (settings->fmd && settings->fmd->domain) {
144 rna_Fluid_update(bmain, scene,
ptr);
154 rna_Fluid_update(bmain, scene,
ptr);
164 rna_Fluid_datacache_reset(bmain, scene,
ptr);
165 rna_Fluid_update(bmain, scene,
ptr);
175 rna_Fluid_noisecache_reset(bmain, scene,
ptr);
176 rna_Fluid_update(bmain, scene,
ptr);
186 rna_Fluid_meshcache_reset(bmain, scene,
ptr);
187 rna_Fluid_update(bmain, scene,
ptr);
197 rna_Fluid_particlescache_reset(bmain, scene,
ptr);
198 rna_Fluid_update(bmain, scene,
ptr);
208 rna_Fluid_dependency_update(bmain, scene,
ptr);
211static void rna_Fluid_parts_create(
Main *bmain,
213 const char *pset_name,
214 const char *parts_name,
215 const char *psys_name,
219 UNUSED_VARS(bmain,
ptr, pset_name, parts_name, psys_name, psys_type);
242static bool rna_Fluid_parts_exists(
PointerRNA *
ptr,
int ptype)
247 for (psys =
static_cast<ParticleSystem *
>(ob->particlesystem.first); psys; psys = psys->
next) {
267 rna_Fluid_domain_data_reset(bmain, scene,
ptr);
271 if (ob->type ==
OB_MESH && !exists) {
272 rna_Fluid_parts_create(
273 bmain,
ptr,
"LiquidParticleSettings",
"Liquid",
"Liquid Particle System",
PART_FLUID_FLIP);
280 rna_Fluid_update(bmain, scene,
ptr);
290 if (ob->type ==
OB_MESH && !exists) {
291 rna_Fluid_parts_create(
308 if (ob->type ==
OB_MESH && !exists) {
309 rna_Fluid_parts_create(bmain,
311 "BubbleParticleSettings",
313 "Bubble Particle System",
330 if (ob->type ==
OB_MESH && !exists) {
331 rna_Fluid_parts_create(
348 if (ob->type ==
OB_MESH && !exists) {
349 rna_Fluid_parts_create(bmain,
351 "TracerParticleSettings",
353 "Tracer Particle System",
381 rna_Fluid_spray_parts_update(bmain, scene,
ptr);
384 rna_Fluid_foam_parts_update(bmain, scene,
ptr);
387 rna_Fluid_bubble_parts_update(bmain, scene,
ptr);
393 rna_Fluid_parts_create(bmain,
395 "SprayFoamParticleSettings",
397 "Spray + Foam Particle System",
412 rna_Fluid_bubble_parts_update(bmain, scene,
ptr);
419 rna_Fluid_parts_create(bmain,
421 "SprayBubbleParticleSettings",
423 "Spray + Bubble Particle System",
438 rna_Fluid_foam_parts_update(bmain, scene,
ptr);
445 rna_Fluid_parts_create(bmain,
447 "FoamBubbleParticleSettings",
448 "Foam + Bubble Particles",
449 "Foam + Bubble Particle System",
464 rna_Fluid_spray_parts_update(bmain, scene,
ptr);
473 rna_Fluid_parts_create(bmain,
475 "SprayFoamBubbleParticleSettings",
476 "Spray + Foam + Bubbles",
477 "Spray + Foam + Bubble Particle System",
494 printf(
"ERROR: Unexpected combined export setting encountered!");
498static void rna_Fluid_cache_startframe_set(
PointerRNA *
ptr,
int value)
504static void rna_Fluid_cache_endframe_set(
PointerRNA *
ptr,
int value)
510static void rna_Fluid_cachetype_mesh_set(
PointerRNA *
ptr,
int value)
516static void rna_Fluid_cachetype_data_set(
PointerRNA *
ptr,
int value)
522static void rna_Fluid_cachetype_particle_set(
PointerRNA *
ptr,
int value)
528static void rna_Fluid_cachetype_noise_set(
PointerRNA *
ptr,
int value)
534static void rna_Fluid_cachetype_set(
PointerRNA *
ptr,
int value)
538 if (value != settings->cache_type) {
539 settings->cache_type = value;
540 settings->cache_flag = 0;
551 if (par !=
nullptr) {
553 if (fmd_par && fmd_par->
domain) {
554 fds->guide_parent =
static_cast<Object *
>(value.data);
559 fds->guide_parent =
nullptr;
574 tmp.
name =
N_(
"Binary Object");
575 tmp.
description =
N_(
"Binary object file format (.bobj.gz)");
601 tmp.
name =
N_(
"Uni Cache");
619 tmp.identifier =
"RAW";
620 tmp.name =
N_(
"Raw Cache");
621 tmp.description =
N_(
"Raw file format (.raw)");
642 tmp.
name =
N_(
"Uni Cache");
652static void rna_Fluid_cache_directory_set(
PointerRNA *
ptr,
const char *value)
656 if (
STREQ(settings->cache_directory, value)) {
660 STRNCPY(settings->cache_directory, value);
688 tmp.
name =
N_(
"Pressure");
695 tmp.
name =
N_(
"X Velocity");
702 tmp.
name =
N_(
"Y Velocity");
709 tmp.
name =
N_(
"Z Velocity");
788 tmp.
name =
N_(
"Fluid Level Set");
789 tmp.
description =
N_(
"Level set representation of the fluid");
795 tmp.
name =
N_(
"Inflow Level Set");
796 tmp.
description =
N_(
"Level set representation of the inflow");
802 tmp.
name =
N_(
"Outflow Level Set");
803 tmp.
description =
N_(
"Level set representation of the outflow");
809 tmp.
name =
N_(
"Obstacle Level Set");
810 tmp.
description =
N_(
"Level set representation of the obstacles");
835 tmp.
description =
N_(
"Full float (Use 32 bit for all data)");
842 tmp.
description =
N_(
"Half float (Use 16 bit for all data)");
850 tmp.
description =
N_(
"Mini float (Use 8 bit where possible, otherwise use 16 bit)");
860static void rna_Fluid_domaintype_set(
PointerRNA *
ptr,
int value)
868static std::optional<std::string> rna_FluidDomainSettings_path(
const PointerRNA *
ptr)
872 char name_esc[
sizeof(md->name) * 2];
875 return fmt::format(
"modifiers[\"{}\"].domain_settings", name_esc);
878static std::optional<std::string> rna_FluidFlowSettings_path(
const PointerRNA *
ptr)
882 char name_esc[
sizeof(md->name) * 2];
885 return fmt::format(
"modifiers[\"{}\"].flow_settings", name_esc);
888static std::optional<std::string> rna_FluidEffectorSettings_path(
const PointerRNA *
ptr)
892 char name_esc[
sizeof(md->name) * 2];
895 return fmt::format(
"modifiers[\"{}\"].effector_settings", name_esc);
904static int rna_FluidModifier_grid_get_length(
const PointerRNA *
ptr,
908 float *density =
nullptr;
916 size = res[0] * res[1] * res[2];
920 else if (fds->fluid) {
922 size = fds->res[0] * fds->res[1] * fds->res[2];
926 length[0] = (density) ? size : 0;
930static int rna_FluidModifier_color_grid_get_length(
const PointerRNA *
ptr,
933 rna_FluidModifier_grid_get_length(
ptr, length);
939static int rna_FluidModifier_velocity_grid_get_length(
const PointerRNA *
ptr,
950 size = 3 * fds->res[0] * fds->res[1] * fds->res[2];
956 length[0] = (vx && vy && vz) ? size : 0;
960static int rna_FluidModifier_heat_grid_get_length(
const PointerRNA *
ptr,
964 float *heat =
nullptr;
969 size = fds->res[0] * fds->res[1] * fds->res[2];
973 length[0] = (heat) ? size : 0;
977static void rna_FluidModifier_density_grid_get(
PointerRNA *
ptr,
float *values)
981 int size = rna_FluidModifier_grid_get_length(
ptr, length);
993 memcpy(values, density, size *
sizeof(
float));
998static void rna_FluidModifier_velocity_grid_get(
PointerRNA *
ptr,
float *values)
1002 int size = rna_FluidModifier_velocity_grid_get_length(
ptr, length);
1003 float *vx, *vy, *vz;
1012 for (i = 0; i <
size; i += 3) {
1013 *(values++) = *(vx++);
1014 *(values++) = *(vy++);
1015 *(values++) = *(vz++);
1021static void rna_FluidModifier_color_grid_get(
PointerRNA *
ptr,
float *values)
1025 int size = rna_FluidModifier_grid_get_length(
ptr, length);
1030 memset(values, 0, size *
sizeof(
float));
1054static void rna_FluidModifier_flame_grid_get(
PointerRNA *
ptr,
float *values)
1058 int size = rna_FluidModifier_grid_get_length(
ptr, length);
1071 memcpy(values, flame, size *
sizeof(
float));
1074 memset(values, 0, size *
sizeof(
float));
1080static void rna_FluidModifier_heat_grid_get(
PointerRNA *
ptr,
float *values)
1084 int size = rna_FluidModifier_heat_grid_get_length(
ptr, length);
1091 if (heat !=
nullptr) {
1093 for (
int i = 0; i <
size; i++) {
1094 values[i] = heat[i] * 0.5f;
1098 memset(values, 0, size *
sizeof(
float));
1104static void rna_FluidModifier_temperature_grid_get(
PointerRNA *
ptr,
float *values)
1108 int size = rna_FluidModifier_grid_get_length(
ptr, length);
1122 float offset = fds->flame_ignition;
1123 float scale = fds->flame_max_temp - fds->flame_ignition;
1125 for (
int i = 0; i <
size; i++) {
1126 values[i] = (flame[i] > 0.01f) ? offset + flame[i] * scale : 0.0f;
1130 memset(values, 0, size *
sizeof(
float));
1139static void rna_FluidFlow_density_vgroup_get(
PointerRNA *
ptr,
char *value)
1145static int rna_FluidFlow_density_vgroup_length(
PointerRNA *
ptr)
1151static void rna_FluidFlow_density_vgroup_set(
PointerRNA *
ptr,
const char *value)
1157static void rna_FluidFlow_uvlayer_set(
PointerRNA *
ptr,
const char *value)
1163static void rna_Fluid_use_color_ramp_set(
PointerRNA *
ptr,
bool value)
1167 fds->use_coba = value;
1169 if (value && fds->coba ==
nullptr) {
1174static void rna_Fluid_flowsource_set(
PointerRNA *
ptr,
int value)
1178 if (value != settings->source) {
1179 settings->source = value;
1196 tmp.
icon = ICON_META_CUBE;
1198 tmp.
description =
N_(
"Emit fluid from mesh surface or volume");
1204 tmp.
icon = ICON_PARTICLES;
1205 tmp.
name =
N_(
"Particle System");
1216static void rna_Fluid_flowtype_set(
PointerRNA *
ptr,
int value)
1220 if (value != settings->type) {
1221 short prev_value = settings->type;
1222 settings->type = value;
1228 settings->surface_distance = 0.0f;
1233 settings->surface_distance = 1.5f;
1248 {0,
nullptr, 0,
nullptr,
nullptr}};
1252# ifdef WITH_OPENVDB_BLOSC
1257 "Multithreaded compression, similar in size and quality as 'Zip'"},
1260 {0,
nullptr, 0,
nullptr,
nullptr}};
1266 {0,
nullptr, 0,
nullptr,
nullptr},
1275 "Bake every stage of the simulation separately"},
1277 {0,
nullptr, 0,
nullptr,
nullptr}};
1281 {0,
"NONE", 0,
"",
""},
1282 {0,
nullptr, 0,
nullptr,
nullptr},
1290 "Use improved particle level set (slower but more precise and with mesh smoothening "
1296 "Use union particle level set (faster but lower quality)"},
1297 {0,
nullptr, 0,
nullptr,
nullptr},
1305 "Use a fluid domain for guiding (domain needs to be baked already so that velocities can "
1306 "be extracted). Guiding domain can be of any type (i.e. gas or liquid)."},
1311 "Use guiding (effector) objects to create fluid guiding (guiding objects should be "
1312 "animated and baked once set up completely)"},
1313 {0,
nullptr, 0,
nullptr,
nullptr},
1318 {0,
"NONE", 0,
"",
""},
1319 {0,
nullptr, 0,
nullptr,
nullptr},
1328 "Smoothed high quality interpolation, but slower"},
1330 {0,
nullptr, 0,
nullptr,
nullptr},
1338 "Adjust slice direction according to the view direction"},
1342 {0,
nullptr, 0,
nullptr,
nullptr},
1348 {
VECTOR_DRAW_MAC,
"MAC", 0,
"MAC Grid",
"Display vector field as MAC grid"},
1349 {0,
nullptr, 0,
nullptr,
nullptr},
1357 "Velocity field of the fluid domain"},
1362 "Guide velocity field of the fluid domain"},
1364 {0,
nullptr, 0,
nullptr,
nullptr},
1374 "Highlight the voxels with values of the color mapped field within the range"},
1375 {0,
nullptr, 0,
nullptr,
nullptr},
1385 "Highlight only the cells of type Obstacle"},
1392 "Highlight only the cells of type Outflow"},
1393 {0,
nullptr, 0,
nullptr,
nullptr},
1401 "Delete secondary particles that are inside obstacles or left the domain"},
1406 "Push secondary particles that left the domain back into the domain"},
1407 {0,
nullptr, 0,
nullptr,
nullptr}};
1414 "Create a separate particle system for every secondary particle type"},
1419 "Spray and foam particles are saved in the same particle system"},
1424 "Spray and bubble particles are saved in the same particle system"},
1429 "Foam and bubbles particles are saved in the same particle system"},
1431 "SPRAY_FOAM_BUBBLES",
1433 "Spray + Foam + Bubbles",
1434 "Create one particle system that contains all three secondary particle types"},
1435 {0,
nullptr, 0,
nullptr,
nullptr}};
1442 "Use FLIP as the simulation method (more splashy behavior)"},
1447 "Use APIC as the simulation method (more energetic and stable behavior)"},
1448 {0,
nullptr, 0,
nullptr,
nullptr},
1535 prop,
"Temperature Grid",
"Smoke temperature grid, range 0 to 1 represents 0 to 1000K");
1556 "domain_resolution",
1575 prop,
"Margin",
"Margin added around fluid to minimize boundary interference");
1584 "Minimum amount of fluid a cell can contain before it is considered empty");
1590 prop,
"Adaptive Domain",
"Adapt simulation resolution and size to fluid");
1602 "Maximum Resolution",
1603 "Resolution used for the fluid domain. Value corresponds to the longest domain side "
1604 "(resolution for other domain sides is calculated automatically).");
1667 "Buoyant force based on smoke density (higher value results in faster rising smoke)");
1677 "Buoyant force based on smoke heat (higher value results in faster rising smoke)");
1687 "Determine how quickly the smoke dissolves (lower value makes smoke disappear faster)");
1710 "Logarithmic Dissolve",
1711 "Dissolve smoke in a logarithmic fashion. Dissolves quickly at first, but lingers longer.");
1720 prop,
"Speed",
"Speed of the burning reaction (higher value results in smaller flames)");
1741 "Minimum temperature of the flames (higher value results in faster rising flames)");
1750 "Maximum temperature of the flames (higher value results in faster rising flames)");
1771 prop,
"Scale",
"Scale of noise (higher value results in larger vortices)");
1786 "The noise simulation is scaled up by this factor (compared to the "
1787 "base resolution of the domain)");
1811 "PIC/FLIP Ratio. A value of 1.0 will result in a completely FLIP based simulation. Use a "
1812 "lower value for simulations which should produce smaller splashes.");
1823 prop,
"Number",
"Particle number factor (higher value results in more particles)");
1832 "Minimum number of particles per cell (ensures that each cell has at "
1833 "least this amount of particles)");
1841 "Maximum number of particles per cell (ensures that each cell has at "
1842 "most this amount of particles)");
1849 "Particle radius factor. Increase this value if the simulation appears "
1850 "to leak volume, decrease it if the simulation seems to gain volume.");
1858 "Particle (narrow) band width (higher value results in thicker band and more particles)");
1871 "Fractional Obstacles",
1872 "Fractional obstacles improve and smoothen the fluid-obstacle boundary");
1880 "Obstacle Threshold",
1881 "Determines how much fluid is allowed in an obstacle cell "
1882 "(higher values will tag a boundary cell as an obstacle easier "
1883 "and reduce the boundary smoothening effect)");
1890 "Obstacle Distance",
1891 "Determines how far apart fluid and obstacle are (higher values will "
1892 "result in fluid being further away from obstacles, smaller values "
1893 "will let fluid move towards the inside of obstacles)");
1902 "Maximum number of fluid particles that are allowed in this simulation");
1910 prop,
"Use Viscosity",
"Simulate fluids with high viscosity using a special solver");
1918 "Viscosity of liquid (higher values result in more viscous fluids, a "
1919 "value of 0 will still apply some viscosity)");
1927 prop,
"Use Diffusion",
"Enable fluid diffusion settings (e.g. viscosity, surface tension)");
1936 "Surface tension of liquid (higher value results in greater hydrophobic behavior)");
1945 "Viscosity setting: value that is multiplied by 10 to the power of (exponent*-1)");
1953 "Viscosity Exponent",
1954 "Negative exponent for the viscosity value (to simplify entering small values "
1965 "Upper mesh concavity bound (high values tend to smoothen and fill out concave regions)");
1973 "Lower mesh concavity bound (high values tend to smoothen and fill out concave regions)");
1992 "The mesh simulation is scaled up by this factor (compared to the base "
1993 "resolution of the domain). For best meshing, it is recommended to "
1994 "adjust the mesh particle radius alongside this value.");
2014 "Caches velocities of mesh vertices. These will be used "
2015 "(automatically) when rendering with motion blur enabled.");
2023 "Particle radius factor (higher value results in larger (meshed) "
2024 "particles). Needs to be adjusted after changing the mesh scale.");
2034 "Minimum Wave Crest Potential",
2035 "Lower clamping threshold for marking fluid cells as wave crests "
2036 "(lower value results in more marked cells)");
2044 "Maximum Wave Crest Potential",
2045 "Upper clamping threshold for marking fluid cells as wave crests "
2046 "(higher value results in less marked cells)");
2054 "Minimum Trapped Air Potential",
2055 "Lower clamping threshold for marking fluid cells where air is trapped "
2056 "(lower value results in more marked cells)");
2064 "Maximum Trapped Air Potential",
2065 "Upper clamping threshold for marking fluid cells where air is trapped "
2066 "(higher value results in less marked cells)");
2075 "Minimum Kinetic Energy Potential",
2076 "Lower clamping threshold that indicates the fluid speed where cells start to emit "
2077 "particles (lower values result in generally more particles)");
2086 "Maximum Kinetic Energy Potential",
2087 "Upper clamping threshold that indicates the fluid speed where cells no longer emit more "
2088 "particles (higher value results in generally less particles)");
2096 "Wave Crest Sampling",
2097 "Maximum number of particles generated per wave crest cell per frame");
2105 "Trapped Air Sampling",
2106 "Maximum number of particles generated per trapped air cell per frame");
2115 "Amount of buoyancy force that rises bubbles (high value results in "
2116 "bubble movement mainly upwards)");
2125 "Amount of drag force that moves bubbles along with the fluid (high "
2126 "value results in bubble movement mainly along with the fluid)");
2147 prop,
"Particles in Boundary",
"How particles that left the domain are treated");
2156 "Determines which particle systems are created from secondary particles");
2165 "Radius to compute potential for each cell (higher values are slower "
2166 "but create smoother potential grids)");
2175 "Radius to compute position update for each particle (higher values "
2176 "are slower but particles move less chaotic)");
2185 "The particle simulation is scaled up by this factor (compared to the "
2186 "base resolution of the domain)");
2234 "Guiding velocity factor (higher value results in greater guiding velocities)");
2250 "Use velocities from this object for the guiding effect (object needs "
2251 "to have fluid modifier and be of type domain))");
2267 prop,
"Start",
"Frame on which the simulation starts (first frame baked)");
2283 "Frame offset that is used when loading the simulation from the cache. It is not considered "
2284 "when baking the simulation, only when loading it.");
2306 prop,
nullptr,
"rna_Fluid_cachetype_mesh_set",
"rna_Fluid_cachetype_mesh_itemf");
2308 prop,
"File Format",
"Select the file format to be used for caching surface data");
2316 prop,
nullptr,
"rna_Fluid_cachetype_data_set",
"rna_Fluid_cachetype_volume_itemf");
2318 prop,
"File Format",
"Select the file format to be used for caching volumetric data");
2326 prop,
nullptr,
"rna_Fluid_cachetype_particle_set",
"rna_Fluid_cachetype_particle_itemf");
2328 prop,
"File Format",
"Select the file format to be used for caching particle data");
2336 prop,
nullptr,
"rna_Fluid_cachetype_noise_set",
"rna_Fluid_cachetype_volume_itemf");
2338 prop,
"File Format",
"Select the file format to be used for caching noise data");
2355 "Additional data will be saved so that the bake jobs can be resumed after pausing. Because "
2356 "more data will be written to disk it is recommended to avoid enabling this option when "
2357 "baking at high resolutions.");
2421 "Export Mantaflow Script",
2422 "Generate and export Mantaflow script from current domain settings during bake. This is "
2423 "only needed if you plan to analyze the cache (e.g. view grids, velocity vectors, "
2424 "particles) in Mantaflow directly (outside of Blender) after baking the simulation.");
2441 "Bit depth for fluid particles and grids (lower bit values reduce file size)");
2456 "Use Adaptive Time Steps",
2457 "Lets the solver automatically decide when to perform multiple simulation steps per frame");
2465 "Maximal velocity per cell (greater CFL numbers will minimize the "
2466 "number of simulation steps and the computation time.)");
2474 prop,
"Minimum",
"Minimum number of simulation steps to perform for one frame");
2482 prop,
"Maximum",
"Maximum number of simulation steps to perform for one frame");
2503 prop,
"Slice Per Voxel",
"How many slices per voxel should be generated");
2524 prop,
"Interpolation",
"Interpolation method to use for smoke/fire volumes in solid mode");
2583 "Render a simulation field while mapping its voxels values to the "
2584 "colors of a ramp or using a predefined color code");
2589 {0,
"NONE", 0,
"",
""},
2590 {0,
nullptr, 0,
nullptr,
nullptr},
2605 prop,
"Scale",
"Multiplier for scaling the selected field to color map");
2621 "Value under which voxels are considered empty space to optimize rendering");
2628 prop,
"Color Gridlines",
"Simulation field to color map onto gridlines");
2674 {0,
nullptr, 0,
nullptr,
nullptr},
2684 "Only use given geometry for fluid"},
2685 {0,
nullptr, 0,
nullptr,
nullptr},
2690 {0,
"NONE", 0,
"",
""},
2691 {0,
nullptr, 0,
nullptr,
nullptr},
2699 "Generated coordinates centered to flow object"},
2701 {0,
nullptr, 0,
nullptr,
nullptr},
2733 prop,
"Temperature Difference",
"Temperature difference to ambient temperature");
2760 prop,
nullptr,
"rna_Fluid_flowsource_set",
"rna_Fluid_flowsource_itemf");
2768 "Only allow given density value in emitter area and will not add up");
2774 prop,
"Initial Velocity",
"Fluid has some initial velocity when it is emitted");
2783 "Multiplier of source velocity passed to fluid (source velocity is "
2784 "non-zero only if object is moving)");
2808 "Additional initial velocity in X, Y and Z direction (added to source velocity)");
2816 "Controls fluid emission from within the mesh (higher value results in "
2817 "greater emissions from inside the mesh)");
2825 "Controls fluid emission from the mesh surface (higher value results "
2826 "in emission further away from the mesh surface");
2834 "Treat this object as a planar and unclosed mesh. Fluid will only be emitted from the mesh "
2835 "surface and based on the surface emission value.");
2847 prop,
"Set Size",
"Set particle size in simulation cells or use nearest cell");
2860 "Number of additional samples to take between frames to improve "
2861 "quality of fast moving flows");
2866 "rna_FluidFlow_density_vgroup_get",
2867 "rna_FluidFlow_density_vgroup_length",
2868 "rna_FluidFlow_density_vgroup_set");
2870 prop,
"Vertex Group",
"Name of vertex group which determines surface emission rate");
2914 {0,
nullptr, 0,
nullptr,
nullptr},
2922 "Compare velocities from previous frame with new velocities from current frame and keep "
2928 "Compare velocities from previous frame with new velocities from current frame and keep "
2934 "Always write new guide velocities for every frame (each frame only contains current "
2935 "velocities from guiding objects)"},
2940 "Take average of velocities from previous frame and new velocities from current frame"},
2941 {0,
nullptr, 0,
nullptr,
nullptr},
2962 prop,
"Surface",
"Additional distance around mesh surface to consider as effector");
2992 "Number of additional samples to take between frames to improve "
2993 "quality of fast moving effector objects");
ColorBand * BKE_colorband_add(bool rangetype)
void BKE_fluid_modifier_reset(struct FluidModifierData *fmd)
void BKE_fluid_particle_system_destroy(struct Object *ob, int particle_type)
void BKE_fluid_cache_endframe_set(struct FluidDomainSettings *settings, int value)
void BKE_fluid_domain_type_set(struct Object *object, struct FluidDomainSettings *settings, int type)
void BKE_fluid_cache_startframe_set(struct FluidDomainSettings *settings, int value)
void BKE_fluid_cachetype_noise_set(struct FluidDomainSettings *settings, int cache_noise_format)
void BKE_fluid_particle_system_create(struct Main *bmain, struct Object *ob, const char *pset_name, const char *parts_name, const char *psys_name, int psys_type)
void BKE_fluid_cachetype_particle_set(struct FluidDomainSettings *settings, int cache_particle_format)
void BKE_fluid_fields_sanitize(struct FluidDomainSettings *settings)
void BKE_fluid_cachetype_mesh_set(struct FluidDomainSettings *settings, int cache_mesh_format)
void BKE_fluid_cachetype_data_set(struct FluidDomainSettings *settings, int cache_data_format)
void BKE_fluid_cache_free(struct FluidDomainSettings *fds, struct Object *ob, int cache_map)
ModifierData * BKE_modifiers_findby_type(const Object *ob, ModifierType type)
MINLINE void copy_v3_v3_int(int r[3], const int a[3])
#define STRNCPY(dst, src)
size_t BLI_str_escape(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
pthread_rwlock_t ThreadRWMutex
void BLI_rw_mutex_lock(ThreadRWMutex *mutex, int mode)
void BLI_rw_mutex_unlock(ThreadRWMutex *mutex)
#define BLT_I18NCONTEXT_AMOUNT
#define BLT_I18NCONTEXT_ID_TEXTURE
void DEG_id_tag_update(ID *id, unsigned int flags)
void DEG_relations_tag_update(Main *bmain)
@ FLUID_DOMAIN_PARTICLE_SPRAY
@ FLUID_DOMAIN_PARTICLE_FOAM
@ FLUID_DOMAIN_PARTICLE_TRACER
@ FLUID_DOMAIN_PARTICLE_FLIP
@ FLUID_DOMAIN_PARTICLE_BUBBLE
@ FLUID_CELL_TYPE_OUTFLOW
@ FLUID_CELL_TYPE_OBSTACLE
@ FLUID_DOMAIN_FIELD_COLOR_B
@ FLUID_DOMAIN_FIELD_FLAME
@ FLUID_DOMAIN_FIELD_PHI_OUT
@ FLUID_DOMAIN_FIELD_FORCE_Z
@ FLUID_DOMAIN_FIELD_PHI_OBSTACLE
@ FLUID_DOMAIN_FIELD_FLAGS
@ FLUID_DOMAIN_FIELD_VELOCITY_Z
@ FLUID_DOMAIN_FIELD_FORCE_Y
@ FLUID_DOMAIN_FIELD_PRESSURE
@ FLUID_DOMAIN_FIELD_VELOCITY_X
@ FLUID_DOMAIN_FIELD_DENSITY
@ FLUID_DOMAIN_FIELD_VELOCITY_Y
@ FLUID_DOMAIN_FIELD_PHI_IN
@ FLUID_DOMAIN_FIELD_HEAT
@ FLUID_DOMAIN_FIELD_COLOR_G
@ FLUID_DOMAIN_FIELD_FORCE_X
@ FLUID_DOMAIN_FIELD_FUEL
@ FLUID_DOMAIN_FIELD_COLOR_R
@ FLUID_DOMAIN_TYPE_LIQUID
@ FLUID_DOMAIN_METHOD_FLIP
@ FLUID_DOMAIN_METHOD_APIC
@ FLUID_EFFECTOR_NEEDS_UPDATE
@ FLUID_EFFECTOR_USE_EFFEC
@ FLUID_EFFECTOR_USE_PLANE_INIT
@ FLUID_DOMAIN_GUIDE_SRC_EFFECTOR
@ FLUID_DOMAIN_GUIDE_SRC_DOMAIN
@ SNDPARTICLE_COMBINED_EXPORT_OFF
@ SNDPARTICLE_COMBINED_EXPORT_SPRAY_FOAM
@ SNDPARTICLE_COMBINED_EXPORT_SPRAY_BUBBLE
@ SNDPARTICLE_COMBINED_EXPORT_SPRAY_FOAM_BUBBLE
@ SNDPARTICLE_COMBINED_EXPORT_FOAM_BUBBLE
@ FLUID_DOMAIN_BAKED_DATA
@ FLUID_DOMAIN_OUTDATED_GUIDE
@ FLUID_DOMAIN_OUTDATED_PARTICLES
@ FLUID_DOMAIN_BAKING_MESH
@ FLUID_DOMAIN_BAKING_NOISE
@ FLUID_DOMAIN_BAKING_GUIDE
@ FLUID_DOMAIN_OUTDATED_NOISE
@ FLUID_DOMAIN_BAKED_NOISE
@ FLUID_DOMAIN_BAKED_MESH
@ FLUID_DOMAIN_OUTDATED_MESH
@ FLUID_DOMAIN_BAKING_DATA
@ FLUID_DOMAIN_BAKED_GUIDE
@ FLUID_DOMAIN_BAKED_PARTICLES
@ FLUID_DOMAIN_OUTDATED_DATA
@ FLUID_DOMAIN_BAKING_PARTICLES
@ FLUID_DISPLAY_INTERP_CLOSEST
@ FLUID_DISPLAY_INTERP_CUBIC
@ FLUID_DISPLAY_INTERP_LINEAR
@ FLUID_DOMAIN_FILE_BIN_OBJECT
@ FLUID_DOMAIN_FILE_OBJECT
@ FLUID_DOMAIN_FILE_OPENVDB
@ VDB_PRECISION_MINI_FLOAT
@ VDB_PRECISION_FULL_FLOAT
@ VDB_PRECISION_HALF_FLOAT
@ FLUID_EFFECTOR_GUIDE_MAX
@ FLUID_EFFECTOR_GUIDE_OVERRIDE
@ FLUID_EFFECTOR_GUIDE_AVERAGED
@ FLUID_EFFECTOR_GUIDE_MIN
@ FLUID_DOMAIN_CACHE_REPLAY
@ FLUID_DOMAIN_CACHE_MODULAR
@ FLUID_FLOW_USE_PART_SIZE
@ FLUID_FLOW_NEEDS_UPDATE
@ FLUID_FLOW_USE_PLANE_INIT
@ FLUID_FLOW_INITVELOCITY
@ FLUID_FLOW_SOURCE_PARTICLES
@ FLUID_DOMAIN_USE_ADAPTIVE_DOMAIN
@ FLUID_DOMAIN_DELETE_IN_OBSTACLE
@ FLUID_DOMAIN_USE_RESUMABLE_CACHE
@ FLUID_DOMAIN_USE_DISSOLVE_LOG
@ FLUID_DOMAIN_USE_DIFFUSION
@ FLUID_DOMAIN_USE_ADAPTIVE_TIME
@ FLUID_DOMAIN_EXPORT_MANTA_SCRIPT
@ FLUID_DOMAIN_USE_VISCOSITY
@ FLUID_DOMAIN_USE_SPEED_VECTORS
@ FLUID_DOMAIN_USE_FRACTIONS
@ FLUID_DOMAIN_USE_DISSOLVE
@ FLUID_FLOW_TEXTURE_MAP_UV
@ FLUID_FLOW_TEXTURE_MAP_AUTO
@ SNDPARTICLE_BOUNDARY_DELETE
@ SNDPARTICLE_BOUNDARY_PUSHOUT
@ FLUID_FLOW_TYPE_SMOKEFIRE
@ FLUID_GRIDLINE_COLOR_TYPE_FLAGS
@ FLUID_GRIDLINE_COLOR_TYPE_RANGE
@ FLUID_GRIDLINE_COLOR_TYPE_NONE
@ FLUID_EFFECTOR_TYPE_GUIDE
@ FLUID_EFFECTOR_TYPE_COLLISION
@ FLUID_DOMAIN_MESH_UNION
@ FLUID_DOMAIN_MESH_IMPROVED
@ FLUID_DOMAIN_BORDER_BOTTOM
@ FLUID_DOMAIN_BORDER_LEFT
@ FLUID_DOMAIN_BORDER_RIGHT
@ FLUID_DOMAIN_BORDER_FRONT
@ FLUID_DOMAIN_BORDER_TOP
@ FLUID_DOMAIN_BORDER_BACK
@ FLUID_DOMAIN_VECTOR_FIELD_FORCE
@ FLUID_DOMAIN_VECTOR_FIELD_VELOCITY
@ FLUID_DOMAIN_VECTOR_FIELD_GUIDE_VELOCITY
#define FLUID_DOMAIN_BAKED_ALL
@ FLUID_FLOW_BEHAVIOR_GEOMETRY
@ FLUID_FLOW_BEHAVIOR_OUTFLOW
@ FLUID_FLOW_BEHAVIOR_INFLOW
#define FLUID_DOMAIN_BAKING_ALL
Object is a sort of wrapper for general info.
@ PART_FLUID_SPRAYFOAMBUBBLE
#define RNA_MAX_ARRAY_DIMENSION
@ PROPOVERRIDE_OVERRIDABLE_LIBRARY
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
float * manta_noise_get_density(struct MANTA *smoke)
bool manta_noise_has_colors(struct MANTA *smoke)
void manta_noise_get_rgba(struct MANTA *smoke, float *data, int sequential)
void manta_noise_get_res(struct MANTA *smoke, int *res)
float * manta_get_velocity_y(struct MANTA *fluid)
float * manta_smoke_get_density(struct MANTA *smoke)
float * manta_get_velocity_z(struct MANTA *fluid)
bool manta_smoke_has_colors(struct MANTA *smoke)
float * manta_get_velocity_x(struct MANTA *fluid)
void manta_noise_get_rgba_fixed_color(struct MANTA *smoke, float color[3], float *data, int sequential)
float * manta_smoke_get_heat(struct MANTA *smoke)
void manta_smoke_get_rgba(struct MANTA *smoke, float *data, int sequential)
float * manta_smoke_get_flame(struct MANTA *smoke)
float * manta_noise_get_flame(struct MANTA *smoke)
void manta_smoke_get_rgba_fixed_color(struct MANTA *smoke, float color[3], float *data, int sequential)
void RNA_def_property_pointer_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_struct_path_func(StructRNA *srna, const char *path)
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t bit)
void RNA_def_property_string_funcs(PropertyRNA *prop, const char *get, const char *length, const char *set)
void RNA_def_property_float_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
void RNA_def_property_string_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description)
void RNA_def_property_boolean_funcs(PropertyRNA *prop, const char *get, const char *set)
void RNA_def_property_dynamic_array_funcs(PropertyRNA *prop, const char *getlength)
void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
void RNA_def_struct_sdna(StructRNA *srna, const char *structname)
void RNA_def_property_array(PropertyRNA *prop, int length)
void RNA_def_property_range(PropertyRNA *prop, double min, double max)
void RNA_def_property_string_maxlength(PropertyRNA *prop, int maxlength)
void RNA_def_property_struct_type(PropertyRNA *prop, const char *type)
void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *func)
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
void RNA_def_property_enum_funcs(PropertyRNA *prop, const char *get, const char *set, const char *item)
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
void RNA_enum_item_end(EnumPropertyItem **items, int *totitem)
void RNA_def_property_clear_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_pointer_funcs(PropertyRNA *prop, const char *get, const char *set, const char *type_fn, const char *poll)
void RNA_def_property_enum_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_enum_item_add(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item)
void RNA_def_property_int_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
void RNA_def_property_translation_context(PropertyRNA *prop, const char *context)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_float_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_ui_range(PropertyRNA *prop, double min, double max, double step, int precision)
void RNA_def_property_int_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_override_flag(PropertyRNA *prop, PropertyOverrideFlag flag)
static void rna_def_fluid_domain_settings(BlenderRNA *brna)
void RNA_def_fluid(BlenderRNA *brna)
static void rna_def_fluid_flow_settings(BlenderRNA *brna)
static void rna_def_fluid_effector_settings(BlenderRNA *brna)
int rna_object_vgroup_name_index_length(PointerRNA *ptr, int index)
void rna_object_uvlayer_name_set(PointerRNA *ptr, const char *value, char *result, int result_maxncpy)
void rna_object_vgroup_name_index_set(PointerRNA *ptr, const char *value, short *index)
void rna_object_vgroup_name_index_get(PointerRNA *ptr, char *value, int index)
char sndparticle_combined_export
struct FluidDomainSettings * domain
struct ParticleSystem * next
void WM_main_add_notifier(uint type, void *reference)