[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32006] trunk/blender/source/blender/ editors/space_view3d: fix for object centers size flickering when the view is far from the center (1000 or more units).
Campbell Barton
ideasman42 at gmail.com
Sun Sep 19 08:41:45 CEST 2010
Revision: 32006
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32006
Author: campbellbarton
Date: 2010-09-19 08:41:44 +0200 (Sun, 19 Sep 2010)
Log Message:
-----------
fix for object centers size flickering when the view is far from the center (1000 or more units).
Modified Paths:
--------------
trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
trunk/blender/source/blender/editors/space_view3d/view3d_intern.h
trunk/blender/source/blender/editors/space_view3d/view3d_view.c
Modified: trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_draw.c 2010-09-18 21:04:33 UTC (rev 32005)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_draw.c 2010-09-19 06:41:44 UTC (rev 32006)
@@ -1979,20 +1979,18 @@
/* calculate pixelsize factor once, is used for lamps and obcenters */
{
- float len1, len2, vec[3];
+ rv3d->pixsize= 2.0f;
- copy_v3_v3(vec, rv3d->persinv[0]);
- len1= normalize_v3(vec);
- copy_v3_v3(vec, rv3d->persinv[1]);
- len2= normalize_v3(vec);
-
- rv3d->pixsize= 2.0f*(len1>len2?len1:len2);
-
+ if(view3d_is_ortho(v3d, rv3d)) {
+ float len1= len_v3(rv3d->persinv[0]);
+ float len2= len_v3(rv3d->persinv[1]);
+ rv3d->pixsize *= MAX2(len1, len2);
+ }
+
/* correct for window size */
- if(ar->winx > ar->winy) rv3d->pixsize/= (float)ar->winx;
- else rv3d->pixsize/= (float)ar->winy;
+ rv3d->pixsize/= (float)MAX2(ar->winx, ar->winy);
}
-
+
/* set for opengl */
glMatrixMode(GL_PROJECTION);
glLoadMatrixf(rv3d->winmat);
Modified: trunk/blender/source/blender/editors/space_view3d/view3d_intern.h
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_intern.h 2010-09-18 21:04:33 UTC (rev 32005)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_intern.h 2010-09-19 06:41:44 UTC (rev 32006)
@@ -141,6 +141,7 @@
/* view3d_view.c */
void view3d_settings_from_ob(struct Object *ob, float *ofs, float *quat, float *dist, float *lens);
+int view3d_is_ortho(View3D *v3d, RegionView3D *rv3d);
void VIEW3D_OT_smoothview(struct wmOperatorType *ot);
void VIEW3D_OT_setcameratoview(struct wmOperatorType *ot);
Modified: trunk/blender/source/blender/editors/space_view3d/view3d_view.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_view.c 2010-09-18 21:04:33 UTC (rev 32005)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_view.c 2010-09-19 06:41:44 UTC (rev 32006)
@@ -2722,3 +2722,7 @@
}
}
+int view3d_is_ortho(View3D *v3d, RegionView3D *rv3d)
+{
+ return (rv3d->persp == RV3D_ORTHO || (v3d->camera && ((Camera *)v3d->camera->data)->type == CAM_ORTHO));
+}
More information about the Bf-blender-cvs
mailing list