Revision: 30761 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=30761 Author: campbellbarton Date: 2010-07-26 20:20:20 +0200 (Mon, 26 Jul 2010)
Log Message: ----------- [#23008] Wrong numbers in Edge Length - tooltips didnt say how to get global values. - save a vector addition per vertex when drawing stats by using mul_mat3_m4_v3() instead of mul_m4_v3() Modified Paths: -------------- trunk/blender/source/blender/blenlib/intern/math_matrix.c trunk/blender/source/blender/editors/space_view3d/drawobject.c trunk/blender/source/blender/makesrna/intern/rna_mesh.c Modified: trunk/blender/source/blender/blenlib/intern/math_matrix.c =================================================================== --- trunk/blender/source/blender/blenlib/intern/math_matrix.c 2010-07-26 17:46:10 UTC (rev 30760) +++ trunk/blender/source/blender/blenlib/intern/math_matrix.c 2010-07-26 18:20:20 UTC (rev 30761) @@ -309,6 +309,7 @@ in[2]= x*mat[0][2] + y*mat[1][2] + mat[2][2]*vec[2] + mat[3][2]; } +/* same as mul_m4_v3() but doesnt apply translation component */ void mul_mat3_m4_v3(float mat[][4], float *vec) { float x,y; Modified: trunk/blender/source/blender/editors/space_view3d/drawobject.c =================================================================== --- trunk/blender/source/blender/editors/space_view3d/drawobject.c 2010-07-26 17:46:10 UTC (rev 30760) +++ trunk/blender/source/blender/editors/space_view3d/drawobject.c 2010-07-26 18:20:20 UTC (rev 30761) @@ -2082,13 +2082,15 @@ Mesh *me= ob->data; EditEdge *eed; EditFace *efa; - float v1[3], v2[3], v3[3], v4[3], x, y, z; + float v1[3], v2[3], v3[3], v4[3], vmid[3]; float fvec[3]; char val[32]; /* Stores the measurement display text here */ char conv_float[5]; /* Use a float conversion matching the grid size */ float area, col[3]; /* area of the face, color of the text to draw */ float grid= unit->system ? unit->scale_length : v3d->grid; - int do_split= unit->flag & USER_UNIT_OPT_SPLIT; + const int do_split= unit->flag & USER_UNIT_OPT_SPLIT; + const int do_global= v3d->flag & V3D_GLOBAL_STATS; + const int do_moving= G.moving; if(v3d->flag2 & V3D_RENDER_OVERRIDE) return; @@ -2121,24 +2123,22 @@ for(eed= em->edges.first; eed; eed= eed->next) { /* draw non fgon edges, or selected edges, or edges next to selected verts while draging */ - if((eed->h != EM_FGON) && ((eed->f & SELECT) || (G.moving && ((eed->v1->f & SELECT) || (eed->v2->f & SELECT)) ))) { - VECCOPY(v1, eed->v1->co); - VECCOPY(v2, eed->v2->co); - - x= 0.5f*(v1[0]+v2[0]); - y= 0.5f*(v1[1]+v2[1]); - z= 0.5f*(v1[2]+v2[2]); - - if(v3d->flag & V3D_GLOBAL_STATS) { - mul_m4_v3(ob->obmat, v1); - mul_m4_v3(ob->obmat, v2); + if((eed->h != EM_FGON) && ((eed->f & SELECT) || (do_moving && ((eed->v1->f & SELECT) || (eed->v2->f & SELECT)) ))) { + copy_v3_v3(v1, eed->v1->co); + copy_v3_v3(v2, eed->v2->co); + + interp_v3_v3v3(vmid, v1, v2, 0.5f); + + if(do_global) { + mul_mat3_m4_v3(ob->obmat, v1); + mul_mat3_m4_v3(ob->obmat, v2); } if(unit->system) bUnit_AsString(val, sizeof(val), len_v3v3(v1, v2)*unit->scale_length, 3, unit->system, B_UNIT_LENGTH, do_split, FALSE); else sprintf(val, conv_float, len_v3v3(v1, v2)); - view3d_cached_text_draw_add(x, y, z, val, 0, 0); + view3d_cached_text_draw_add(vmid[0], vmid[1], vmid[2], val, 0, 0); } } } @@ -2153,18 +2153,18 @@ glColor3fv(col); for(efa= em->faces.first; efa; efa= efa->next) { - if((efa->f & SELECT)) { // XXX || (G.moving && faceselectedOR(efa, SELECT)) ) { - VECCOPY(v1, efa->v1->co); - VECCOPY(v2, efa->v2->co); - VECCOPY(v3, efa->v3->co); + if((efa->f & SELECT)) { // XXX || (do_moving && faceselectedOR(efa, SELECT)) ) { + copy_v3_v3(v1, efa->v1->co); + copy_v3_v3(v2, efa->v2->co); + copy_v3_v3(v3, efa->v3->co); if (efa->v4) { - VECCOPY(v4, efa->v4->co); + copy_v3_v3(v4, efa->v4->co); } - if(v3d->flag & V3D_GLOBAL_STATS) { - mul_m4_v3(ob->obmat, v1); - mul_m4_v3(ob->obmat, v2); - mul_m4_v3(ob->obmat, v3); - if (efa->v4) mul_m4_v3(ob->obmat, v4); + if(do_global) { + mul_mat3_m4_v3(ob->obmat, v1); + mul_mat3_m4_v3(ob->obmat, v2); + mul_mat3_m4_v3(ob->obmat, v3); + if (efa->v4) mul_mat3_m4_v3(ob->obmat, v4); } if (efa->v4) @@ -2192,20 +2192,20 @@ glColor3fv(col); for(efa= em->faces.first; efa; efa= efa->next) { - VECCOPY(v1, efa->v1->co); - VECCOPY(v2, efa->v2->co); - VECCOPY(v3, efa->v3->co); + copy_v3_v3(v1, efa->v1->co); + copy_v3_v3(v2, efa->v2->co); + copy_v3_v3(v3, efa->v3->co); if(efa->v4) { - VECCOPY(v4, efa->v4->co); + copy_v3_v3(v4, efa->v4->co); } else { - VECCOPY(v4, v3); + copy_v3_v3(v4, v3); } - if(v3d->flag & V3D_GLOBAL_STATS) { - mul_m4_v3(ob->obmat, v1); - mul_m4_v3(ob->obmat, v2); - mul_m4_v3(ob->obmat, v3); - mul_m4_v3(ob->obmat, v4); + if(do_global) { + mul_mat3_m4_v3(ob->obmat, v1); + mul_mat3_m4_v3(ob->obmat, v2); + mul_mat3_m4_v3(ob->obmat, v3); + mul_mat3_m4_v3(ob->obmat, v4); /* intentionally executed even for tri's */ } e1= efa->e1; @@ -2215,19 +2215,19 @@ /* Calculate the angles */ - if( (e4->f & e1->f & SELECT) || (G.moving && (efa->v1->f & SELECT)) ) { + if( (e4->f & e1->f & SELECT) || (do_moving && (efa->v1->f & SELECT)) ) { /* Vec 1 */ sprintf(val,"%.3f", RAD2DEG(angle_v3v3v3(v4, v1, v2))); interp_v3_v3v3(fvec, efa->cent, efa->v1->co, 0.8f); view3d_cached_text_draw_add(fvec[0], fvec[1], fvec[2], val, 0, 0); } - if( (e1->f & e2->f & SELECT) || (G.moving && (efa->v2->f & SELECT)) ) { + if( (e1->f & e2->f & SELECT) || (do_moving && (efa->v2->f & SELECT)) ) { /* Vec 2 */ sprintf(val,"%.3f", RAD2DEG(angle_v3v3v3(v1, v2, v3))); interp_v3_v3v3(fvec, efa->cent, efa->v2->co, 0.8f); view3d_cached_text_draw_add(fvec[0], fvec[1], fvec[2], val, 0, 0); } - if( (e2->f & e3->f & SELECT) || (G.moving && (efa->v3->f & SELECT)) ) { + if( (e2->f & e3->f & SELECT) || (do_moving && (efa->v3->f & SELECT)) ) { /* Vec 3 */ if(efa->v4) sprintf(val,"%.3f", RAD2DEG(angle_v3v3v3(v2, v3, v4))); @@ -2238,7 +2238,7 @@ } /* Vec 4 */ if(efa->v4) { - if( (e3->f & e4->f & SELECT) || (G.moving && (efa->v4->f & SELECT)) ) { + if( (e3->f & e4->f & SELECT) || (do_moving && (efa->v4->f & SELECT)) ) { sprintf(val,"%.3f", RAD2DEG(angle_v3v3v3(v3, v4, v1))); interp_v3_v3v3(fvec, efa->cent, efa->v4->co, 0.8f); view3d_cached_text_draw_add(fvec[0], fvec[1], fvec[2], val, 0, 0); Modified: trunk/blender/source/blender/makesrna/intern/rna_mesh.c =================================================================== --- trunk/blender/source/blender/makesrna/intern/rna_mesh.c 2010-07-26 17:46:10 UTC (rev 30760) +++ trunk/blender/source/blender/makesrna/intern/rna_mesh.c 2010-07-26 18:20:20 UTC (rev 30761) @@ -1847,17 +1847,17 @@ prop= RNA_def_property(srna, "draw_edge_length", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAW_EDGELEN); - RNA_def_property_ui_text(prop, "Edge Length", "Displays selected edge lengths"); + RNA_def_property_ui_text(prop, "Edge Length", "Displays selected edge lengths, Using global values when set in the transform panel"); RNA_def_property_update(prop, 0, "rna_Mesh_update_draw"); prop= RNA_def_property(srna, "draw_edge_angle", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAW_EDGEANG); - RNA_def_property_ui_text(prop, "Edge Angles", "Displays the angles in the selected edges in degrees"); + RNA_def_property_ui_text(prop, "Edge Angles", "Displays the angles in the selected edges in degrees, Using global values when set in the transform panel"); RNA_def_property_update(prop, 0, "rna_Mesh_update_draw"); prop= RNA_def_property(srna, "draw_face_area", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAW_FACEAREA); - RNA_def_property_ui_text(prop, "Face Area", "Displays the area of selected faces"); + RNA_def_property_ui_text(prop, "Face Area", "Displays the area of selected faces, Using global values when set in the transform panel"); RNA_def_property_update(prop, 0, "rna_Mesh_update_draw"); /* editflag */ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs