[Bf-blender-cvs] [b44101950d1] blender-v2.83-release: Fix T73979: Wrong location of fluid mesh when domain origin is not in center

Jacques Lucke noreply at git.blender.org
Wed May 20 16:52:45 CEST 2020


Commit: b44101950d12d6d1f75507df03a902bf8387e074
Author: Jacques Lucke
Date:   Wed May 20 16:52:03 2020 +0200
Branches: blender-v2.83-release
https://developer.blender.org/rBb44101950d12d6d1f75507df03a902bf8387e074

Fix T73979: Wrong location of fluid mesh when domain origin is not in center

Reviewers: sebbas

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

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

M	source/blender/blenkernel/intern/fluid.c

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

diff --git a/source/blender/blenkernel/intern/fluid.c b/source/blender/blenkernel/intern/fluid.c
index 7adac2d4a4d..c06cefbb493 100644
--- a/source/blender/blenkernel/intern/fluid.c
+++ b/source/blender/blenkernel/intern/fluid.c
@@ -3330,6 +3330,16 @@ static Mesh *create_liquid_geometry(FluidDomainSettings *mds, Mesh *orgmesh, Obj
   /* Biggest dimension will be used for upscaling. */
   float max_size = MAX3(size[0], size[1], size[2]);
 
+  float co_scale[3];
+  co_scale[0] = max_size / ob->scale[0];
+  co_scale[1] = max_size / ob->scale[1];
+  co_scale[2] = max_size / ob->scale[2];
+
+  float co_offset[3];
+  co_offset[0] = (mds->p0[0] + mds->p1[0]) / 2.0f;
+  co_offset[1] = (mds->p0[1] + mds->p1[1]) / 2.0f;
+  co_offset[2] = (mds->p0[2] + mds->p1[2]) / 2.0f;
+
   /* Normals. */
   normals = MEM_callocN(sizeof(short) * num_normals * 3, "Fluidmesh_tmp_normals");
 
@@ -3353,9 +3363,9 @@ static Mesh *create_liquid_geometry(FluidDomainSettings *mds, Mesh *orgmesh, Obj
       mverts->co[2] *= mds->dx / mds->mesh_scale;
     }
 
-    mverts->co[0] *= max_size / fabsf(ob->scale[0]);
-    mverts->co[1] *= max_size / fabsf(ob->scale[1]);
-    mverts->co[2] *= max_size / fabsf(ob->scale[2]);
+    mul_v3_v3(mverts->co, co_scale);
+    add_v3_v3(mverts->co, co_offset);
+
 #  ifdef DEBUG_PRINT
     /* Debugging: Print coordinates of vertices. */
     printf("mverts->co[0]: %f, mverts->co[1]: %f, mverts->co[2]: %f\n",



More information about the Bf-blender-cvs mailing list