Revision: 39620
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39620
Author:   dan_w
Date:     2011-08-22 18:18:13 +0000 (Mon, 22 Aug 2011)
Log Message:
-----------
gpencil to bmesh tool : bug analysis and comments added

Modified Paths:
--------------
    
branches/soc-2011-avocado/blender/source/blender/bmesh/operators/primitiveops.c

Modified: 
branches/soc-2011-avocado/blender/source/blender/bmesh/operators/primitiveops.c
===================================================================
--- 
branches/soc-2011-avocado/blender/source/blender/bmesh/operators/primitiveops.c 
    2011-08-22 18:13:37 UTC (rev 39619)
+++ 
branches/soc-2011-avocado/blender/source/blender/bmesh/operators/primitiveops.c 
    2011-08-22 18:18:13 UTC (rev 39620)
@@ -690,18 +690,25 @@
 
 void bmesh_create_mesh_from_splines(BMesh *bm, BMOperator *op)
 {
+       // stroke iterators, current and next pointers
        bGPDstroke *gps, *gpsn;
+       // stroke iterators for searching, current and next pointers
        bGPDstroke *search_gps, *search_gpsn;
 
+       // various 3d positions used as temporary registers when performing 
intersection tests
        float i_vec0[3], i_vec1[3], i_vec2[3], i_vec3[3], i_vec_intersect[3], 
intersect_lambda;
 
+       // bmesh vertex pointers and edge pointer. used when creating verticies 
and edges.
+       // pointer must be retained in order to set flags, etc
        BMVert *bm_vertex = 0;
        BMVert *bm_previous = 0;
        BMVert *bm_intersect = 0;
        BMEdge *bm_edge = 0;
 
+       // for loop counters
        int i, j;
 
+       // retrieve the grease pencil frame. this is passed as a parameter and 
points to the root frame
        bGPDframe* p_frame = BMO_Get_Pnt(op, "frame");
 
        /* error checking */
@@ -729,6 +736,15 @@
 
                                for(j = 0; j < search_gps->totpoints; j++)
                                {
+                                       /*
+                                       in this scope, we are iterating every 
point in every stroke for every 
+                                       point in every stroke. This allows to 
compare each stroke segment with
+                                       every other stroke segment, for 
intersection testing.
+                                       
+                                       We are iterating every point, but we 
are interested only in every line
+                                       segment. Hence, skip the first point, 
and test each line with the points
+                                       j-1 and j.
+                                       */
                                        if(j != 0)
                                        {
 
@@ -751,11 +767,11 @@
 
                                                
if(isect_line_line_strict_v3(i_vec0, i_vec1, i_vec2, i_vec3, i_vec_intersect, 
&intersect_lambda))
                                                {
-                                                       // there is an 
intersection hence we must add an extra vertex and 2 edges rather than just one 
edge
+                                                       // there is an 
intersection hence we must add an extra vertex
                                                        bm_intersect = 
BM_Make_Vert(bm, i_vec_intersect, NULL);
                                                        BMO_SetFlag(bm, 
bm_intersect, VERT_MARK);
 
-                                                       // create edge
+                                                       // if there is already 
a vertex found on this stroke, we can also create edge
                                                        if(bm_previous)
                                                        {
                                                                bm_edge = 
BM_Make_Edge(bm, bm_intersect, bm_previous, NULL, 0);
@@ -776,6 +792,10 @@
        BMO_CallOpf(bm, "removedoubles verts=%fv dist=%f", VERT_MARK, 0.001f);
 
        // fill in faces
+       // this following line has no effect. This must be because in the bmop 
above, when welding the existing edges
+       // are destroyed and new edges are created with no flags set.
+       // dan_w todo: flag all the edges.
+       // otherwise, edgenet_fill should fill the vertex and edge net with 
faces.
        BMO_CallOpf(bm, "edgenet_fill edges=%fe", VERT_MARK);
 
        BMO_Flag_To_Slot(bm, op, "vertout", VERT_MARK, BM_VERT);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to