[Bf-blender-cvs] [af7032e9f05] fracture_modifier: only write rotation data to mesh if particle rotation was enabled

Martin Felke noreply at git.blender.org
Mon Jun 17 11:38:16 CEST 2019


Commit: af7032e9f056c0ee5968015c64d63bf2d3c18031
Author: Martin Felke
Date:   Mon Jun 17 10:59:55 2019 +0200
Branches: fracture_modifier
https://developer.blender.org/rBaf7032e9f056c0ee5968015c64d63bf2d3c18031

only write rotation data to mesh if particle rotation was enabled

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

M	source/blender/blenkernel/intern/fracture.c
M	source/blender/modifiers/intern/MOD_remesh.c

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

diff --git a/source/blender/blenkernel/intern/fracture.c b/source/blender/blenkernel/intern/fracture.c
index 4b458cfd405..4c593f25ac3 100644
--- a/source/blender/blenkernel/intern/fracture.c
+++ b/source/blender/blenkernel/intern/fracture.c
@@ -4249,9 +4249,9 @@ void BKE_read_animated_loc_rot(FractureModifierData *fmd, Object *ob, bool do_bi
 				copy_v3_v3(co, mvert[v].co);
 				copy_v3_v3(off, fmd->anim_bind[i].offset);
 
-				//if (fmd->anim_mesh_rot)
+				if (fmd->anim_mesh_rot)
 				{
-					if (quats && fmd->anim_mesh_rot)
+					if (quats)
 					{
 						quat[0] = quatX[v];
 						quat[1] = quatY[v];
@@ -4297,8 +4297,9 @@ void BKE_read_animated_loc_rot(FractureModifierData *fmd, Object *ob, bool do_bi
 
 				copy_v3_v3(mi->rigidbody->pos, co);
 
+			    if (fmd->anim_mesh_rot)
 				{
-					if (quats && fmd->anim_mesh_rot) {
+					if (quats) {
 						//if rotations are changed, re-bind the object to fix
 						mul_qt_qtqt(quat, ob_quat, quat);
 					}
diff --git a/source/blender/modifiers/intern/MOD_remesh.c b/source/blender/modifiers/intern/MOD_remesh.c
index 173d7d16a74..3f5899beb5d 100644
--- a/source/blender/modifiers/intern/MOD_remesh.c
+++ b/source/blender/modifiers/intern/MOD_remesh.c
@@ -265,10 +265,13 @@ static DerivedMesh *repolygonize(RemeshModifierData *rmd, Object* ob, DerivedMes
 		velY = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n, "velY");
 		velZ = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n, "velZ");
 
-		quatX = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n, "quatX");
-		quatY = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n, "quatY");
-		quatZ = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n, "quatZ");
-		quatW = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n, "quatW");
+	    if (psys->part->flag & PART_ROTATIONS)
+	    {		
+			quatX = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n, "quatX");
+			quatY = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n, "quatY");
+			quatZ = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n, "quatZ");
+			quatW = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n, "quatW");
+	    }
 
 		orig_index = CustomData_add_layer(&dm->vertData, CD_ORIGINDEX, CD_CALLOC, NULL, n);
 
@@ -281,10 +284,13 @@ static DerivedMesh *repolygonize(RemeshModifierData *rmd, Object* ob, DerivedMes
 			velY[i] = vel[i][1];
 			velZ[i] = vel[i][2];
 
-			quatX[i] = rot[i][0];
-			quatY[i] = rot[i][1];
-			quatZ[i] = rot[i][2];
-			quatW[i] = rot[i][3];
+			if (quatX)
+			{
+				quatX[i] = rot[i][0];
+				quatY[i] = rot[i][1];
+				quatZ[i] = rot[i][2];
+				quatW[i] = rot[i][3];
+			}
 
 			orig_index[i] = index[i];
 		}
@@ -328,11 +334,14 @@ static DerivedMesh *repolygonize(RemeshModifierData *rmd, Object* ob, DerivedMes
 		velX = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n + derived->numVertData, "velX");
 		velY = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n + derived->numVertData, "velY");
 		velZ = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n + derived->numVertData, "velZ");
-
-		quatX = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n + derived->numVertData, "quatX");
-		quatY = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n + derived->numVertData, "quatY");
-		quatZ = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n + derived->numVertData, "quatZ");
-		quatW = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n + derived->numVertData, "quatW");
+		
+		if (psys->part->flag & PART_ROTATIONS)
+		{
+			quatX = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n + derived->numVertData, "quatX");
+			quatY = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n + derived->numVertData, "quatY");
+			quatZ = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n + derived->numVertData, "quatZ");
+			quatW = CustomData_add_layer_named(&dm->vertData, CD_PROP_FLT, CD_CALLOC, NULL, n + derived->numVertData, "quatW");
+		}
 
 		orig_index = CustomData_add_layer(&dm->vertData, CD_ORIGINDEX, CD_CALLOC, NULL, n + derived->numVertData);
 
@@ -362,10 +371,13 @@ static DerivedMesh *repolygonize(RemeshModifierData *rmd, Object* ob, DerivedMes
 			velY[i] = vel[i][1];
 			velZ[i] = vel[i][2];
 
-			quatX[i] = rot[i][0];
-			quatY[i] = rot[i][1];
-			quatZ[i] = rot[i][2];
-			quatW[i] = rot[i][3];
+			if (quatX)
+			{
+				quatX[i] = rot[i][0];
+				quatY[i] = rot[i][1];
+				quatZ[i] = rot[i][2];
+				quatW[i] = rot[i][3];
+			}
 
 			orig_index[i] = index[i];
 
@@ -384,10 +396,13 @@ static DerivedMesh *repolygonize(RemeshModifierData *rmd, Object* ob, DerivedMes
 			velY[i] = ovY ? ovY[i-n] : 0.0f;
 			velZ[i] = ovZ ? ovZ[i-n] : 0.0f;
 
-			quatX[i] = oqX ? oqX[i-n] : 1.0f;
-			quatZ[i] = oqY ? oqY[i-n] : 0.0f;
-			quatY[i] = oqZ ? oqZ[i-n] : 0.0f;
-			quatW[i] = oqW ? oqW[i-n] : 0.0f;
+			if (quatX)
+			{
+				quatX[i] = oqX ? oqX[i-n] : 1.0f;
+				quatZ[i] = oqY ? oqY[i-n] : 0.0f;
+				quatY[i] = oqZ ? oqZ[i-n] : 0.0f;
+				quatW[i] = oqW ? oqW[i-n] : 0.0f;
+			}
 
 			orig_index[i] = i;
 			if (dvert_new && dvert && defgrp_size > -1)



More information about the Bf-blender-cvs mailing list