From d27ccf990c2b957a10f4676e3153f907829a4b22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Barschkis?= Date: Mon, 16 Dec 2019 15:50:14 +0100 Subject: Mantaflow [Part 6]: Updates in /blender/source A collection of smaller changes that are required in the /blender/source files. A lot of them are also due to variable renaming. Reviewed By: sergey Maniphest Tasks: T59995 Differential Revision: https://developer.blender.org/D3855 --- intern/CMakeLists.txt | 12 ++++-------- intern/cycles/blender/blender_mesh.cpp | 21 ++++++++++---------- intern/cycles/blender/blender_session.cpp | 32 +++++++++++++++---------------- intern/cycles/blender/blender_util.h | 29 ++++++---------------------- 4 files changed, 36 insertions(+), 58 deletions(-) (limited to 'intern') diff --git a/intern/CMakeLists.txt b/intern/CMakeLists.txt index e6b561c39b9..a5605e875a8 100644 --- a/intern/CMakeLists.txt +++ b/intern/CMakeLists.txt @@ -40,14 +40,6 @@ if(WITH_MOD_REMESH) add_subdirectory(dualcon) endif() -if(WITH_MOD_FLUID) - add_subdirectory(elbeem) -endif() - -if(WITH_MOD_SMOKE) - add_subdirectory(smoke) -endif() - if(WITH_IK_SOLVER) add_subdirectory(iksolver) endif() @@ -73,6 +65,10 @@ if(WIN32) add_subdirectory(utfconv) endif() +if(WITH_MOD_FLUID) + add_subdirectory(mantaflow) +endif() + if(WITH_OPENVDB) add_subdirectory(openvdb) endif() diff --git a/intern/cycles/blender/blender_mesh.cpp b/intern/cycles/blender/blender_mesh.cpp index 5c28404e745..b18f9a37948 100644 --- a/intern/cycles/blender/blender_mesh.cpp +++ b/intern/cycles/blender/blender_mesh.cpp @@ -283,7 +283,7 @@ static void mikk_compute_tangents( static void create_mesh_volume_attribute( BL::Object &b_ob, Mesh *mesh, ImageManager *image_manager, AttributeStandard std, float frame) { - BL::SmokeDomainSettings b_domain = object_smoke_domain_find(b_ob); + BL::FluidDomainSettings b_domain = object_fluid_domain_find(b_ob); if (!b_domain) return; @@ -930,13 +930,13 @@ static void sync_mesh_fluid_motion(BL::Object &b_ob, Scene *scene, Mesh *mesh) if (scene->need_motion() == Scene::MOTION_NONE) return; - BL::DomainFluidSettings b_fluid_domain = object_fluid_domain_find(b_ob); + BL::FluidDomainSettings b_fluid_domain = object_fluid_domain_find(b_ob); if (!b_fluid_domain) return; /* If the mesh has modifiers following the fluid domain we can't export motion. */ - if (b_fluid_domain.fluid_mesh_vertices.length() != mesh->verts.size()) + if (b_fluid_domain.mesh_vertices.length() != mesh->verts.size()) return; /* Find or add attribute */ @@ -953,13 +953,12 @@ static void sync_mesh_fluid_motion(BL::Object &b_ob, Scene *scene, Mesh *mesh) float relative_time = motion_times[step] * scene->motion_shutter_time() * 0.5f; float3 *mP = attr_mP->data_float3() + step * mesh->verts.size(); - BL::DomainFluidSettings::fluid_mesh_vertices_iterator fvi; + BL::FluidDomainSettings::mesh_vertices_iterator svi; int i = 0; - for (b_fluid_domain.fluid_mesh_vertices.begin(fvi); - fvi != b_fluid_domain.fluid_mesh_vertices.end(); - ++fvi, ++i) { - mP[i] = P[i] + get_float3(fvi->velocity()) * relative_time; + for (b_fluid_domain.mesh_vertices.begin(svi); svi != b_fluid_domain.mesh_vertices.end(); + ++svi, ++i) { + mP[i] = P[i] + get_float3(svi->velocity()) * relative_time; } } } @@ -1099,7 +1098,7 @@ Mesh *BlenderSync::sync_mesh(BL::Depsgraph &b_depsgraph, } mesh->geometry_flags = requested_geometry_flags; - /* fluid motion */ + /* mesh fluid motion mantaflow */ sync_mesh_fluid_motion(b_ob, scene, mesh); /* tag update */ @@ -1148,8 +1147,8 @@ void BlenderSync::sync_mesh_motion(BL::Depsgraph &b_depsgraph, * would need a more extensive check to see which objects are animated */ BL::Mesh b_mesh(PointerRNA_NULL); - /* fluid motion is exported immediate with mesh, skip here */ - BL::DomainFluidSettings b_fluid_domain = object_fluid_domain_find(b_ob); + /* manta motion is exported immediate with mesh, skip here */ + BL::FluidDomainSettings b_fluid_domain = object_fluid_domain_find(b_ob); if (b_fluid_domain) return; diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp index 78fb49db6c8..26b04babce2 100644 --- a/intern/cycles/blender/blender_session.cpp +++ b/intern/cycles/blender/blender_session.cpp @@ -1158,7 +1158,7 @@ void BlenderSession::builtin_image_info(const string &builtin_name, else if (b_id.is_a(&RNA_Object)) { /* smoke volume data */ BL::Object b_ob(b_id); - BL::SmokeDomainSettings b_domain = object_smoke_domain_find(b_ob); + BL::FluidDomainSettings b_domain = object_fluid_domain_find(b_ob); metadata.is_float = true; metadata.depth = 1; @@ -1180,7 +1180,7 @@ void BlenderSession::builtin_image_info(const string &builtin_name, return; int3 resolution = get_int3(b_domain.domain_resolution()); - int amplify = (b_domain.use_high_resolution()) ? b_domain.amplify() + 1 : 1; + int amplify = (b_domain.use_noise()) ? b_domain.noise_scale() : 1; /* Velocity and heat data is always low-resolution. */ if (builtin_name == Attribute::standard_name(ATTR_STD_VOLUME_VELOCITY) || @@ -1339,14 +1339,14 @@ bool BlenderSession::builtin_image_float_pixels(const string &builtin_name, else if (b_id.is_a(&RNA_Object)) { /* smoke volume data */ BL::Object b_ob(b_id); - BL::SmokeDomainSettings b_domain = object_smoke_domain_find(b_ob); + BL::FluidDomainSettings b_domain = object_fluid_domain_find(b_ob); if (!b_domain) { return false; } int3 resolution = get_int3(b_domain.domain_resolution()); - int length, amplify = (b_domain.use_high_resolution()) ? b_domain.amplify() + 1 : 1; + int length, amplify = (b_domain.use_noise()) ? b_domain.noise_scale() : 1; /* Velocity and heat data is always low-resolution. */ if (builtin_name == Attribute::standard_name(ATTR_STD_VOLUME_VELOCITY) || @@ -1360,47 +1360,47 @@ bool BlenderSession::builtin_image_float_pixels(const string &builtin_name, const size_t num_pixels = ((size_t)width) * height * depth; if (builtin_name == Attribute::standard_name(ATTR_STD_VOLUME_DENSITY)) { - SmokeDomainSettings_density_grid_get_length(&b_domain.ptr, &length); + FluidDomainSettings_density_grid_get_length(&b_domain.ptr, &length); if (length == num_pixels) { - SmokeDomainSettings_density_grid_get(&b_domain.ptr, pixels); + FluidDomainSettings_density_grid_get(&b_domain.ptr, pixels); return true; } } else if (builtin_name == Attribute::standard_name(ATTR_STD_VOLUME_FLAME)) { /* this is in range 0..1, and interpreted by the OpenGL smoke viewer * as 1500..3000 K with the first part faded to zero density */ - SmokeDomainSettings_flame_grid_get_length(&b_domain.ptr, &length); + FluidDomainSettings_flame_grid_get_length(&b_domain.ptr, &length); if (length == num_pixels) { - SmokeDomainSettings_flame_grid_get(&b_domain.ptr, pixels); + FluidDomainSettings_flame_grid_get(&b_domain.ptr, pixels); return true; } } else if (builtin_name == Attribute::standard_name(ATTR_STD_VOLUME_COLOR)) { /* the RGB is "premultiplied" by density for better interpolation results */ - SmokeDomainSettings_color_grid_get_length(&b_domain.ptr, &length); + FluidDomainSettings_color_grid_get_length(&b_domain.ptr, &length); if (length == num_pixels * 4) { - SmokeDomainSettings_color_grid_get(&b_domain.ptr, pixels); + FluidDomainSettings_color_grid_get(&b_domain.ptr, pixels); return true; } } else if (builtin_name == Attribute::standard_name(ATTR_STD_VOLUME_VELOCITY)) { - SmokeDomainSettings_velocity_grid_get_length(&b_domain.ptr, &length); + FluidDomainSettings_velocity_grid_get_length(&b_domain.ptr, &length); if (length == num_pixels * 3) { - SmokeDomainSettings_velocity_grid_get(&b_domain.ptr, pixels); + FluidDomainSettings_velocity_grid_get(&b_domain.ptr, pixels); return true; } } else if (builtin_name == Attribute::standard_name(ATTR_STD_VOLUME_HEAT)) { - SmokeDomainSettings_heat_grid_get_length(&b_domain.ptr, &length); + FluidDomainSettings_heat_grid_get_length(&b_domain.ptr, &length); if (length == num_pixels) { - SmokeDomainSettings_heat_grid_get(&b_domain.ptr, pixels); + FluidDomainSettings_heat_grid_get(&b_domain.ptr, pixels); return true; } } else if (builtin_name == Attribute::standard_name(ATTR_STD_VOLUME_TEMPERATURE)) { - SmokeDomainSettings_temperature_grid_get_length(&b_domain.ptr, &length); + FluidDomainSettings_temperature_grid_get_length(&b_domain.ptr, &length); if (length == num_pixels) { - SmokeDomainSettings_temperature_grid_get(&b_domain.ptr, pixels); + FluidDomainSettings_temperature_grid_get(&b_domain.ptr, pixels); return true; } } diff --git a/intern/cycles/blender/blender_util.h b/intern/cycles/blender/blender_util.h index fa7646840c9..2c3e279a8d8 100644 --- a/intern/cycles/blender/blender_util.h +++ b/intern/cycles/blender/blender_util.h @@ -537,37 +537,20 @@ static inline bool object_use_deform_motion(BL::Object &b_parent, BL::Object &b_ return use_deform_motion; } -static inline BL::SmokeDomainSettings object_smoke_domain_find(BL::Object &b_ob) +static inline BL::FluidDomainSettings object_fluid_domain_find(BL::Object &b_ob) { BL::Object::modifiers_iterator b_mod; for (b_ob.modifiers.begin(b_mod); b_mod != b_ob.modifiers.end(); ++b_mod) { - if (b_mod->is_a(&RNA_SmokeModifier)) { - BL::SmokeModifier b_smd(*b_mod); + if (b_mod->is_a(&RNA_FluidModifier)) { + BL::FluidModifier b_mmd(*b_mod); - if (b_smd.smoke_type() == BL::SmokeModifier::smoke_type_DOMAIN) - return b_smd.domain_settings(); + if (b_mmd.fluid_type() == BL::FluidModifier::fluid_type_DOMAIN) + return b_mmd.domain_settings(); } } - return BL::SmokeDomainSettings(PointerRNA_NULL); -} - -static inline BL::DomainFluidSettings object_fluid_domain_find(BL::Object b_ob) -{ - BL::Object::modifiers_iterator b_mod; - - for (b_ob.modifiers.begin(b_mod); b_mod != b_ob.modifiers.end(); ++b_mod) { - if (b_mod->is_a(&RNA_FluidSimulationModifier)) { - BL::FluidSimulationModifier b_fmd(*b_mod); - BL::FluidSettings fss = b_fmd.settings(); - - if (fss.type() == BL::FluidSettings::type_DOMAIN) - return (BL::DomainFluidSettings)b_fmd.settings(); - } - } - - return BL::DomainFluidSettings(PointerRNA_NULL); + return BL::FluidDomainSettings(PointerRNA_NULL); } static inline Mesh::SubdivisionType object_subdivision_type(BL::Object &b_ob, -- cgit v1.2.3