[Bf-blender-cvs] [cf3c189] fluid-mantaflow: liquid mesh scaling improvements

Sebastián Barschkis noreply at git.blender.org
Mon Jul 4 00:09:57 CEST 2016


Commit: cf3c18948bce02f2a6a28def4528ae3d405f5abf
Author: Sebastián Barschkis
Date:   Mon Jul 4 00:09:30 2016 +0200
Branches: fluid-mantaflow
https://developer.blender.org/rBcf3c18948bce02f2a6a28def4528ae3d405f5abf

liquid mesh scaling improvements

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

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

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

diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c
index a8b90d0..e68e6e0 100644
--- a/source/blender/blenkernel/intern/smoke.c
+++ b/source/blender/blenkernel/intern/smoke.c
@@ -2828,7 +2828,7 @@ static void step(Scene *scene, Object *ob, SmokeModifierData *smd, DerivedMesh *
 	}
 }
 
-static DerivedMesh *createLiquidMesh(SmokeDomainSettings *sds, DerivedMesh *orgdm)
+static DerivedMesh *createLiquidMesh(SmokeDomainSettings *sds, DerivedMesh *orgdm, Object* ob)
 {
 	DerivedMesh *dm;
 	MVert *mverts;
@@ -2872,6 +2872,8 @@ static DerivedMesh *createLiquidMesh(SmokeDomainSettings *sds, DerivedMesh *orgd
 	
 	printf("num_verts: %d, num_normals: %d, num_triangles: %d\n", num_verts, num_normals, num_faces);
 	
+	float max_size = MAX3(sds->global_size[0], sds->global_size[1], sds->global_size[2]);
+	
 	// Vertices
 	for (i = 0; i < num_verts; i++, mverts++)
 	{
@@ -2879,9 +2881,9 @@ static DerivedMesh *createLiquidMesh(SmokeDomainSettings *sds, DerivedMesh *orgd
 		mverts->co[1] = liquid_get_vertex_y_at(sds->fluid, i);
 		mverts->co[2] = liquid_get_vertex_z_at(sds->fluid, i);
 		
-		mverts->co[0] *= sds->scale;
-		mverts->co[1] *= sds->scale;
-		mverts->co[2] *= sds->scale;
+		mverts->co[0] *= max_size / fabsf(ob->size[0]);
+		mverts->co[1] *= max_size / fabsf(ob->size[1]);
+		mverts->co[2] *= max_size / fabsf(ob->size[2]);
 		
 //		printf("mverts->co[0]: %f, mverts->co[1]: %f, mverts->co[2]: %f\n", mverts->co[0], mverts->co[1], mverts->co[2]);
 	}
@@ -3183,7 +3185,7 @@ struct DerivedMesh *smokeModifier_do(SmokeModifierData *smd, Scene *scene, Objec
 	else if (smd->type & MOD_SMOKE_TYPE_DOMAIN && smd->domain &&
 		smd->domain->type == MOD_SMOKE_DOMAIN_TYPE_LIQUID)
 	{
-		DerivedMesh *result = createLiquidMesh(smd->domain, dm);
+		DerivedMesh *result = createLiquidMesh(smd->domain, dm, ob);
 		return (result) ? result : CDDM_copy(dm);
 	}
 	else {




More information about the Bf-blender-cvs mailing list