[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31143] branches/soc-2010-rohith291991: Important fixes to mesh extraction.
Rohith B V
rohith291991 at gmail.com
Sat Aug 7 16:54:04 CEST 2010
Revision: 31143
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31143
Author: rohith291991
Date: 2010-08-07 16:54:04 +0200 (Sat, 07 Aug 2010)
Log Message:
-----------
Important fixes to mesh extraction. Still some work left to do.
Modified Paths:
--------------
branches/soc-2010-rohith291991/intern/comiso/intern/CMesh.cpp
branches/soc-2010-rohith291991/intern/comiso/intern/comiso.cpp
branches/soc-2010-rohith291991/intern/comiso/intern/uv.cpp
branches/soc-2010-rohith291991/source/blender/modifiers/intern/MOD_quadrangulate.c
Modified: branches/soc-2010-rohith291991/intern/comiso/intern/CMesh.cpp
===================================================================
--- branches/soc-2010-rohith291991/intern/comiso/intern/CMesh.cpp 2010-08-07 12:51:51 UTC (rev 31142)
+++ branches/soc-2010-rohith291991/intern/comiso/intern/CMesh.cpp 2010-08-07 14:54:04 UTC (rev 31143)
@@ -3,6 +3,7 @@
#include <math.h>
#include "MEM_guardedalloc.h"
#include "normal_cycle.h"
+#include "Geometry"
int generateVoronoiCells(CMesh* mesh)
{
@@ -206,35 +207,80 @@
double x1,x2,y1,y2,z1,z2,x3,y3,z3;
int v1,v2,v3,v4,v5,v6;
+ Vector3d e[3],normal[2],edge;
+ double angle;
+
v1=mesh->faces[i].v[0];
v2=mesh->faces[i].v[1];
+
+ v5=mesh->faces[i].v[2];
+ v6=mesh->faces[i].v[0];
+
v3=mesh->edges[mesh->faces[i].edges[j]].v[0];
- v4=mesh->edges[mesh->faces[i].edges[j]].v[1];
- v5=mesh->faces[j].v[0];
- v6=mesh->faces[j].v[1];
+ v4=mesh->edges[mesh->faces[i].edges[j]].v[1];
+ edge[0]=mesh->verts[v4].co[0]-mesh->verts[v3].co[0];
+ edge[1]=mesh->verts[v4].co[1]-mesh->verts[v3].co[1];
+ edge[2]=mesh->verts[v4].co[2]-mesh->verts[v3].co[2];
+
+ e[1][0]=mesh->verts[v2].co[0]-mesh->verts[v1].co[0];
+ e[1][1]=mesh->verts[v2].co[1]-mesh->verts[v1].co[1];
+ e[1][2]=mesh->verts[v2].co[2]-mesh->verts[v1].co[2];
- x1=mesh->verts[v1].co[0]-mesh->verts[v2].co[0];
- y1=mesh->verts[v1].co[1]-mesh->verts[v2].co[1];
- z1=mesh->verts[v1].co[2]-mesh->verts[v2].co[2];
+ e[2][0]=mesh->verts[v2].co[0]-mesh->verts[v1].co[0];
+ e[2][1]=mesh->verts[v2].co[1]-mesh->verts[v1].co[1];
+ e[2][2]=mesh->verts[v2].co[2]-mesh->verts[v1].co[2];
+
+ e[0][0]=mesh->verts[v6].co[0]-mesh->verts[v5].co[0];
+ e[0][1]=mesh->verts[v6].co[1]-mesh->verts[v5].co[1];
+ e[0][2]=mesh->verts[v6].co[2]-mesh->verts[v5].co[2];
- x2=mesh->verts[v3].co[0]-mesh->verts[v4].co[0];
- y2=mesh->verts[v3].co[1]-mesh->verts[v4].co[1];
- z2=mesh->verts[v3].co[2]-mesh->verts[v4].co[2];
+ normal[0]=e[1].cross(e[0]);
+ normal[0].normalize() ;
- x3=mesh->verts[v5].co[0]-mesh->verts[v6].co[0];
- y3=mesh->verts[v5].co[1]-mesh->verts[v6].co[1];
- z3=mesh->verts[v5].co[2]-mesh->verts[v6].co[2];
+ v1=mesh->faces[j].v[0];
+ v2=mesh->faces[j].v[1];
+
+ v5=mesh->faces[j].v[2];
+ v6=mesh->faces[j].v[0];
+ e[1][0]=mesh->verts[v2].co[0]-mesh->verts[v1].co[0];
+ e[1][1]=mesh->verts[v2].co[1]-mesh->verts[v1].co[1];
+ e[1][2]=mesh->verts[v2].co[2]-mesh->verts[v1].co[2];
+
+ e[0][0]=mesh->verts[v6].co[0]-mesh->verts[v5].co[0];
+ e[0][1]=mesh->verts[v6].co[1]-mesh->verts[v5].co[1];
+ e[0][2]=mesh->verts[v6].co[2]-mesh->verts[v5].co[2];
+
+ normal[1]=e[1].cross(e[0]);
+ normal[1].normalize() ;
+
+ angle=acos(normal[0].dot(normal[1]));
+
+ AngleAxis<double> aa(angle, edge);
+
+ e[1]=Vector3d(aa*e[1]);
+ e[1].normalize();
+ e[2].normalize();
+
+ angle=acos(e[2].dot(e[1]));
+ int sign=1;
+ if(normal[0].dot(e[1].cross(e[2]))<0)
+ sign=-1;
+ angle=angle*sign;
+
+
+
+
//TODO check for correctness
- mesh->edges[mesh->faces[i].edges[j]].kappa=acos((x1*x2+y1*y2+z1*z2)/sqrt((x1*x1+y1*y1+z1*z1)*(x2*x2+y2*y2+z2*z2)))-acos((x3*x2+y3*y2+z3*z2)/sqrt((x3*x3+y3*y3+z3*z3)*(x2*x2+y2*y2+z2*z2)));
+ mesh->edges[mesh->faces[i].edges[j]].kappa=1;//acos((x1*x3+y1*y3+z1*z3)/sqrt((x1*x1+y1*y1+z1*z1)*(x3*x3+y3*y3+z3*z3)));
totkappa+= mesh->edges[mesh->faces[i].edges[j]].kappa;
solver.mdata[t].i=i;
solver.mdata[t].j=totface+mesh->faces[i].edges[j];
- int sign=1;
-
+ sign=1;
+
if(mesh->edges[mesh->faces[i].edges[j]].faces[0]==i)
sign=1;
else
Modified: branches/soc-2010-rohith291991/intern/comiso/intern/comiso.cpp
===================================================================
--- branches/soc-2010-rohith291991/intern/comiso/intern/comiso.cpp 2010-08-07 12:51:51 UTC (rev 31142)
+++ branches/soc-2010-rohith291991/intern/comiso/intern/comiso.cpp 2010-08-07 14:54:04 UTC (rev 31143)
@@ -44,6 +44,11 @@
b.resize( dimm);
b=_B.col(dimn-1);
_b.resize(dimm);
+
+ for(i=0;i<dimm;i++)
+ {
+ _b[i]=b[i];
+ }
}
@@ -82,6 +87,15 @@
extract_Axb( B, A, b);
+ //std::cout<<A<<"\n\n";
+
+ /*std::cout<<"[ ";
+ for(int l=0;l<b.size()-1;l++)
+ {
+ std::cout<<b[l]<<", ";
+ }
+ std::cout<<b[b.size()-1]<<" ]";*/
+
// create a constrained solver
ConstrainedSolver cs;
@@ -156,9 +170,11 @@
C.resize(_data.c,_data.n);
C.setZero();
+ //std::cout<<B<<"\n\n";
+
nnz=_data.cnnz;
- for( int k=0; k<nnz; ++k)
+for( int k=0; k<nnz; ++k)
{
int i=_data.cdata[k].i;
@@ -168,6 +184,8 @@
}
+//std::cout<<C<<"\n\n";
+
ids_to_round.resize(_data.nr);
for(int k=0;k<_data.nr;k++)
Modified: branches/soc-2010-rohith291991/intern/comiso/intern/uv.cpp
===================================================================
--- branches/soc-2010-rohith291991/intern/comiso/intern/uv.cpp 2010-08-07 12:51:51 UTC (rev 31142)
+++ branches/soc-2010-rohith291991/intern/comiso/intern/uv.cpp 2010-08-07 14:54:04 UTC (rev 31143)
@@ -972,8 +972,6 @@
for(int j=0;j<uRange-1;j++)
{
-
-
int v1,v2;
v1=vertices[j][k];
v2=vertices[j+1][k];
Modified: branches/soc-2010-rohith291991/source/blender/modifiers/intern/MOD_quadrangulate.c
===================================================================
--- branches/soc-2010-rohith291991/source/blender/modifiers/intern/MOD_quadrangulate.c 2010-08-07 12:51:51 UTC (rev 31142)
+++ branches/soc-2010-rohith291991/source/blender/modifiers/intern/MOD_quadrangulate.c 2010-08-07 14:54:04 UTC (rev 31143)
@@ -266,9 +266,9 @@
//Test code
cm.faces[3].flag |= CF_CONSTRAINED;
- cm.faces[3].theta=1.3;
- cm.faces[10].flag |= CF_CONSTRAINED;
- cm.faces[10].theta=2.35;
+ cm.faces[3].theta=0.3;
+ //cm.faces[10].flag |= CF_CONSTRAINED;
+ //cm.faces[10].theta=2.35;
/* cm.faces[25].flag |= CF_CONSTRAINED;
cm.faces[25].theta=6.3;
cm.faces[50].flag |= CF_CONSTRAINED;
@@ -323,7 +323,7 @@
mvertnew[a].co[0]=cm1->verts[a].co[0];
mvertnew[a].co[1]=cm1->verts[a].co[1];
mvertnew[a].co[2]=cm1->verts[a].co[2];
- printf("%lf %lf %lf\n",mvertnew[a].co[0],mvertnew[a].co[1],mvertnew[a].co[2]);
+ //printf("%lf %lf %lf\n",mvertnew[a].co[0],mvertnew[a].co[1],mvertnew[a].co[2]);
//printf("%f %f %f \n",mvertnew[a].co[0],mvertnew[a].co[1],mvertnew[a].co[2]);
}
@@ -339,7 +339,7 @@
//set result DerivedMesh
-// result; // <--- for now
+ //result=dm; // <--- for now
//-------------------End Tool------------------//
More information about the Bf-blender-cvs
mailing list