[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42682] trunk/blender/source/blender: use 2d copy functions with UV's in more places.

Campbell Barton ideasman42 at gmail.com
Sat Dec 17 04:46:52 CET 2011


Revision: 42682
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42682
Author:   campbellbarton
Date:     2011-12-17 03:46:38 +0000 (Sat, 17 Dec 2011)
Log Message:
-----------
use 2d copy functions with UV's in more places.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/CCGSubSurf.c
    trunk/blender/source/blender/blenkernel/intern/CCGSubSurf.h
    trunk/blender/source/blender/blenkernel/intern/anim.c
    trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c
    trunk/blender/source/blender/editors/uvedit/uvedit_ops.c
    trunk/blender/source/blender/modifiers/intern/MOD_uvproject.c

Modified: trunk/blender/source/blender/blenkernel/intern/CCGSubSurf.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/CCGSubSurf.c	2011-12-17 02:41:53 UTC (rev 42681)
+++ trunk/blender/source/blender/blenkernel/intern/CCGSubSurf.c	2011-12-17 03:46:38 UTC (rev 42682)
@@ -218,7 +218,7 @@
 
 /***/
 
-static int VertDataEqual(float *a, float *b) {
+static int VertDataEqual(const float *a, const float *b) {
 	return a[0]==b[0] && a[1]==b[1] && a[2]==b[2];
 }
 #define VertDataZero(av)				{ float *_a = (float*) av; _a[0] = _a[1] = _a[2] = 0.0f; }
@@ -238,7 +238,7 @@
 #define NormAdd(av, bv)					{ float *_a = (float*) av, *_b = (float*) bv; _a[0]+=_b[0]; _a[1]+=_b[1]; _a[2]+=_b[2]; }
 
 
-static int _edge_isBoundary(CCGEdge *e);
+static int _edge_isBoundary(const CCGEdge *e);
 
 /***/
 
@@ -392,7 +392,7 @@
 	v->faces = CCGSUBSURF_realloc(ss, v->faces, (v->numFaces+1)*sizeof(*v->faces), v->numFaces*sizeof(*v->faces));
 	v->faces[v->numFaces++] = f;
 }
-static CCGEdge *_vert_findEdgeTo(CCGVert *v, CCGVert *vQ) {
+static CCGEdge *_vert_findEdgeTo(const CCGVert *v, const CCGVert *vQ) {
 	int i;
 	for (i=0; i<v->numEdges; i++) {
 		CCGEdge *e = v->edges[v->numEdges-1-i]; // XXX, note reverse
@@ -402,7 +402,7 @@
 	}
 	return NULL;
 }
-static int _vert_isBoundary(CCGVert *v) {
+static int _vert_isBoundary(const CCGVert *v) {
 	int i;
 	for (i=0; i<v->numEdges; i++)
 		if (_edge_isBoundary(v->edges[i]))
@@ -423,7 +423,7 @@
 	CCGSUBSURF_free(ss, v);
 }
 
-static int VERT_seam(CCGVert *v) {
+static int VERT_seam(const CCGVert *v) {
 	return ((v->flags & Vert_eSeam) != 0);
 }
 
@@ -462,7 +462,7 @@
 	e->faces = CCGSUBSURF_realloc(ss, e->faces, (e->numFaces+1)*sizeof(*e->faces), e->numFaces*sizeof(*e->faces));
 	e->faces[e->numFaces++] = f;
 }
-static int _edge_isBoundary(CCGEdge *e) {
+static int _edge_isBoundary(const CCGEdge *e) {
 	return e->numFaces<2;
 }
 
@@ -900,7 +900,7 @@
 	return eCCGError_None;
 }
 
-CCGError ccgSubSurf_syncVert(CCGSubSurf *ss, CCGVertHDL vHDL, void *vertData, int seam, CCGVert **v_r) {
+CCGError ccgSubSurf_syncVert(CCGSubSurf *ss, CCGVertHDL vHDL, const void *vertData, int seam, CCGVert **v_r) {
 	void **prevp;
 	CCGVert *v = NULL;
 	short seamflag = (seam)? Vert_eSeam: 0;
@@ -2484,13 +2484,13 @@
 
 /*** External API accessor functions ***/
 
-int ccgSubSurf_getNumVerts(CCGSubSurf *ss) {
+int ccgSubSurf_getNumVerts(const CCGSubSurf *ss) {
 	return ss->vMap->numEntries;
 }
-int ccgSubSurf_getNumEdges(CCGSubSurf *ss) {
+int ccgSubSurf_getNumEdges(const CCGSubSurf *ss) {
 	return ss->eMap->numEntries;
 }
-int ccgSubSurf_getNumFaces(CCGSubSurf *ss) {
+int ccgSubSurf_getNumFaces(const CCGSubSurf *ss) {
 	return ss->fMap->numEntries;
 }
 
@@ -2504,23 +2504,23 @@
 	return (CCGFace*) _ehash_lookup(ss->fMap, f);
 }
 
-int ccgSubSurf_getSubdivisionLevels(CCGSubSurf *ss) {
+int ccgSubSurf_getSubdivisionLevels(const CCGSubSurf *ss) {
 	return ss->subdivLevels;
 }
-int ccgSubSurf_getEdgeSize(CCGSubSurf *ss) {
+int ccgSubSurf_getEdgeSize(const CCGSubSurf *ss) {
 	return ccgSubSurf_getEdgeLevelSize(ss, ss->subdivLevels);
 }
-int ccgSubSurf_getEdgeLevelSize(CCGSubSurf *ss, int level) {
+int ccgSubSurf_getEdgeLevelSize(const CCGSubSurf *ss, int level) {
 	if (level<1 || level>ss->subdivLevels) {
 		return -1;
 	} else {
 		return 1 + (1<<level);
 	}
 }
-int ccgSubSurf_getGridSize(CCGSubSurf *ss) {
+int ccgSubSurf_getGridSize(const CCGSubSurf *ss) {
 	return ccgSubSurf_getGridLevelSize(ss, ss->subdivLevels);
 }
-int ccgSubSurf_getGridLevelSize(CCGSubSurf *ss, int level) {
+int ccgSubSurf_getGridLevelSize(const CCGSubSurf *ss, int level) {
 	if (level<1 || level>ss->subdivLevels) {
 		return -1;
 	} else {
@@ -2736,19 +2736,19 @@
 
 /*** Extern API final vert/edge/face interface ***/
 
-int ccgSubSurf_getNumFinalVerts(CCGSubSurf *ss) {
+int ccgSubSurf_getNumFinalVerts(const CCGSubSurf *ss) {
 	int edgeSize = 1 + (1<<ss->subdivLevels);
 	int gridSize = 1 + (1<<(ss->subdivLevels-1));
 	int numFinalVerts = ss->vMap->numEntries + ss->eMap->numEntries*(edgeSize-2) + ss->fMap->numEntries + ss->numGrids*((gridSize-2) + ((gridSize-2)*(gridSize-2)));
 	return numFinalVerts;
 }
-int ccgSubSurf_getNumFinalEdges(CCGSubSurf *ss) {
+int ccgSubSurf_getNumFinalEdges(const CCGSubSurf *ss) {
 	int edgeSize = 1 + (1<<ss->subdivLevels);
 	int gridSize = 1 + (1<<(ss->subdivLevels-1));
 	int numFinalEdges = ss->eMap->numEntries*(edgeSize-1) + ss->numGrids*((gridSize-1) + 2*((gridSize-2)*(gridSize-1)));
 	return numFinalEdges;
 }
-int ccgSubSurf_getNumFinalFaces(CCGSubSurf *ss) {
+int ccgSubSurf_getNumFinalFaces(const CCGSubSurf *ss) {
 	int gridSize = 1 + (1<<(ss->subdivLevels-1));
 	int numFinalFaces = ss->numGrids*((gridSize-1)*(gridSize-1));
 	return numFinalFaces;

Modified: trunk/blender/source/blender/blenkernel/intern/CCGSubSurf.h
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/CCGSubSurf.h	2011-12-17 02:41:53 UTC (rev 42681)
+++ trunk/blender/source/blender/blenkernel/intern/CCGSubSurf.h	2011-12-17 03:46:38 UTC (rev 42682)
@@ -56,7 +56,7 @@
 CCGError	ccgSubSurf_initFullSync		(CCGSubSurf *ss);
 CCGError	ccgSubSurf_initPartialSync	(CCGSubSurf *ss);
 
-CCGError	ccgSubSurf_syncVert		(CCGSubSurf *ss, CCGVertHDL vHDL, void *vertData, int seam, CCGVert **v_r);
+CCGError	ccgSubSurf_syncVert		(CCGSubSurf *ss, CCGVertHDL vHDL, const void *vertData, int seam, CCGVert **v_r);
 CCGError	ccgSubSurf_syncEdge		(CCGSubSurf *ss, CCGEdgeHDL eHDL, CCGVertHDL e_vHDL0, CCGVertHDL e_vHDL1, float crease, CCGEdge **e_r);
 CCGError	ccgSubSurf_syncFace		(CCGSubSurf *ss, CCGFaceHDL fHDL, int numVerts, CCGVertHDL *vHDLs, CCGFace **f_r);
 
@@ -84,15 +84,15 @@
 
 /***/
 
-int			ccgSubSurf_getNumVerts				(CCGSubSurf *ss);
-int			ccgSubSurf_getNumEdges				(CCGSubSurf *ss);
-int			ccgSubSurf_getNumFaces				(CCGSubSurf *ss);
+int			ccgSubSurf_getNumVerts				(const CCGSubSurf *ss);
+int			ccgSubSurf_getNumEdges				(const CCGSubSurf *ss);
+int			ccgSubSurf_getNumFaces				(const CCGSubSurf *ss);
 
-int			ccgSubSurf_getSubdivisionLevels		(CCGSubSurf *ss);
-int			ccgSubSurf_getEdgeSize				(CCGSubSurf *ss);
-int			ccgSubSurf_getEdgeLevelSize			(CCGSubSurf *ss, int level);
-int			ccgSubSurf_getGridSize				(CCGSubSurf *ss);
-int			ccgSubSurf_getGridLevelSize			(CCGSubSurf *ss, int level);
+int			ccgSubSurf_getSubdivisionLevels		(const CCGSubSurf *ss);
+int			ccgSubSurf_getEdgeSize				(const CCGSubSurf *ss);
+int			ccgSubSurf_getEdgeLevelSize			(const CCGSubSurf *ss, int level);
+int			ccgSubSurf_getGridSize				(const CCGSubSurf *ss);
+int			ccgSubSurf_getGridLevelSize			(const CCGSubSurf *ss, int level);
 
 CCGVert*	ccgSubSurf_getVert					(CCGSubSurf *ss, CCGVertHDL v);
 CCGVertHDL	ccgSubSurf_getVertVertHandle		(CCGVert *v);
@@ -135,9 +135,9 @@
 void*		ccgSubSurf_getFaceGridDataArray		(CCGSubSurf *ss, CCGFace *f, int gridIndex);
 void*		ccgSubSurf_getFaceGridData			(CCGSubSurf *ss, CCGFace *f, int gridIndex, int x, int y);
 
-int			ccgSubSurf_getNumFinalVerts		(CCGSubSurf *ss);
-int			ccgSubSurf_getNumFinalEdges		(CCGSubSurf *ss);
-int			ccgSubSurf_getNumFinalFaces		(CCGSubSurf *ss);
+int			ccgSubSurf_getNumFinalVerts		(const CCGSubSurf *ss);
+int			ccgSubSurf_getNumFinalEdges		(const CCGSubSurf *ss);
+int			ccgSubSurf_getNumFinalFaces		(const CCGSubSurf *ss);
 
 /***/
 

Modified: trunk/blender/source/blender/blenkernel/intern/anim.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/anim.c	2011-12-17 02:41:53 UTC (rev 42681)
+++ trunk/blender/source/blender/blenkernel/intern/anim.c	2011-12-17 03:46:38 UTC (rev 42682)
@@ -1143,21 +1143,17 @@
 								madd_v3_v3v3fl(dob->orco, dob->orco, orco[mv1], w);
 								madd_v3_v3v3fl(dob->orco, dob->orco, orco[mv2], w);
 								madd_v3_v3v3fl(dob->orco, dob->orco, orco[mv3], w);
-								if(mv4)
+								if (mv4) {
 									madd_v3_v3v3fl(dob->orco, dob->orco, orco[mv4], w);
+								}
 							}
 
 							if(mtface) {
-								dob->uv[0] += w*mtface[a].uv[0][0];
-								dob->uv[1] += w*mtface[a].uv[0][1];
-								dob->uv[0] += w*mtface[a].uv[1][0];
-								dob->uv[1] += w*mtface[a].uv[1][1];
-								dob->uv[0] += w*mtface[a].uv[2][0];
-								dob->uv[1] += w*mtface[a].uv[2][1];
-
-								if(mv4) {
-									dob->uv[0] += w*mtface[a].uv[3][0];
-									dob->uv[1] += w*mtface[a].uv[3][1];
+								madd_v2_v2v2fl(dob->uv, dob->uv, mtface[a].uv[0], w);
+								madd_v2_v2v2fl(dob->uv, dob->uv, mtface[a].uv[1], w);
+								madd_v2_v2v2fl(dob->uv, dob->uv, mtface[a].uv[2], w);
+								if (mv4) {
+									madd_v2_v2v2fl(dob->uv, dob->uv, mtface[a].uv[3], w);
 								}
 							}
 						}

Modified: trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c	2011-12-17 02:41:53 UTC (rev 42681)
+++ trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c	2011-12-17 03:46:38 UTC (rev 42682)
@@ -225,6 +225,7 @@
 	CCGVertHDL fverts[4];
 	EdgeHash *ehash;
 	float creaseFactor = (float)ccgSubSurf_getSubdivisionLevels(ss);
+	float uv[3]= {0.0f, 0.0f, 0.0f}; /* only first 2 values are written into */
 
 	limit[0]= limit[1]= STD_UV_CONNECT_LIMIT;
 	vmap= make_uv_vert_map(mface, tface, totface, totvert, 0, limit);
@@ -248,11 +249,8 @@
 			if (v->separate) {
 				CCGVert *ssv;
 				CCGVertHDL vhdl = SET_INT_IN_POINTER(v->f*4 + v->tfindex);
-				float uv[3];
 
-				uv[0]= (tface+v->f)->uv[v->tfindex][0];
-				uv[1]= (tface+v->f)->uv[v->tfindex][1];
-				uv[2]= 0.0f;
+				copy_v2_v2(uv, (tface+v->f)->uv[v->tfindex]);
 
 				ccgSubSurf_syncVert(ss, vhdl, uv, seam, &ssv);
 			}
@@ -359,16 +357,11 @@
 
 			for(y = 0; y < gridFaces; y++) {
 				for(x = 0; x < gridFaces; x++) {
-					float *a = faceGridData[(y + 0)*gridSize + x + 0].co;
-					float *b = faceGridData[(y + 0)*gridSize + x + 1].co;
-					float *c = faceGridData[(y + 1)*gridSize + x + 1].co;
-					float *d = faceGridData[(y + 1)*gridSize + x + 0].co;
+					copy_v2_v2(tf->uv[0], faceGridData[(y + 0)*gridSize + x + 0].co);
+					copy_v2_v2(tf->uv[1], faceGridData[(y + 1)*gridSize + x + 0].co);
+					copy_v2_v2(tf->uv[2], faceGridData[(y + 1)*gridSize + x + 1].co);
+					copy_v2_v2(tf->uv[3], faceGridData[(y + 0)*gridSize + x + 1].co);
 
-					tf->uv[0][0] = a[0]; tf->uv[0][1] = a[1];
-					tf->uv[1][0] = d[0]; tf->uv[1][1] = d[1];

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list