[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