Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2011-04-15 16:08:17 +0400
committerCampbell Barton <ideasman42@gmail.com>2011-04-15 16:08:17 +0400
commit7f598451fca43d251ed4c0d0ba19239ad2e351f0 (patch)
tree6e3dbd25a8e1a19945637c6cca80e308a982634c /source/blender/blenkernel
parent1fc9fabfbf3e3688d66264457abfa7df125fc1eb (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.h1
-rw-r--r--source/blender/blenkernel/intern/object.c22
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);