[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31048] branches/soc-2010-rohith291991: Additions to quadrangulated mesh extraction.

Rohith B V rohith291991 at gmail.com
Wed Aug 4 18:58:47 CEST 2010


Revision: 31048
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31048
Author:   rohith291991
Date:     2010-08-04 18:58:47 +0200 (Wed, 04 Aug 2010)

Log Message:
-----------
Additions to quadrangulated mesh extraction.

Modified Paths:
--------------
    branches/soc-2010-rohith291991/intern/comiso/extern/uv.h
    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/extern/uv.h
===================================================================
--- branches/soc-2010-rohith291991/intern/comiso/extern/uv.h	2010-08-04 16:57:24 UTC (rev 31047)
+++ branches/soc-2010-rohith291991/intern/comiso/extern/uv.h	2010-08-04 16:58:47 UTC (rev 31048)
@@ -11,6 +11,7 @@
 	void mi_quad_param(HMesh *hm);
 	//Copy mesh
 	void copyHC(HMesh *hm, CMesh *cm);
+	CMesh* extractMesh(HMesh *hm);
 
 #ifdef __cplusplus
 	}

Modified: branches/soc-2010-rohith291991/intern/comiso/intern/uv.cpp
===================================================================
--- branches/soc-2010-rohith291991/intern/comiso/intern/uv.cpp	2010-08-04 16:57:24 UTC (rev 31047)
+++ branches/soc-2010-rohith291991/intern/comiso/intern/uv.cpp	2010-08-04 16:58:47 UTC (rev 31048)
@@ -389,6 +389,7 @@
 
 		}
 	h/=totedge;
+//	h*=factor;
 	// std::cout<<h<<"\n";
 	double hh = h * h ;
 
@@ -728,3 +729,134 @@
 
 	}
 
+
+	CMesh* extractMesh(HMesh *hm)
+		
+		{
+
+		CMesh* result;
+
+		
+		for (int i=0;i<hm->numFaces;i++)
+			{
+
+			double u[3];
+			double v[3];
+			double p[3][3];
+			
+			HEdge *hi=hm->faces[i].edge;
+			
+			for(int j=0;j<3;j++)
+				{
+			u[0]=hi->u;
+			v[0]=hi->v;
+			p[j][0]=hi->vertex->co[0];
+			p[j][1]=hi->vertex->co[1];
+			p[j][2]=hi->vertex->co[2];
+			hi=hi->next;
+
+				}
+			
+			double minu,maxu,minv,maxv;
+			int uRange=0;
+			int vRange=0;
+			int uStart=0;
+			int vStart=0;
+
+			minu=maxu=hi->u;
+			minv=maxv=hi->v;
+
+			for(int j=0;j<3;j++)
+				{
+				if(u[j]<minu)
+					{
+					minu=u[j];
+					}
+				if(u[j]<minv)
+					{
+					minv=v[j];
+					}
+				if(v[j]>maxu)
+					{
+					maxu=u[j];
+					}
+				if(v[j]>maxv)
+					{
+					maxv=v[j];
+					}
+
+
+				}
+			if((minu-(int)minu)<1e-10)
+			uStart=minu;
+			else
+				uStart=(int)(minu+1);
+
+			if((minv-(int)minv)<1e-10)
+			vStart=minv;
+			else
+			vStart=(int)(minv+1);
+
+
+			uRange=(int)(maxu)-uStart;
+			if(uRange<0)
+				uRange=0;
+			vRange=(int)(maxv)-vStart;
+			if(vRange<0)
+				vRange=0;
+
+	//		printf("minu: %lf maxu: %lf minv: %lf maxv: %lf uStart: %d uRange: %d vStart: %d vRange: %d\n",minu,maxu,minv,maxv,uStart,uRange,vStart,vRange);
+
+			
+
+        //Ax*u1+Bx*v1+Cx=x1
+		//Ax*u2+Bx*v2+Cx=x2
+		//Ax*u3+Bx*v3+Cx=x3
+			//solve for Ax Bx Cx
+			//repeat for y,z
+
+		double A[3],B[3],C[3];
+		double P,R,T,S,Q,U,det,idet;
+
+		for(int j=0;j<3;j++)
+			{
+		P=u[0]-u[1]; Q=v[0]-v[1];
+		R=u[0]-u[2]; S=v[0]-v[2];
+		T=p[j][0]-p[j][1]; U=p[j][0]-p[j][2];
+
+
+			det=P*S-R*Q;
+idet=1/det;
+A[j]=(T*S-U*Q)*idet;
+B[j]=(P*U-R*T)*idet;
+C[j]=p[j][0]-A[j]*p[j][0]-B[j]*p[j][0];
+			}
+
+		//Take care of all internal points
+
+		for(int j=uStart;j<uRange;j++)
+			{
+			for(int k=vStart;k<vRange;k++)
+				{
+				double x,y,z;
+
+				//Geometric coordinate of point
+				x=A[0]*j+B[0]*k+C[0];
+				y=A[1]*j+B[1]*k+C[1];
+				z=A[2]*j+B[2]*k+C[2];	
+
+				//Add point to CMesh
+				//Add relevant edge connectivities to CMesh
+				// Include points where edges meet triangle border
+
+								
+				}
+			}
+
+
+			
+			}
+		
+		return result;
+		
+		}

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-04 16:57:24 UTC (rev 31047)
+++ branches/soc-2010-rohith291991/source/blender/modifiers/intern/MOD_quadrangulate.c	2010-08-04 16:58:47 UTC (rev 31048)
@@ -297,13 +297,14 @@
 
 						mvert[a].flag =0;
 						}
+					
 
 					//Switch to half edge DS for much easier parametrization
 					//u v parametrization
 					copyHC(&hm,&cm);
 					mi_quad_param(&hm);
+					extractMesh(&hm);
 
-
 					//set result DerivedMesh
 					result=dm; // <--- for now
 





More information about the Bf-blender-cvs mailing list