diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-04-15 16:08:17 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-04-15 16:08:17 +0400 |
commit | 7f598451fca43d251ed4c0d0ba19239ad2e351f0 (patch) | |
tree | 6e3dbd25a8e1a19945637c6cca80e308a982634c /source/blender/blenkernel | |
parent | 1fc9fabfbf3e3688d66264457abfa7df125fc1eb (diff) |
fix [#26906] Panorama Button (Camera Data Properties)
- render check for ortho/panorama combination wasn't working since the flags were not initialized at the time of checking.
- disable panorama button in ortho mode.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_object.h | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/object.c | 22 |
2 files changed, 17 insertions, 6 deletions
diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h index cacfa702f7f..fe757b65970 100644 --- a/source/blender/blenkernel/BKE_object.h +++ b/source/blender/blenkernel/BKE_object.h @@ -138,6 +138,7 @@ struct KeyBlock *object_insert_shape_key(struct Scene *scene, struct Object *ob, int object_is_modified(struct Scene *scene, struct Object *ob); +void object_camera_mode(struct RenderData *rd, struct Object *camera); void object_camera_matrix( struct RenderData *rd, struct Object *camera, int winx, int winy, short field_second, float winmat[][4], struct rctf *viewplane, float *clipsta, float *clipend, float *lens, float *ycor, diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 56a209eca60..58d8cde7cb3 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -2818,6 +2818,16 @@ int object_insert_ptcache(Object *ob) return i; } +void object_camera_mode(RenderData *rd, Object *camera) +{ + rd->mode &= ~(R_ORTHO|R_PANORAMA); + if(camera && camera->type==OB_CAMERA) { + Camera *cam= camera->data; + if(cam->type == CAM_ORTHO) rd->mode |= R_ORTHO; + if(cam->flag & CAM_PANORAMA) rd->mode |= R_PANORAMA; + } +} + /* 'lens' may be set for envmap only */ void object_camera_matrix( RenderData *rd, Object *camera, int winx, int winy, short field_second, @@ -2827,8 +2837,7 @@ void object_camera_matrix( Camera *cam=NULL; float pixsize; float shiftx=0.0, shifty=0.0, winside, viewfac; - - rd->mode &= ~(R_ORTHO|R_PANORAMA); + short is_ortho= FALSE; /* question mark */ (*ycor)= rd->yasp / rd->xasp; @@ -2838,8 +2847,9 @@ void object_camera_matrix( if(camera->type==OB_CAMERA) { cam= camera->data; - if(cam->type==CAM_ORTHO) rd->mode |= R_ORTHO; - if(cam->flag & CAM_PANORAMA) rd->mode |= R_PANORAMA; + if(cam->type == CAM_ORTHO) { + is_ortho= TRUE; + } /* solve this too... all time depending stuff is in convertblender.c? * Need to update the camera early because it's used for projection matrices @@ -2879,7 +2889,7 @@ void object_camera_matrix( } /* ortho only with camera available */ - if(cam && rd->mode & R_ORTHO) { + if(cam && is_ortho) { if(rd->xasp*winx >= rd->yasp*winy) { viewfac= winx; } @@ -2922,7 +2932,7 @@ void object_camera_matrix( (*viewdx)= pixsize; (*viewdy)= (*ycor) * pixsize; - if(rd->mode & R_ORTHO) + if(is_ortho) orthographic_m4(winmat, viewplane->xmin, viewplane->xmax, viewplane->ymin, viewplane->ymax, *clipsta, *clipend); else perspective_m4(winmat, viewplane->xmin, viewplane->xmax, viewplane->ymin, viewplane->ymax, *clipsta, *clipend); |