[Bf-committers] Teac draw patch, for the last time! I hope.

zippy trip at spymac.com
Sun Dec 26 00:58:13 CET 2004


when tuhoppu3 builds for osx start circulating I will test it out .. 
Sounds techie those which would be very cool. The number one thing I 
miss in 3d design is useful eye candy while you work, i mean not over 
dose of it but just a little bits like transparent menus and numbers 
changing to show simple info.


On Dec 25, 2004, at 7:44 PM, Campbell J Barton wrote:

> I released this into tuhopuu2 and then 2 different patchs for 
> bf-blender, for some resion it got removed (because it didnt use the 
> text theme colour???)
> anyhow- it forfills all the requirements ton and others set, so I hope 
> this is acceptable, its usefull for architectual stuff, and its not 
> intrusive (selected verts only display info- not all by default as it 
> was)
>
> - merry xmas all :)
> Cam
>
> -- 
> Campbell J Barton
>
> 133 Hope Street
> Geelong West, Victoria 3218 Australia
>
> URL:    http://www.metavr.com
> e-mail: cbarton at metavr.com
> phone: AU (03) 5229 0241
>
> Index: source/blender/blenkernel/BKE_global.h
> ===================================================================
> RCS file: 
> /cvsroot/bf-blender/blender/source/blender/blenkernel/BKE_global.h,v
> retrieving revision 1.16
> diff -u -r1.16 BKE_global.h
> --- source/blender/blenkernel/BKE_global.h	23 Sep 2004 20:52:49 
> -0000	1.16
> +++ source/blender/blenkernel/BKE_global.h	25 Dec 2004 23:33:35 -0000
> @@ -172,6 +172,11 @@
>  #define G_DRAWSEAMS     (1 << 20)
>  #define G_HIDDENEDGES   (1 << 21)
>
> +/* Teac info Drawing */
> +#define G_DRAW_EDGLEN   (1 << 22)
> +#define G_DRAW_FACEAREA (1 << 23)
> +#define G_DRAW_FACEANG  (1 << 24)
> +
>  /* G.fileflags */
>
>  #define G_AUTOPACK_BIT                  0
> Index: source/blender/blenlib/BLI_arithb.h
> ===================================================================
> RCS file: 
> /cvsroot/bf-blender/blender/source/blender/blenlib/BLI_arithb.h,v
> retrieving revision 1.12
> diff -u -r1.12 BLI_arithb.h
> --- source/blender/blenlib/BLI_arithb.h	11 Nov 2004 13:17:32 -0000	1.12
> +++ source/blender/blenlib/BLI_arithb.h	25 Dec 2004 23:33:36 -0000
> @@ -564,6 +564,13 @@
>  	short upflag
>  );
>
> +	float
> +VecAngle3(
> +	float *v1,
> +	float *v2,
> +	float *v3
> +);
> +
>  	void
>  i_lookat(
>  	float vx, float vy,
> Index: source/blender/blenlib/intern/arithb.c
> ===================================================================
> RCS file: 
> /cvsroot/bf-blender/blender/source/blender/blenlib/intern/arithb.c,v
> retrieving revision 1.15
> diff -u -r1.15 arithb.c
> --- source/blender/blenlib/intern/arithb.c	11 Nov 2004 13:47:06 
> -0000	1.15
> +++ source/blender/blenlib/intern/arithb.c	25 Dec 2004 23:33:38 -0000
> @@ -2205,6 +2205,18 @@
>  	}
>  }
>
> +float VecAngle3( float *v1, float *v2, float *v3)  /* Return the 
> angle between vec 1&2 and vec 1&3 */
> +{
> +	float vec1[3], vec2[3];
> +
> +	VecSubf(vec1, v2, v1);
> +	VecSubf(vec2, v3, v1);
> +	Normalise(vec1);
> +	Normalise(vec2);
> +	return saacos(vec1[0]*vec2[0] + vec1[1]*vec2[1] + vec1[2]*vec2[2]) * 
> 57.295779;
> +}
> +
> +
>  void euler_rot(float *beul, float ang, char axis)
>  {
>  	float eul[3], mat1[3][3], mat2[3][3], totmat[3][3];
> Index: source/blender/src/buttons_editing.c
> ===================================================================
> RCS file: 
> /cvsroot/bf-blender/blender/source/blender/src/buttons_editing.c,v
> retrieving revision 1.83
> diff -u -r1.83 buttons_editing.c
> --- source/blender/src/buttons_editing.c	14 Nov 2004 13:38:21 
> -0000	1.83
> +++ source/blender/src/buttons_editing.c	25 Dec 2004 23:33:42 -0000
> @@ -2112,20 +2112,27 @@
>  	if(uiNewPanel(curarea, block, "Mesh Tools 1", "Editing", 960, 0, 
> 318, 204)==0) return;
>
>  	uiBlockBeginAlign(block);
> -	uiDefBut(block, BUT,B_DOCENTRE, "Centre",		1091, 200, 166, 19, 0, 0, 
> 0, 0, 0, "Shifts object data to be centered about object's origin");
> -	uiDefBut(block, BUT,B_HIDE,		"Hide",			1091, 180,  77, 19, 0, 0, 0, 
> 0, 0, "Hides selected faces");
> -	uiDefBut(block, BUT,B_REVEAL,	"Reveal",		1171, 180,  86, 19, 0, 0, 
> 0, 0, 0, "Reveals selected faces");
> -	uiDefBut(block, BUT,B_SELSWAP,	"Select Swap",	1091, 160, 166, 19, 0, 
> 0, 0, 0, 0, "Selects unselected faces, and deselects selected faces");
> +	uiDefBut(block, BUT,B_DOCENTRE, "Centre",		955, 200, 320, 19, 0, 0, 
> 0, 0, 0, "Shifts object data to be centered about object's origin");
> +	uiDefBut(block, BUT,B_HIDE,		"Hide",		955, 180,  160, 19, 0, 0, 0, 
> 0, 0, "Hides selected faces");
> +	uiDefBut(block, BUT,B_REVEAL,	"Reveal",		1115, 180,  160, 19, 0, 0, 
> 0, 0, 0, "Reveals selected faces");
> +	uiDefBut(block, BUT,B_SELSWAP,	"Select Swap",		955, 160, 320, 19, 0, 
> 0, 0, 0, 0, "Selects unselected faces, and deselects selected faces");
>  	uiBlockEndAlign(block);
>
>  	uiBlockBeginAlign(block);
> -	uiDefButF(block, NUM,		  REDRAWVIEW3D, "NSize:",		1090, 131, 166, 
> 19, &editbutsize, 0.001, 2.0, 10, 0, "Sets the length to use when 
> displaying face normals");
> -	uiDefButI(block, TOG|BIT|6, REDRAWVIEW3D, "Draw 
> Normals",	1090,110,166,19, &G.f, 0, 0, 0, 0, "Displays face normals as 
> lines");
> -	uiDefButI(block, TOG|BIT|7, REDRAWVIEW3D, "Draw 
> Faces",		1090,88,166,19, &G.f, 0, 0, 0, 0, "Displays all faces as 
> shades");
> -	uiDefButI(block, TOG|BIT|18, B_DRAWEDGES, "Draw Edges", 
> 	1090,66,166,19, &G.f, 0, 0, 0, 0, "Displays selected edges using 
> hilights");
> -	uiDefButI(block, TOG|BIT|19, B_DRAWCREASES, "Draw 
> Creases",	1090,44,166,19, &G.f, 0, 0, 0, 0, "Displays creased edges 
> using hilights");
> -	uiDefButI(block, TOG|BIT|20, REDRAWVIEW3D, "Draw 
> Seams",	1090,22,166,19, &G.f, 0, 0, 0, 0, "Displays UV unwrapping 
> seams");
> -	uiDefButI(block, TOG|BIT|11, 0, "All Edges",				1090, 0,166,19, 
> &G.f, 0, 0, 0, 0, "Displays all edges in object mode without 
> optimization");
> +	uiDefButF(block, NUM,		  REDRAWVIEW3D, "NSize:",	955, 131, 150, 19, 
> &editbutsize, 0.001, 2.0, 10, 0, "Sets the length to use when 
> displaying face normals");
> +	uiDefButI(block, TOG|BIT|6, REDRAWVIEW3D, "Draw 
> Normals",	955,110,150,19, &G.f, 0, 0, 0, 0, "Displays face normals as 
> lines");
> +	uiDefButI(block, TOG|BIT|7, REDRAWVIEW3D, "Draw 
> Faces",		955,88,150,19, &G.f, 0, 0, 0, 0, "Displays all faces as 
> shades");
> +	uiDefButI(block, TOG|BIT|18, REDRAWVIEW3D, "Draw Edges", 
> 	955,66,150,19, &G.f, 0, 0, 0, 0, "Displays selected edges using 
> hilights");
> +	uiDefButI(block, TOG|BIT|19, REDRAWVIEW3D, "Draw 
> Creases",	955,44,150,19, &G.f, 0, 0, 0, 0, "Displays face normals as 
> lines");
> +	uiDefButI(block, TOG|BIT|20, REDRAWVIEW3D, "Draw 
> Seams",	955,22,150,19, &G.f, 0, 0, 0, 0, "Displays UV unwrapping 
> seams");
> +	uiDefButI(block, TOG|BIT|11, 0, "All Edges",			955, 0,150,19, &G.f, 
> 0, 0, 0, 0, "Displays all edges in object mode without optimization");
> +	uiBlockEndAlign(block);
> +	
> +	/* Teach drawing options */
> +	uiBlockBeginAlign(block);
> +	uiDefButI(block, TOG|BIT|22, REDRAWVIEW3D, "Edge 
> Length",	1125,131,150,19, &G.f, 0, 0, 0, 0, "Displays edge lengths");
> +	uiDefButI(block, TOG|BIT|23, REDRAWVIEW3D, "Face 
> Area",		1125,110,150,19, &G.f, 0, 0, 0, 0, "Displays the area of 
> faces");
> +	uiDefButI(block, TOG|BIT|24, REDRAWVIEW3D, "Face 
> Angles",	1125,88,150,19, &G.f, 0, 0, 0, 0, "Displays the angles in the 
> faces in degrees");
>  	uiBlockEndAlign(block);
>
>  }
> Index: source/blender/src/drawobject.c
> ===================================================================
> RCS file: /cvsroot/bf-blender/blender/source/blender/src/drawobject.c,v
> retrieving revision 1.137
> diff -u -r1.137 drawobject.c
> --- source/blender/src/drawobject.c	3 Dec 2004 23:22:21 -0000	1.137
> +++ source/blender/src/drawobject.c	25 Dec 2004 23:33:47 -0000
> @@ -2730,6 +2730,7 @@
>  	extern float editbutsize;	/* buttons.c */
>  	Mesh *me;
>  	MVert *mvert;
> +	EditEdge *eed;
>  	MFace *mface;
>  	DispList *dl;
>  	Material *ma;
> @@ -2737,6 +2738,10 @@
>  	float fvec[3], *f1, *f2, *f3, *f4, *extverts=NULL;
>  	int a, start, end, test, ok, optimal=0;
>
> +	/* For drawing measurements */
> +	char val[32]; /* Stores the measurement display text here */
> +	float area, col[3]; /* area of the face,  colour of the text to draw 
> */
> +	
>  	me= get_mesh(ob);
>
>  	if(ob==G.obedit || (G.obedit && ob->data==G.obedit->data)) {
> @@ -2848,9 +2853,155 @@
>  				}
>  				efa= efa->next;
>  			}
> -
> +			
>  			glEnd();
>  		}
> +		
> +		/* Draw Edge Lengths */
> +		if(G.f & G_DRAW_EDGLEN) {	/* normals */
> +      BIF_GetThemeColor3fv(TH_TEXT, col);
> +      col[0]= col[0]*0.7 + 0.3;
> +      glColor3fv(col);
> +
> +			/* Now Draw distance */
> +			glDisable(GL_DEPTH_TEST);			
> +			eed= em->edges.first;
> +			while(eed) {
> +				if(  eed->h==0 && eed->h==0 &&
> +					(eed->v1->f & 1 || eed->v2->f & 1) ) {
> +					
> +					sprintf(val,"%.3f",
> +						sqrt((eed->v2->co[0] - eed->v1->co[0])*(eed->v2->co[0] - 
> eed->v1->co[0])
> +							+ (eed->v2->co[1] - eed->v1->co[1])*(eed->v2->co[1] - 
> eed->v1->co[1])
> +							+ (eed->v2->co[2] - eed->v1->co[2])*(eed->v2->co[2] - 
> eed->v1->co[2])));
> +					
> +					glRasterPos3f( (eed->v1->co[0]+eed->v2->co[0])/2,  
> (eed->v1->co[1]+eed->v2->co[1])/2,  
> (eed->v1->co[2]+eed->v2->co[2])/2);
> +					/* Draw the length to the screen */
> +					BIF_DrawString( G.fonts, val, 0);
> +						
> +				}
> +				eed= eed->next;
> +			}
> +		}
> +			
> +		/* Draw Face Areas */
> +		if(G.f & G_DRAW_FACEAREA) {
> +      BIF_GetThemeColor3fv(TH_TEXT, col);
> +      col[1]= col[1]*0.7 + 0.3;
> +      glColor3fv(col);
> +
> +			glDisable(GL_DEPTH_TEST);
> +			efa= em->faces.first;
> +			while(efa) {
> +				if(efa->v1->h==0 && efa->v2->h==0 && efa->v3->h==0 && 
> (efa->v4==NULL || efa->v4->h==0)) {
> +					if((efa->v1->f & 1 || efa->v2->f & 1 || efa->v3->f & 1) || 
> (efa->v4!=NULL && efa->v4->f & 1) ) {
> +						/* Calculate the area of 4 vert face f1 is the area*/
> +						if (efa->v4) {
> +							area=  AreaT3Dfl( efa->v1->co, efa->v2->co, efa->v3->co);
> +							area+= AreaT3Dfl( efa->v1->co, efa->v3->co, efa->v4->co);
> +							CalcCent4f(fvec, efa->v1->co, efa->v2->co, efa->v3->co, 
> efa->v4->co);
> +						} else { /* Calculate the area of 3 verts */
> +							area = AreaT3Dfl( efa->v1->co, efa->v2->co, efa->v3->co);
> +							CalcCent3f(fvec, efa->v1->co, efa->v2->co, efa->v3->co);
> +						}
> +					sprintf(val,"%.3f", area);
> +					glRasterPos3f(fvec[0], fvec[1], fvec[2]);
> +					BIF_DrawString( G.fonts, val, 0);
> +					}
> +				}
> +				efa= efa->next;
> +			}
> +			glEnable(GL_DEPTH_TEST);
> +		}
> +		
> +		/* Draw Face Angles */
> +		if(G.f & G_DRAW_FACEANG) {
> +      BIF_GetThemeColor3fv(TH_TEXT, col);
> +      col[2]= col[2]*0.7 + 0.3;
> +      glColor3fv(col);
> +
> +			glDisable(GL_DEPTH_TEST);
> +			efa= em->faces.first;
> +			while(efa) {
> +				if(efa->v1->h==0 && efa->v2->h==0 && efa->v3->h==0 && 
> (efa->v4==NULL || efa->v4->h==0)) {
> +					
> +					/* Calculate the area of 4 vert face */
> +					if (efa->v4) {
> +						/*Vec 1*/
> +						if (efa->v1->f & 1) {
> +							sprintf(val,"%.3f", 
> VecAngle3(efa->v1->co,efa->v2->co,efa->v4->co));
> +							fvec[0] = (efa->v1->co[0]*20 + efa->v2->co[0] + efa->v3->co[0] 
> + efa->v4->co[0]) / 23;
> +							fvec[1] = (efa->v1->co[1]*20 + efa->v2->co[1] + efa->v3->co[1] 
> + efa->v4->co[1]) / 23;
> +							fvec[2] = (efa->v1->co[2]*20 + efa->v2->co[2] + efa->v3->co[2] 
> + efa->v4->co[2]) / 23;
> +							glRasterPos3f(fvec[0], fvec[1], fvec[2]);
> +							BIF_DrawString( G.fonts, val, 0);
> +						}
> +						/*Vec 2*/
> +						if (efa->v2->f & 1) {
> +							sprintf(val,"%.3f", 
> VecAngle3(efa->v2->co,efa->v1->co,efa->v3->co));
> +							fvec[0] = (efa->v2->co[0]*20 + efa->v1->co[0] + efa->v3->co[0] 
> + efa->v4->co[0]) / 23;
> +							fvec[1] = (efa->v2->co[1]*20 + efa->v1->co[1] + efa->v3->co[1] 
> + efa->v4->co[1]) / 23;
> +							fvec[2] = (efa->v2->co[2]*20 + efa->v1->co[2] + efa->v3->co[2] 
> + efa->v4->co[2]) / 23;
> +							glRasterPos3f(fvec[0], fvec[1], fvec[2]);
> +							BIF_DrawString( G.fonts, val, 0);
> +						}
> +						/*Vec 3*/
> +						if (efa->v3->f & 1) {
> +							sprintf(val,"%.3f", 
> VecAngle3(efa->v3->co,efa->v2->co,efa->v4->co));
> +							fvec[0] = (efa->v3->co[0]*20 + efa->v2->co[0] + efa->v1->co[0] 
> + efa->v4->co[0]) / 23;
> +							fvec[1] = (efa->v3->co[1]*20 + efa->v2->co[1] + efa->v1->co[1] 
> + efa->v4->co[1]) / 23;
> +							fvec[2] = (efa->v3->co[2]*20 + efa->v2->co[2] + efa->v1->co[2] 
> + efa->v4->co[2]) / 23;
> +							glRasterPos3f(fvec[0], fvec[1], fvec[2]);
> +							BIF_DrawString( G.fonts, val, 0);
> +						}
> +						/*Vec 4*/
> +						if (efa->v4->f & 1) {
> +							sprintf(val,"%.3f", 
> VecAngle3(efa->v4->co,efa->v1->co,efa->v3->co));
> +							fvec[0] = (efa->v4->co[0]*20 + efa->v2->co[0] + efa->v3->co[0] 
> + efa->v1->co[0]) / 23;
> +							fvec[1] = (efa->v4->co[1]*20 + efa->v2->co[1] + efa->v3->co[1] 
> + efa->v1->co[1]) / 23;
> +							fvec[2] = (efa->v4->co[2]*20 + efa->v2->co[2] + efa->v3->co[2] 
> + efa->v1->co[2]) / 23;
> +							glRasterPos3f(fvec[0], fvec[1], fvec[2]);
> +							BIF_DrawString( G.fonts, val, 0);
> +						}
> +					} else { /* we have 3 verts in the face */
> +					
> +						/*Vec 1*/
> +						if (efa->v1->f & 1) {
> +							sprintf(val,"%.3f", 
> VecAngle3(efa->v1->co,efa->v2->co,efa->v3->co));
> +							fvec[0] = (efa->v1->co[0]*15 + efa->v2->co[0] + 
> efa->v3->co[0]) / 17;
> +							fvec[1] = (efa->v1->co[1]*15 + efa->v2->co[1] + 
> efa->v3->co[1]) / 17;
> +							fvec[2] = (efa->v1->co[2]*15 + efa->v2->co[2] + 
> efa->v3->co[2]) / 17;
> +							glRasterPos3f(fvec[0], fvec[1], fvec[2]);
> +							BIF_DrawString( G.fonts, val, 0);
> +						}
> +						/*Vec 2*/
> +						if (efa->v2->f & 1) {
> +							sprintf(val,"%.3f", 
> VecAngle3(efa->v2->co,efa->v1->co,efa->v3->co));
> +							fvec[0] = (efa->v2->co[0]*15 + efa->v1->co[0] + 
> efa->v3->co[0]) / 17;
> +							fvec[1] = (efa->v2->co[1]*15 + efa->v1->co[1] + 
> efa->v3->co[1]) / 17;
> +							fvec[2] = (efa->v2->co[2]*15 + efa->v1->co[2] + 
> efa->v3->co[2]) / 17;
> +							glRasterPos3f(fvec[0], fvec[1], fvec[2]);
> +							BIF_DrawString( G.fonts, val, 0);
> +						}
> +						/*Vec 3*/
> +						if (efa->v3->f & 1) {
> +							sprintf(val,"%.3f", 
> VecAngle3(efa->v3->co,efa->v2->co,efa->v1->co));
> +							fvec[0] = (efa->v3->co[0]*15 + efa->v2->co[0] + 
> efa->v1->co[0]) / 17;
> +							fvec[1] = (efa->v3->co[1]*15 + efa->v2->co[1] + 
> efa->v1->co[1]) / 17;
> +							fvec[2] = (efa->v3->co[2]*15 + efa->v2->co[2] + 
> efa->v1->co[2]) / 17;
> +							glRasterPos3f(fvec[0], fvec[1], fvec[2]);
> +							BIF_DrawString( G.fonts, val, 0);
> +						}
> +					}
> +				}
> +			efa= efa->next;
> +			}
> +		glEnable(GL_DEPTH_TEST);
> +		}
> +		
> +  		
> +		
> +		
>  	}
>  	else { /* Object mode draw */
>  		
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at projects.blender.org
> http://projects.blender.org/mailman/listinfo/bf-committers



More information about the Bf-committers mailing list