[Bf-blender-cvs] [90d644f] fracture_modifier: fix : inner vertexgroups created with fractal boolean now too

Martin Felke noreply at git.blender.org
Thu Dec 22 00:38:26 CET 2016


Commit: 90d644fca44e53b791dbb08907099100591ce2a9
Author: Martin Felke
Date:   Thu Dec 22 00:24:32 2016 +0100
Branches: fracture_modifier
https://developer.blender.org/rB90d644fca44e53b791dbb08907099100591ce2a9

fix : inner vertexgroups created with fractal boolean now too

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

M	source/blender/modifiers/intern/MOD_fracture.c

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

diff --git a/source/blender/modifiers/intern/MOD_fracture.c b/source/blender/modifiers/intern/MOD_fracture.c
index ccff22e..bc8c019 100644
--- a/source/blender/modifiers/intern/MOD_fracture.c
+++ b/source/blender/modifiers/intern/MOD_fracture.c
@@ -2674,8 +2674,9 @@ static void fill_vgroup(FractureModifierData *rmd, DerivedMesh *dm, MDeformVert
 {
 	/* use fallback over inner material (no more, now directly via tagged verts) */
 	if (rmd->inner_defgrp_name[0]) {
-		int ind = 0;
-		MPoly *mp = dm->getPolyArray(dm);
+		int ind = 0, mat_index = BKE_object_material_slot_find_index(ob, rmd->inner_material);
+		bool fallback = false;
+		MPoly *mp = dm->getPolyArray(dm), *p;
 		MLoop *ml = dm->getLoopArray(dm);
 		MVert *mv = dm->getVertArray(dm);
 		int count = dm->getNumPolys(dm);
@@ -2690,18 +2691,23 @@ static void fill_vgroup(FractureModifierData *rmd, DerivedMesh *dm, MDeformVert
 		dvert = CustomData_add_layer(&dm->vertData, CD_MDEFORMVERT, CD_CALLOC,
 		                             NULL, totvert);
 
-		for (ind = 0; ind < count; ind++) {
-			int j = 0;
-			for (j = 0; j < (mp + ind)->totloop; j++) {
+		fallback = rmd->frac_algorithm == MOD_FRACTURE_BOOLEAN_FRACTAL;
+
+		for (ind = 0, p = mp; ind < count; ind++, p++) {
+			int j;
+			for (j = 0; j < p->totloop; j++) {
 				MLoop *l;
 				MVert *v;
-				int l_index = (mp + ind)->loopstart + j;
+				int l_index = p->loopstart + j;
 				l = ml + l_index;
 				v = mv + l->v;
-				if (v->flag & ME_VERT_TMP_TAG) {
+				if ((v->flag & ME_VERT_TMP_TAG) && !fallback) {
 					defvert_add_index_notest(dvert + l->v, inner_defgrp_index, 1.0f);
 					//v->flag &= ~ME_VERT_TMP_TAG;
 				}
+				else if ((p->mat_nr == mat_index-1) && fallback) {
+					defvert_add_index_notest(dvert + l->v, inner_defgrp_index, 1.0f);
+				}
 			}
 		}
 	}




More information about the Bf-blender-cvs mailing list