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

Reply via email to