Ok its no my place to comment, but why not use the underlying tessfaces 
structure, instead of using the top structure, that way the user don't 
have to tesselate their mesh by hand, and granted most scanned models 
are tris, but saying "tri's only" really limits the usability of this tool

On 01/06/12 01:52, Alexander Pinzon wrote:
> Revision: 47283
>            
> http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47283
> Author:   apinzonf
> Date:     2012-05-31 15:52:18 +0000 (Thu, 31 May 2012)
> Log Message:
> -----------
>   Check if all faces are triangle
>
> Modified Paths:
> --------------
>      
> branches/soc-2012-sushi/source/blender/bmesh/operators/bmo_smooth_laplacian.c
>      branches/soc-2012-sushi/source/blender/editors/mesh/editmesh_tools.c
>
> Modified: 
> branches/soc-2012-sushi/source/blender/bmesh/operators/bmo_smooth_laplacian.c
> ===================================================================
> --- 
> branches/soc-2012-sushi/source/blender/bmesh/operators/bmo_smooth_laplacian.c 
>     2012-05-31 15:37:44 UTC (rev 47282)
> +++ 
> branches/soc-2012-sushi/source/blender/bmesh/operators/bmo_smooth_laplacian.c 
>     2012-05-31 15:52:18 UTC (rev 47283)
> @@ -59,6 +59,7 @@
>       NLContext *context;
>       float lambda = BMO_slot_float_get(op, "lambda");
>       float we;
> +     int i;
>
>       init_index(bm);
>
> @@ -69,8 +70,13 @@
>               nlSolverParameteri(NL_NB_ROWS, bm->totvert);
>               nlSolverParameteri(NL_NB_RIGHT_HAND_SIDES, 3);
>               nlBegin(NL_SYSTEM);
> +             
> +             for(i=0; i<bm->totvert; i++){
> +                     nlLockVariable(i);
> +             }
>               BMO_ITER (v,&siter, bm, op, "verts", BM_VERT) {
>                       m_vertex_id = BM_elem_index_get(v);
> +                     nlUnlockVariable(m_vertex_id);
>                       nlSetVariable(0,m_vertex_id, v->co[0]);
>                       nlSetVariable(1,m_vertex_id, v->co[1]);
>                       nlSetVariable(2,m_vertex_id, v->co[2]);
> @@ -148,10 +154,8 @@
>                       int vc_id = BM_elem_index_get(vf[vc]);
>                       wa = lambda*cotan_weight(vf[vb]->co, vf[vc]->co, 
> vf[va]->co);
>                       nlMatrixAdd(vid, vc_id, -wa);
> -                     //nlMatrixAdd(vid, vid, wa);
>                       wa = lambda*cotan_weight(vf[vc]->co, vf[va]->co, 
> vf[vb]->co);
>                       nlMatrixAdd(vid, vb_id, -wa);
> -                     //nlMatrixAdd(vid, vid, wa);
>               }
>       }
>   }
>
> Modified: branches/soc-2012-sushi/source/blender/editors/mesh/editmesh_tools.c
> ===================================================================
> --- branches/soc-2012-sushi/source/blender/editors/mesh/editmesh_tools.c      
> 2012-05-31 15:37:44 UTC (rev 47282)
> +++ branches/soc-2012-sushi/source/blender/editors/mesh/editmesh_tools.c      
> 2012-05-31 15:52:18 UTC (rev 47283)
> @@ -1604,6 +1604,23 @@
>       int i, repeat;
>       float clipdist = 0.0f;
>       float lambda = 0.1f;
> +     BMIter fiter;
> +     BMIter viter;
> +     BMFace *f;
> +     BMVert *v;
> +     int count;
> +     
> +     /* Check if all faces are triangles     */
> +     BM_ITER_MESH (f,&fiter, em->bm, BM_FACES_OF_MESH) {
> +             count = 0;
> +             BM_ITER_ELEM(v,&viter, f, BM_VERTS_OF_FACE){
> +                     count = count + 1;
> +             }
> +             if(count>3){
> +                     BKE_report(op->reports, RPT_WARNING, "Selected faces 
> must be triangles");
> +                     return OPERATOR_CANCELLED;
> +             }
> +     }
>
>       /* mirror before smooth */
>       if (((Mesh *)obedit->data)->editflag&  ME_EDIT_MIRROR_X) {
>
> _______________________________________________
> Bf-blender-cvs mailing list
> [email protected]
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>

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

Reply via email to