31# include <fmt/format.h>
58 rna_Fluid_update(bmain, scene,
ptr);
66 if (settings->fmd && settings->fmd->domain) {
84 if (settings->fmd && settings->fmd->domain) {
96 if (settings->fmd && settings->fmd->domain) {
108 if (settings->fmd && settings->fmd->domain) {
120 if (settings->fmd && settings->fmd->domain) {
138 rna_Fluid_update(bmain, scene,
ptr);
148 rna_Fluid_update(bmain, scene,
ptr);
158 rna_Fluid_datacache_reset(bmain, scene,
ptr);
159 rna_Fluid_update(bmain, scene,
ptr);
169 rna_Fluid_noisecache_reset(bmain, scene,
ptr);
170 rna_Fluid_update(bmain, scene,
ptr);
180 rna_Fluid_meshcache_reset(bmain, scene,
ptr);
181 rna_Fluid_update(bmain, scene,
ptr);
191 rna_Fluid_particlescache_reset(bmain, scene,
ptr);
192 rna_Fluid_update(bmain, scene,
ptr);
202 rna_Fluid_dependency_update(bmain, scene,
ptr);
205static void rna_Fluid_parts_create(
Main *bmain,
207 const char *pset_name,
208 const char *parts_name,
209 const char *psys_name,
213 UNUSED_VARS(bmain,
ptr, pset_name, parts_name, psys_name, psys_type);
236static bool rna_Fluid_parts_exists(
PointerRNA *
ptr,
int ptype)
241 for (psys =
static_cast<ParticleSystem *
>(ob->particlesystem.first); psys; psys = psys->
next) {
261 rna_Fluid_domain_data_reset(bmain, scene,
ptr);
265 if (ob->type ==
OB_MESH && !exists) {
266 rna_Fluid_parts_create(
267 bmain,
ptr,
"LiquidParticleSettings",
"Liquid",
"Liquid Particle System",
PART_FLUID_FLIP);
274 rna_Fluid_update(bmain, scene,
ptr);
284 if (ob->type ==
OB_MESH && !exists) {
285 rna_Fluid_parts_create(
302 if (ob->type ==
OB_MESH && !exists) {
303 rna_Fluid_parts_create(bmain,
305 "BubbleParticleSettings",
307 "Bubble Particle System",
324 if (ob->type ==
OB_MESH && !exists) {
325 rna_Fluid_parts_create(
342 if (ob->type ==
OB_MESH && !exists) {
343 rna_Fluid_parts_create(bmain,
345 "TracerParticleSettings",
347 "Tracer Particle System",
375 rna_Fluid_spray_parts_update(bmain, scene,
ptr);
378 rna_Fluid_foam_parts_update(bmain, scene,
ptr);
381 rna_Fluid_bubble_parts_update(bmain, scene,
ptr);
387 rna_Fluid_parts_create(bmain,
389 "SprayFoamParticleSettings",
391 "Spray + Foam Particle System",
406 rna_Fluid_bubble_parts_update(bmain, scene,
ptr);
413 rna_Fluid_parts_create(bmain,
415 "SprayBubbleParticleSettings",
417 "Spray + Bubble Particle System",
432 rna_Fluid_foam_parts_update(bmain, scene,
ptr);
439 rna_Fluid_parts_create(bmain,
441 "FoamBubbleParticleSettings",
442 "Foam + Bubble Particles",
443 "Foam + Bubble Particle System",
458 rna_Fluid_spray_parts_update(bmain, scene,
ptr);
467 rna_Fluid_parts_create(bmain,
469 "SprayFoamBubbleParticleSettings",
470 "Spray + Foam + Bubbles",
471 "Spray + Foam + Bubble Particle System",
488 printf(
"ERROR: Unexpected combined export setting encountered!");
492static void rna_Fluid_cache_startframe_set(
PointerRNA *
ptr,
int value)
498static void rna_Fluid_cache_endframe_set(
PointerRNA *
ptr,
int value)
504static void rna_Fluid_cachetype_mesh_set(
PointerRNA *
ptr,
int value)
510static void rna_Fluid_cachetype_data_set(
PointerRNA *
ptr,
int value)
516static void rna_Fluid_cachetype_particle_set(
PointerRNA *
ptr,
int value)
522static void rna_Fluid_cachetype_noise_set(
PointerRNA *
ptr,
int value)
528static void rna_Fluid_cachetype_set(
PointerRNA *
ptr,
int value)
532 if (value != settings->cache_type) {
533 settings->cache_type = value;
534 settings->cache_flag = 0;
545 if (par !=
nullptr) {
547 if (fmd_par && fmd_par->
domain) {
548 fds->guide_parent =
static_cast<Object *
>(value.data);
553 fds->guide_parent =
nullptr;
568 tmp.
name =
N_(
"Binary Object");
569 tmp.
description =
N_(
"Binary object file format (.bobj.gz)");
595 tmp.
name =
N_(
"Uni Cache");
613 tmp.identifier =
"RAW";
614 tmp.name =
N_(
"Raw Cache");
615 tmp.description =
N_(
"Raw file format (.raw)");
636 tmp.
name =
N_(
"Uni Cache");
646static void rna_Fluid_cache_directory_set(
PointerRNA *
ptr,
const char *value)
650 if (
STREQ(settings->cache_directory, value)) {
654 STRNCPY(settings->cache_directory, value);
682 tmp.
name =
N_(
"Pressure");
689 tmp.
name =
N_(
"X Velocity");
696 tmp.
name =
N_(
"Y Velocity");
703 tmp.
name =
N_(
"Z Velocity");
782 tmp.
name =
N_(
"Fluid Level Set");
783 tmp.
description =
N_(
"Level set representation of the fluid");
789 tmp.
name =
N_(
"Inflow Level Set");
790 tmp.
description =
N_(
"Level set representation of the inflow");
796 tmp.
name =
N_(
"Outflow Level Set");
797 tmp.
description =
N_(
"Level set representation of the outflow");
803 tmp.
name =
N_(
"Obstacle Level Set");
804 tmp.
description =
N_(
"Level set representation of the obstacles");
829 tmp.
description =
N_(
"Use 32-bit floating-point numbers for all data");
836 tmp.
description =
N_(
"Use 16-bit floating-point numbers for all data");
844 tmp.
description =
N_(
"Use 8-bit floating-point numbers where possible, otherwise use 16-bit");
854static void rna_Fluid_domaintype_set(
PointerRNA *
ptr,
int value)
862static std::optional<std::string> rna_FluidDomainSettings_path(
const PointerRNA *
ptr)
866 char name_esc[
sizeof(md->name) * 2];
869 return fmt::format(
"modifiers[\"{}\"].domain_settings", name_esc);
872static std::optional<std::string> rna_FluidFlowSettings_path(
const PointerRNA *
ptr)
876 char name_esc[
sizeof(md->name) * 2];
879 return fmt::format(
"modifiers[\"{}\"].flow_settings", name_esc);
882static std::optional<std::string> rna_FluidEffectorSettings_path(
const PointerRNA *
ptr)
886 char name_esc[
sizeof(md->name) * 2];
889 return fmt::format(
"modifiers[\"{}\"].effector_settings", name_esc);
898static int rna_FluidModifier_grid_get_length(
const PointerRNA *
ptr,
902 float *density =
nullptr;
910 size = res[0] * res[1] * res[2];
914 else if (fds->fluid) {
916 size = fds->res[0] * fds->res[1] * fds->res[2];
924static int rna_FluidModifier_color_grid_get_length(
const PointerRNA *
ptr,
927 rna_FluidModifier_grid_get_length(
ptr,
length);
933static int rna_FluidModifier_velocity_grid_get_length(
const PointerRNA *
ptr,
944 size = 3 * fds->res[0] * fds->res[1] * fds->res[2];
954static int rna_FluidModifier_heat_grid_get_length(
const PointerRNA *
ptr,
958 float *heat =
nullptr;
963 size = fds->res[0] * fds->res[1] * fds->res[2];
971static void rna_FluidModifier_density_grid_get(
PointerRNA *
ptr,
float *values)
987 memcpy(values, density,
size *
sizeof(
float));
992static void rna_FluidModifier_velocity_grid_get(
PointerRNA *
ptr,
float *values)
996 int size = rna_FluidModifier_velocity_grid_get_length(
ptr,
length);
1006 for (
i = 0;
i <
size;
i += 3) {
1007 *(values++) = *(vx++);
1008 *(values++) = *(vy++);
1009 *(values++) = *(vz++);
1015static void rna_FluidModifier_color_grid_get(
PointerRNA *
ptr,
float *values)
1024 memset(values, 0,
size *
sizeof(
float));
1048static void rna_FluidModifier_flame_grid_get(
PointerRNA *
ptr,
float *values)
1065 memcpy(values, flame,
size *
sizeof(
float));
1068 memset(values, 0,
size *
sizeof(
float));
1074static void rna_FluidModifier_heat_grid_get(
PointerRNA *
ptr,
float *values)
1078 int size = rna_FluidModifier_heat_grid_get_length(
ptr,
length);
1085 if (heat !=
nullptr) {
1087 for (
int i = 0;
i <
size;
i++) {
1088 values[
i] = heat[
i] * 0.5f;
1092 memset(values, 0,
size *
sizeof(
float));
1098static void rna_FluidModifier_temperature_grid_get(
PointerRNA *
ptr,
float *values)
1116 float offset = fds->flame_ignition;
1117 float scale = fds->flame_max_temp - fds->flame_ignition;
1119 for (
int i = 0;
i <
size;
i++) {
1120 values[
i] = (flame[
i] > 0.01f) ? offset + flame[
i] * scale : 0.0f;
1124 memset(values, 0,
size *
sizeof(
float));
1133static void rna_FluidFlow_density_vgroup_get(
PointerRNA *
ptr,
char *value)
1139static int rna_FluidFlow_density_vgroup_length(
PointerRNA *
ptr)
1145static void rna_FluidFlow_density_vgroup_set(
PointerRNA *
ptr,
const char *value)
1151static void rna_FluidFlow_uvlayer_set(
PointerRNA *
ptr,
const char *value)
1157static void rna_Fluid_use_color_ramp_set(
PointerRNA *
ptr,
bool value)
1161 fds->use_coba = value;
1163 if (value && fds->coba ==
nullptr) {
1168static void rna_Fluid_flowsource_set(
PointerRNA *
ptr,
int value)
1172 if (value != settings->source) {
1173 settings->source = value;
1190 tmp.
icon = ICON_META_CUBE;
1192 tmp.
description =
N_(
"Emit fluid from mesh surface or volume");
1198 tmp.
icon = ICON_PARTICLES;
1199 tmp.
name =
N_(
"Particle System");
1210static void rna_Fluid_flowtype_set(
PointerRNA *
ptr,
int value)
1214 if (value != settings->type) {
1215 short prev_value = settings->type;
1216 settings->type = value;
1222 settings->surface_distance = 0.0f;
1227 settings->surface_distance = 1.0f;
1242 {0,
nullptr, 0,
nullptr,
nullptr}};
1246# ifdef WITH_OPENVDB_BLOSC
1251 "Multithreaded compression, similar in size and quality as 'Zip'"},
1254 {0,
nullptr, 0,
nullptr,
nullptr}};
1260 {0,
nullptr, 0,
nullptr,
nullptr},
1269 "Bake every stage of the simulation separately"},
1271 {0,
nullptr, 0,
nullptr,
nullptr}};
1275 {0,
"NONE", 0,
"",
""},
1276 {0,
nullptr, 0,
nullptr,
nullptr},
1284 "Use improved particle level set (slower but more precise and with mesh smoothening "
1290 "Use union particle level set (faster but lower quality)"},
1291 {0,
nullptr, 0,
nullptr,
nullptr},
1299 "Use a fluid domain for guiding (domain needs to be baked already so that velocities can "
1300 "be extracted). Guiding domain can be of any type (i.e. gas or liquid)."},
1305 "Use guiding (effector) objects to create fluid guiding (guiding objects should be "
1306 "animated and baked once set up completely)"},
1307 {0,
nullptr, 0,
nullptr,
nullptr},
1315 {0,
nullptr, 0,
nullptr,
nullptr},
1324 "Smoothed high quality interpolation, but slower"},
1326 {0,
nullptr, 0,
nullptr,
nullptr},
1334 "Adjust slice direction according to the view direction"},
1338 {0,
nullptr, 0,
nullptr,
nullptr},
1344 {
VECTOR_DRAW_MAC,
"MAC", 0,
"MAC Grid",
"Display vector field as MAC grid"},
1345 {0,
nullptr, 0,
nullptr,
nullptr},
1353 "Velocity field of the fluid domain"},
1358 "Guide velocity field of the fluid domain"},
1360 {0,
nullptr, 0,
nullptr,
nullptr},
1370 "Highlight the voxels with values of the color mapped field within the range"},
1371 {0,
nullptr, 0,
nullptr,
nullptr},
1381 "Highlight only the cells of type Obstacle"},
1388 "Highlight only the cells of type Outflow"},
1389 {0,
nullptr, 0,
nullptr,
nullptr},
1397 "Delete secondary particles that are inside obstacles or left the domain"},
1402 "Push secondary particles that left the domain back into the domain"},
1403 {0,
nullptr, 0,
nullptr,
nullptr}};
1410 "Create a separate particle system for every secondary particle type"},
1415 "Spray and foam particles are saved in the same particle system"},
1420 "Spray and bubble particles are saved in the same particle system"},
1425 "Foam and bubbles particles are saved in the same particle system"},
1427 "SPRAY_FOAM_BUBBLES",
1429 "Spray + Foam + Bubbles",
1430 "Create one particle system that contains all three secondary particle types"},
1431 {0,
nullptr, 0,
nullptr,
nullptr}};
1438 "Use FLIP as the simulation method (more splashy behavior)"},
1443 "Use APIC as the simulation method (more energetic and stable behavior)"},
1444 {0,
nullptr, 0,
nullptr,
nullptr},
1531 prop,
"Temperature Grid",
"Smoke temperature grid, range 0 to 1 represents 0 to 1000K");
1552 "domain_resolution",
1571 prop,
"Margin",
"Margin added around fluid to minimize boundary interference");
1579 "Minimum amount of fluid grid values (smoke density, fuel and heat) a "
1580 "cell can contain, before it is considered empty");
1586 prop,
"Adaptive Domain",
"Adapt simulation resolution and size to fluid");
1598 "Maximum Resolution",
1599 "Resolution used for the fluid domain. Value corresponds to the longest domain side "
1600 "(resolution for other domain sides is calculated automatically).");
1663 "Buoyant force based on smoke density (higher value results in faster rising smoke)");
1673 "Buoyant force based on smoke heat (higher value results in faster rising smoke)");
1683 "Determine how quickly the smoke dissolves (lower value makes smoke disappear faster)");
1706 "Logarithmic Dissolve",
1707 "Dissolve smoke in a logarithmic fashion. Dissolves quickly at first, but lingers longer.");
1716 prop,
"Speed",
"Speed of the burning reaction (higher value results in smaller flames)");
1737 "Minimum temperature of the flames (higher value results in faster rising flames)");
1746 "Maximum temperature of the flames (higher value results in faster rising flames)");
1768 prop,
"Scale",
"Scale of noise (higher value results in larger vortices)");
1783 "The noise simulation is scaled up by this factor (compared to the "
1784 "base resolution of the domain)");
1808 "PIC/FLIP Ratio. A value of 1.0 will result in a completely FLIP based simulation. Use a "
1809 "lower value for simulations which should produce smaller splashes.");
1820 prop,
"Number",
"Particle number factor (higher value results in more particles)");
1829 "Minimum number of particles per cell (ensures that each cell has at "
1830 "least this amount of particles)");
1838 "Maximum number of particles per cell (ensures that each cell has at "
1839 "most this amount of particles)");
1846 "Particle radius factor. Increase this value if the simulation appears "
1847 "to leak volume, decrease it if the simulation seems to gain volume.");
1855 "Particle (narrow) band width (higher value results in thicker band and more particles)");
1868 "Fractional Obstacles",
1869 "Fractional obstacles improve and smoothen the fluid-obstacle boundary");
1877 "Obstacle Threshold",
1878 "Determines how much fluid is allowed in an obstacle cell "
1879 "(higher values will tag a boundary cell as an obstacle easier "
1880 "and reduce the boundary smoothening effect)");
1887 "Obstacle Distance",
1888 "Determines how far apart fluid and obstacle are (higher values will "
1889 "result in fluid being further away from obstacles, smaller values "
1890 "will let fluid move towards the inside of obstacles)");
1899 "Maximum number of fluid particles that are allowed in this simulation");
1907 prop,
"Use Viscosity",
"Simulate fluids with high viscosity using a special solver");
1915 "Viscosity of liquid (higher values result in more viscous fluids, a "
1916 "value of 0 will still apply some viscosity)");
1925 prop,
"Use Diffusion",
"Enable fluid diffusion settings (e.g. viscosity, surface tension)");
1934 "Surface tension of liquid (higher value results in greater hydrophobic behavior)");
1943 "Viscosity setting: value that is multiplied by 10 to the power of (exponent*-1)");
1951 "Viscosity Exponent",
1952 "Negative exponent for the viscosity value (to simplify entering small values "
1963 "Upper mesh concavity bound (high values tend to smoothen and fill out concave regions)");
1971 "Lower mesh concavity bound (high values tend to smoothen and fill out concave regions)");
1990 "The mesh simulation is scaled up by this factor (compared to the base "
1991 "resolution of the domain). For best meshing, it is recommended to "
1992 "adjust the mesh particle radius alongside this value.");
2012 "Caches velocities of mesh vertices. These will be used "
2013 "(automatically) when rendering with motion blur enabled.");
2021 "Particle radius factor (higher value results in larger (meshed) "
2022 "particles). Needs to be adjusted after changing the mesh scale.");
2032 "Minimum Wave Crest Potential",
2033 "Lower clamping threshold for marking fluid cells as wave crests "
2034 "(lower value results in more marked cells)");
2042 "Maximum Wave Crest Potential",
2043 "Upper clamping threshold for marking fluid cells as wave crests "
2044 "(higher value results in less marked cells)");
2052 "Minimum Trapped Air Potential",
2053 "Lower clamping threshold for marking fluid cells where air is trapped "
2054 "(lower value results in more marked cells)");
2062 "Maximum Trapped Air Potential",
2063 "Upper clamping threshold for marking fluid cells where air is trapped "
2064 "(higher value results in less marked cells)");
2073 "Minimum Kinetic Energy Potential",
2074 "Lower clamping threshold that indicates the fluid speed where cells start to emit "
2075 "particles (lower values result in generally more particles)");
2084 "Maximum Kinetic Energy Potential",
2085 "Upper clamping threshold that indicates the fluid speed where cells no longer emit more "
2086 "particles (higher value results in generally less particles)");
2094 "Wave Crest Sampling",
2095 "Maximum number of particles generated per wave crest cell per frame");
2103 "Trapped Air Sampling",
2104 "Maximum number of particles generated per trapped air cell per frame");
2113 "Amount of buoyancy force that rises bubbles (high value results in "
2114 "bubble movement mainly upwards)");
2123 "Amount of drag force that moves bubbles along with the fluid (high "
2124 "value results in bubble movement mainly along with the fluid)");
2145 prop,
"Particles in Boundary",
"How particles that left the domain are treated");
2154 "Determines which particle systems are created from secondary particles");
2163 "Radius to compute potential for each cell (higher values are slower "
2164 "but create smoother potential grids)");
2173 "Radius to compute position update for each particle (higher values "
2174 "are slower but particles move less chaotic)");
2183 "The particle simulation is scaled up by this factor (compared to the "
2184 "base resolution of the domain)");
2232 "Guiding velocity factor (higher value results in greater guiding velocities)");
2248 "Use velocities from this object for the guiding effect (object needs "
2249 "to have fluid modifier and be of type domain))");
2265 prop,
"Start",
"Frame on which the simulation starts (first frame baked)");
2281 "Frame offset that is used when loading the simulation from the cache. It is not considered "
2282 "when baking the simulation, only when loading it.");
2304 prop,
nullptr,
"rna_Fluid_cachetype_mesh_set",
"rna_Fluid_cachetype_mesh_itemf");
2306 prop,
"File Format",
"Select the file format to be used for caching surface data");
2314 prop,
nullptr,
"rna_Fluid_cachetype_data_set",
"rna_Fluid_cachetype_volume_itemf");
2316 prop,
"File Format",
"Select the file format to be used for caching volumetric data");
2324 prop,
nullptr,
"rna_Fluid_cachetype_particle_set",
"rna_Fluid_cachetype_particle_itemf");
2326 prop,
"File Format",
"Select the file format to be used for caching particle data");
2334 prop,
nullptr,
"rna_Fluid_cachetype_noise_set",
"rna_Fluid_cachetype_volume_itemf");
2336 prop,
"File Format",
"Select the file format to be used for caching noise data");
2353 "Additional data will be saved so that the bake jobs can be resumed after pausing. Because "
2354 "more data will be written to disk it is recommended to avoid enabling this option when "
2355 "baking at high resolutions.");
2420 "Export Mantaflow Script",
2421 "Generate and export Mantaflow script from current domain settings during bake. This is "
2422 "only needed if you plan to analyze the cache (e.g. view grids, velocity vectors, "
2423 "particles) in Mantaflow directly (outside of Blender) after baking the simulation.");
2440 "Bit depth for fluid particles and grids (lower bit values reduce file size)");
2455 "Adaptive Time Steps",
2456 "Automatically decide when to perform multiple simulation steps per frame");
2464 "Maximal velocity per cell (greater CFL numbers will minimize the "
2465 "number of simulation steps and the computation time.)");
2473 prop,
"Minimum",
"Minimum number of simulation steps to perform for one frame");
2481 prop,
"Maximum",
"Maximum number of simulation steps to perform for one frame");
2502 prop,
"Slice Per Voxel",
"How many slices per voxel should be generated");
2523 prop,
"Interpolation",
"Interpolation method to use for smoke/fire volumes in solid mode");
2582 "Render a simulation field while mapping its voxels values to the "
2583 "colors of a ramp or using a predefined color code");
2588 {0,
"NONE", 0,
"",
""},
2589 {0,
nullptr, 0,
nullptr,
nullptr},
2604 prop,
"Scale",
"Multiplier for scaling the selected field to color map");
2620 "Value under which voxels are considered empty space to optimize rendering");
2627 prop,
"Color Gridlines",
"Simulation field to color map onto gridlines");
2673 {0,
nullptr, 0,
nullptr,
nullptr},
2683 "Only use given geometry for fluid"},
2684 {0,
nullptr, 0,
nullptr,
nullptr},
2689 {0,
"NONE", 0,
"",
""},
2690 {0,
nullptr, 0,
nullptr,
nullptr},
2698 "Generated coordinates centered to flow object"},
2700 {0,
nullptr, 0,
nullptr,
nullptr},
2732 prop,
"Temperature Difference",
"Temperature difference to ambient temperature");
2759 prop,
nullptr,
"rna_Fluid_flowsource_set",
"rna_Fluid_flowsource_itemf");
2767 "Only allow given density value in emitter area and will not add up");
2773 prop,
"Initial Velocity",
"Fluid has some initial velocity when it is emitted");
2782 "Multiplier of source velocity passed to fluid (source velocity is "
2783 "non-zero only if object is moving)");
2807 "Additional initial velocity in X, Y and Z direction (added to source velocity)");
2815 "Controls fluid emission from within the mesh (higher value results in "
2816 "greater emissions from inside the mesh)");
2825 "Height (in domain grid units) of fluid emission above the mesh surface. Higher values "
2826 "result in emission further away from the mesh surface. If this value and the emitter size "
2827 "are smaller than the domain grid unit, fluid will not be created");
2835 "Treat this object as a planar and unclosed mesh. Fluid will only be emitted from the mesh "
2836 "surface and based on the surface emission value.");
2848 prop,
"Set Size",
"Set particle size in simulation cells or use nearest cell");
2861 "Number of additional samples to take between frames to improve "
2862 "quality of fast moving flows");
2867 "rna_FluidFlow_density_vgroup_get",
2868 "rna_FluidFlow_density_vgroup_length",
2869 "rna_FluidFlow_density_vgroup_set");
2871 prop,
"Vertex Group",
"Name of vertex group which determines surface emission rate");
2915 {0,
nullptr, 0,
nullptr,
nullptr},
2923 "Compare velocities from previous frame with new velocities from current frame and keep "
2929 "Compare velocities from previous frame with new velocities from current frame and keep "
2935 "Always write new guide velocities for every frame (each frame only contains current "
2936 "velocities from guiding objects)"},
2941 "Take average of velocities from previous frame and new velocities from current frame"},
2942 {0,
nullptr, 0,
nullptr,
nullptr},
2963 prop,
"Surface",
"Additional distance around mesh surface to consider as effector");
2993 "Number of additional samples to take between frames to improve "
2994 "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])
char * STRNCPY(char(&dst)[N], const char *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_GUIDE_SRC_EFFECTOR
@ FLUID_DOMAIN_GUIDE_SRC_DOMAIN
@ FLUID_FLOW_USE_PART_SIZE
@ FLUID_FLOW_NEEDS_UPDATE
@ FLUID_FLOW_USE_PLANE_INIT
@ FLUID_FLOW_INITVELOCITY
@ 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_MESH_UNION
@ FLUID_DOMAIN_MESH_IMPROVED
@ FLUID_GRIDLINE_COLOR_TYPE_FLAGS
@ FLUID_GRIDLINE_COLOR_TYPE_RANGE
@ FLUID_GRIDLINE_COLOR_TYPE_NONE
@ SNDPARTICLE_BOUNDARY_DELETE
@ SNDPARTICLE_BOUNDARY_PUSHOUT
@ 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_FLOW_TYPE_SMOKEFIRE
@ FLUID_CELL_TYPE_OUTFLOW
@ FLUID_CELL_TYPE_OBSTACLE
@ FLUID_DISPLAY_INTERP_CLOSEST
@ FLUID_DISPLAY_INTERP_CUBIC
@ FLUID_DISPLAY_INTERP_LINEAR
@ FLUID_DOMAIN_TYPE_LIQUID
@ 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
@ VDB_PRECISION_MINI_FLOAT
@ VDB_PRECISION_FULL_FLOAT
@ VDB_PRECISION_HALF_FLOAT
@ FLUID_EFFECTOR_NEEDS_UPDATE
@ FLUID_EFFECTOR_USE_EFFEC
@ FLUID_EFFECTOR_USE_PLANE_INIT
@ 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_DOMAIN_METHOD_FLIP
@ FLUID_DOMAIN_METHOD_APIC
@ FLUID_EFFECTOR_GUIDE_MAX
@ FLUID_EFFECTOR_GUIDE_OVERRIDE
@ FLUID_EFFECTOR_GUIDE_AVERAGED
@ FLUID_EFFECTOR_GUIDE_MIN
@ FLUID_DOMAIN_FILE_BIN_OBJECT
@ FLUID_DOMAIN_FILE_OBJECT
@ FLUID_DOMAIN_FILE_OPENVDB
@ 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_DOMAIN_CACHE_REPLAY
@ FLUID_DOMAIN_CACHE_MODULAR
@ FLUID_FLOW_BEHAVIOR_GEOMETRY
@ FLUID_FLOW_BEHAVIOR_OUTFLOW
@ FLUID_FLOW_BEHAVIOR_INFLOW
@ FLUID_FLOW_TEXTURE_MAP_UV
@ FLUID_FLOW_TEXTURE_MAP_AUTO
@ FLUID_DOMAIN_VECTOR_FIELD_FORCE
@ FLUID_DOMAIN_VECTOR_FIELD_VELOCITY
@ FLUID_DOMAIN_VECTOR_FIELD_GUIDE_VELOCITY
#define FLUID_DOMAIN_BAKED_ALL
@ FLUID_FLOW_SOURCE_PARTICLES
@ FLUID_DOMAIN_PARTICLE_SPRAY
@ FLUID_DOMAIN_PARTICLE_FOAM
@ FLUID_DOMAIN_PARTICLE_TRACER
@ FLUID_DOMAIN_PARTICLE_FLIP
@ FLUID_DOMAIN_PARTICLE_BUBBLE
@ FLUID_EFFECTOR_TYPE_GUIDE
@ FLUID_EFFECTOR_TYPE_COLLISION
#define FLUID_DOMAIN_BAKING_ALL
@ PART_FLUID_SPRAYFOAMBUBBLE
#define RNA_MAX_ARRAY_DIMENSION
@ PROPOVERRIDE_OVERRIDABLE_LIBRARY
@ PROP_PATH_SUPPORTS_BLEND_RELATIVE
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
float length(VecOp< float, D >) RET
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)
MatBase< T, NumCol, NumRow > scale(const MatBase< T, NumCol, NumRow > &mat, const VectorT &scale)
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t booleanbit)
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_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)