diff options
-rw-r--r-- | source/blender/editors/space_view3d/view3d_draw.c | 20 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_intern.h | 1 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/view3d_view.c | 4 |
3 files changed, 14 insertions, 11 deletions
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index fa394ff708a..801baae78c3 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -1979,20 +1979,18 @@ static void view3d_main_area_setup_view(Scene *scene, View3D *v3d, ARegion *ar, /* calculate pixelsize factor once, is used for lamps and obcenters */ { - float len1, len2, vec[3]; - - 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); + rv3d->pixsize= 2.0f; + 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); diff --git a/source/blender/editors/space_view3d/view3d_intern.h b/source/blender/editors/space_view3d/view3d_intern.h index 7a45a43ddd4..4065b159ccf 100644 --- a/source/blender/editors/space_view3d/view3d_intern.h +++ b/source/blender/editors/space_view3d/view3d_intern.h @@ -141,6 +141,7 @@ void VIEW3D_OT_select_lasso(struct wmOperatorType *ot); /* 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); diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index 6c35b8a7bea..6a3c121ce4b 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -2722,3 +2722,7 @@ void view3d_align_axis_to_vector(View3D *v3d, RegionView3D *rv3d, int axisidx, f } } +int view3d_is_ortho(View3D *v3d, RegionView3D *rv3d) +{ + return (rv3d->persp == RV3D_ORTHO || (v3d->camera && ((Camera *)v3d->camera->data)->type == CAM_ORTHO)); +} |