[Bf-blender-cvs] [694c0547c21] blender-v2.83-release: Fix T73680: Scene and fluid modifier gravity are scaled differently

Jacques Lucke noreply at git.blender.org
Thu Apr 23 15:11:36 CEST 2020


Commit: 694c0547c21aa3a5087c0dd4323624358135f4ef
Author: Jacques Lucke
Date:   Thu Apr 23 15:10:20 2020 +0200
Branches: blender-v2.83-release
https://developer.blender.org/rB694c0547c21aa3a5087c0dd4323624358135f4ef

Fix T73680: Scene and fluid modifier gravity are scaled differently

Reviewers: sebbas

Differential Revision: https://developer.blender.org/D7483

===================================================================

M	source/blender/blenkernel/BKE_blender_version.h
M	source/blender/blenkernel/intern/fluid.c
M	source/blender/blenloader/intern/versioning_280.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_blender_version.h b/source/blender/blenkernel/BKE_blender_version.h
index cc029a3cbf9..c9b70d681f4 100644
--- a/source/blender/blenkernel/BKE_blender_version.h
+++ b/source/blender/blenkernel/BKE_blender_version.h
@@ -27,7 +27,7 @@
  * \note Use #STRINGIFY() rather than defining with quotes.
  */
 #define BLENDER_VERSION 283
-#define BLENDER_SUBVERSION 14
+#define BLENDER_SUBVERSION 15
 /** Several breakages with 280, e.g. collections vs layers. */
 #define BLENDER_MINVERSION 280
 #define BLENDER_MINSUBVERSION 0
diff --git a/source/blender/blenkernel/intern/fluid.c b/source/blender/blenkernel/intern/fluid.c
index 83a431306f4..d4f54daa773 100644
--- a/source/blender/blenkernel/intern/fluid.c
+++ b/source/blender/blenkernel/intern/fluid.c
@@ -489,23 +489,26 @@ static void manta_set_domain_from_mesh(FluidDomainSettings *mds,
 
 static void manta_set_domain_gravity(Scene *scene, FluidDomainSettings *mds)
 {
-  float gravity[3] = {0.0f, 0.0f, -1.0f};
-  float gravity_mag;
+  const float normalization_factor = 1.0f / 9.81f;
 
   /* Use global gravity if enabled. */
   if (scene->physics_settings.flag & PHYS_GLOBAL_GRAVITY) {
+    float gravity[3];
     copy_v3_v3(gravity, scene->physics_settings.gravity);
     /* Map default value to 1.0. */
-    mul_v3_fl(gravity, 1.0f / 9.810f);
+    mul_v3_fl(gravity, normalization_factor);
 
     /* Convert gravity to domain space. */
-    gravity_mag = len_v3(gravity);
+    float gravity_mag = len_v3(gravity);
     mul_mat3_m4_v3(mds->imat, gravity);
     normalize_v3(gravity);
     mul_v3_fl(gravity, gravity_mag);
 
     copy_v3_v3(mds->gravity, gravity);
   }
+  else {
+    mul_v3_fl(mds->gravity, normalization_factor);
+  }
 
   mul_v3_fl(mds->gravity, mds->effector_weights->global_gravity);
 }
@@ -4839,7 +4842,7 @@ void BKE_fluid_modifier_create_type_data(struct FluidModifierData *mmd)
     mmd->domain->flags = FLUID_DOMAIN_USE_DISSOLVE_LOG | FLUID_DOMAIN_USE_ADAPTIVE_TIME;
     mmd->domain->gravity[0] = 0.0f;
     mmd->domain->gravity[1] = 0.0f;
-    mmd->domain->gravity[2] = -1.0f;
+    mmd->domain->gravity[2] = -9.81f;
     mmd->domain->active_fields = 0;
     mmd->domain->type = FLUID_DOMAIN_TYPE_GAS;
     mmd->domain->boundary_width = 1;
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index 329767ef202..d246eadb381 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -40,6 +40,7 @@
 #include "DNA_constraint_types.h"
 #include "DNA_curve_types.h"
 #include "DNA_curveprofile_types.h"
+#include "DNA_fluid_types.h"
 #include "DNA_freestyle_types.h"
 #include "DNA_genfile.h"
 #include "DNA_gpencil_modifier_types.h"
@@ -5037,6 +5038,20 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
     }
   }
 
+  /* Match scale of fluid modifier gravity with scene gravity. */
+  if (!MAIN_VERSION_ATLEAST(bmain, 283, 15)) {
+    for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) {
+      for (ModifierData *md = ob->modifiers.first; md; md = md->next) {
+        if (md->type == eModifierType_Fluid) {
+          FluidModifierData *fmd = (FluidModifierData *)md;
+          if (fmd->domain != NULL) {
+            mul_v3_fl(fmd->domain->gravity, 9.81f);
+          }
+        }
+      }
+    }
+  }
+
   /**
    * Versioning code until next subversion bump goes here.
    *



More information about the Bf-blender-cvs mailing list