Revision: 58898 http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58898 Author: walid Date: 2013-08-04 07:16:43 +0000 (Sun, 04 Aug 2013) Log Message: ----------- Vertex Color transfer through projection: fixing the mloopcol access to be by MLoopCol
Modified Paths: -------------- branches/soc-2013-meshdata_transfer/source/blender/bmesh/tools/bmesh_data_transfer.c Modified: branches/soc-2013-meshdata_transfer/source/blender/bmesh/tools/bmesh_data_transfer.c =================================================================== --- branches/soc-2013-meshdata_transfer/source/blender/bmesh/tools/bmesh_data_transfer.c 2013-08-04 05:37:25 UTC (rev 58897) +++ branches/soc-2013-meshdata_transfer/source/blender/bmesh/tools/bmesh_data_transfer.c 2013-08-04 07:16:43 UTC (rev 58898) @@ -2324,7 +2324,6 @@ BMLoop *l, *l2; //used for iterating the destination's loops // MLoopUV *luv, *luv_src; BMIter liter, liter2; - float weight_accu[4]; //-----algorithm definitions start BMEditMesh *em_src; //tree variable @@ -2458,6 +2457,8 @@ mid_poly_v3(f_mid_src, v_co_list_src, v_src_count); //get the mid point of the source face BM_ITER_ELEM (l, &liter, f_dst, BM_LOOPS_OF_FACE) { + MLoopCol *lcol = BM_ELEM_CD_GET_VOID_P(l, CD_dst); + MLoopCol *lcol_out = MEM_mallocN(sizeof(*lcol_out), "lcol_out bmesh_data_transfer.c"); zero_v3(tmp_co); // Transform into target space. @@ -2473,14 +2474,28 @@ interp_weights_poly_v3(tmp_weight, v_co_list_src, v_src_count, tmp_co); // Interpolating according to the spatially found weights - zero_v4(weight_accu); //this variable is added only for consistency with the other transfer functions + lcol_out->a = 0; + lcol_out->b = 0; + lcol_out->g = 0; + lcol_out->r = 0; + BM_ITER_ELEM_INDEX (l2, &liter2, f_src, BM_LOOPS_OF_FACE, a) { - madd_v4_v4fl(weight_accu, BM_ELEM_CD_GET_VOID_P(l2, CD_src), tmp_weight[a]); + MLoopCol *lcol2 = BM_ELEM_CD_GET_VOID_P(l2, CD_src); + + //there's no madd_v4_v4fl for char! + lcol_out->a += (lcol2->a * tmp_weight[a]); + lcol_out->b += (lcol2->b * tmp_weight[a]); + lcol_out->g += (lcol2->g * tmp_weight[a]); + lcol_out->r += (lcol2->r * tmp_weight[a]); + } //shall we verify the indices!? - // copy for each loop directly - copy_v4_v4(BM_ELEM_CD_GET_VOID_P(l, CD_dst), weight_accu); + //there's no copy_v4_v4 for char! + lcol->a = lcol_out->a; + lcol->b = lcol_out->b; + lcol->g = lcol_out->g; + lcol->r = lcol_out->r; //end of interpolation } _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs