add margin to view fitting view-all/local-view (wasn't obvious with the models I was testing with).

This commit is contained in:
Campbell Barton 2012-11-30 06:55:36 +00:00
parent ef08e31134
commit ad2b41bc4b
4 changed files with 8 additions and 12 deletions

@ -9,6 +9,6 @@ filename = "my_script.py"
filepath = os.path.join(os.path.dirname(bpy.data.filepath), filename)
global_namespace = {"__file__": filepath, "__name__": "__main__"}
file_handle = open(filepath, 'rb')
exec(compile(file_handle.read(), filepath, 'exec'), global_namespace)
file_handle.close()
file = open(filepath, 'rb')
exec(compile(file.read(), filepath, 'exec'), global_namespace)
file.close()

@ -100,11 +100,6 @@ void ED_view3d_depth_tag_update(struct RegionView3D *rv3d);
/* Projection */
#define IS_CLIPPED 12000
/* TODO, these functions work quite differently, we should make them behave in a uniform way
* otherwise we can't be sure bugs are not added when we need to move from short->float types for eg
* - Campbell */
/* return values for ED_view3d_project_...() */
typedef enum {
V3D_PROJ_RET_OK = 0,
@ -298,6 +293,7 @@ struct BGpic *ED_view3D_background_image_new(struct View3D *v3d);
void ED_view3D_background_image_remove(struct View3D *v3d, struct BGpic *bgpic);
void ED_view3D_background_image_clear(struct View3D *v3d);
#define VIEW3D_MARGIN 1.4f
float ED_view3d_offset_distance(float mat[4][4], float ofs[3]);
float ED_view3d_grid_scale(struct Scene *scene, struct View3D *v3d, const char **grid_unit);

@ -2238,7 +2238,7 @@ static void view3d_from_minmax(bContext *C, View3D *v3d, ARegion *ar,
lens = v3d->lens;
sensor_size = DEFAULT_SENSOR_WIDTH;
}
size = ED_view3d_radius_to_persp_dist(focallength_to_fov(lens, sensor_size), size / 2.0f);
size = ED_view3d_radius_to_persp_dist(focallength_to_fov(lens, sensor_size), size / 2.0f) * VIEW3D_MARGIN;
/* do not zoom closer than the near clipping plane */
size = max_ff(size, v3d->near * 1.5f);
@ -2250,7 +2250,7 @@ static void view3d_from_minmax(bContext *C, View3D *v3d, ARegion *ar,
}
else {
/* adjust zoom so it looks nicer */
size = ED_view3d_radius_to_ortho_dist(v3d->lens, size / 2.0f);
size = ED_view3d_radius_to_ortho_dist(v3d->lens, size / 2.0f) * VIEW3D_MARGIN;
}
}
}

@ -1080,8 +1080,8 @@ static int view3d_localview_init(Main *bmain, Scene *scene, ScrArea *sa, ReportL
size = max_ff(size, v3d->near * 1.5f);
/* perspective size (we always switch out of camera view so no need to use its lens size) */
size_persp = ED_view3d_radius_to_persp_dist(focallength_to_fov(v3d->lens, DEFAULT_SENSOR_WIDTH), size / 2.0f);
size_ortho = ED_view3d_radius_to_ortho_dist(v3d->lens, size / 2.0f);
size_persp = ED_view3d_radius_to_persp_dist(focallength_to_fov(v3d->lens, DEFAULT_SENSOR_WIDTH), size / 2.0f) * VIEW3D_MARGIN;
size_ortho = ED_view3d_radius_to_ortho_dist(v3d->lens, size / 2.0f) * VIEW3D_MARGIN;
}
if (ok == TRUE) {