[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47283] branches/soc-2012-sushi/source/ blender: Check if all faces are triangle
Alexander Pinzon
apinzonf at gmail.com
Thu May 31 17:52:18 CEST 2012
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) {
More information about the Bf-blender-cvs
mailing list