[Bf-blender-cvs] [8d4c498] multiview: De-duplicate some logic + make comment more clear + revert unintented change from master

Dalai Felinto noreply at git.blender.org
Thu Sep 18 14:35:02 CEST 2014


Commit: 8d4c498cb8ac310e84b3d4f70d93fd8604962ece
Author: Dalai Felinto
Date:   Thu Sep 18 12:32:06 2014 +0200
Branches: multiview
https://developer.blender.org/rB8d4c498cb8ac310e84b3d4f70d93fd8604962ece

De-duplicate some logic + make comment more clear + revert unintented
change from master

===================================================================

M	source/blender/blenkernel/BKE_camera.h
M	source/blender/blenkernel/intern/camera.c
M	source/blender/blenkernel/intern/image.c
M	source/blender/editors/space_view3d/space_view3d.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_camera.h b/source/blender/blenkernel/BKE_camera.h
index 0a86d7f..916e494 100644
--- a/source/blender/blenkernel/BKE_camera.h
+++ b/source/blender/blenkernel/BKE_camera.h
@@ -122,7 +122,7 @@ bool BKE_camera_view_frame_fit_to_scene(struct Scene *scene, struct View3D *v3d,
                                         float r_co[3]);
 
 struct Object *BKE_camera_multiview_advanced(struct Scene *scene, struct RenderData *rd, struct Object *camera, const char *suffix);
-void BKE_camera_multiview_basic(struct Object *camera, const bool left);
+void BKE_camera_multiview_basic(struct Object *camera, const bool is_left);
 void BKE_camera_stereo_matrices(struct Object *camera, float r_viewmat[4][4], float *r_shift, const bool is_left);
 
 #ifdef __cplusplus
diff --git a/source/blender/blenkernel/intern/camera.c b/source/blender/blenkernel/intern/camera.c
index 777c2c6..8fe47a5 100644
--- a/source/blender/blenkernel/intern/camera.c
+++ b/source/blender/blenkernel/intern/camera.c
@@ -603,7 +603,7 @@ bool BKE_camera_view_frame_fit_to_scene(Scene *scene, struct View3D *v3d, Object
 }
 
 /* transforms the camera matrix to the correct stereo eye to be rendered */
-void BKE_camera_multiview_basic(Object *camera, const bool left)
+void BKE_camera_multiview_basic(Object *camera, const bool is_left)
 {
 	Camera *data = (Camera *)camera->data;
 	float *r_shift = &data->shiftx;
@@ -623,8 +623,8 @@ void BKE_camera_multiview_basic(Object *camera, const bool left)
 	convergence_mode = data->stereo.convergence_mode;
 	pivot = data->stereo.pivot;
 
-	if (((pivot == CAM_S3D_PIVOT_LEFT) && left) ||
-	    ((pivot == CAM_S3D_PIVOT_RIGHT) && !left))
+	if (((pivot == CAM_S3D_PIVOT_LEFT) && is_left) ||
+	    ((pivot == CAM_S3D_PIVOT_RIGHT) && !is_left))
 	{
 		return;
 	}
@@ -632,7 +632,7 @@ void BKE_camera_multiview_basic(Object *camera, const bool left)
 	if (pivot == CAM_S3D_PIVOT_CENTER)
 		fac = 0.5f;
 
-	fac_signed = left ? fac : -fac;
+	fac_signed = is_left ? fac : -fac;
 
 	/* rotation */
 	if (convergence_mode == CAM_S3D_TOE) {
@@ -669,6 +669,7 @@ void BKE_camera_stereo_matrices(Object *camera, float r_viewmat[4][4], float *r_
 	float tmpviewmat[4][4];
 	float transmat[4][4];
 	float fac = 1.0f;
+	float fac_signed;
 
 	unit_m4(transmat);
 
@@ -689,29 +690,21 @@ void BKE_camera_stereo_matrices(Object *camera, float r_viewmat[4][4], float *r_
 	if (pivot == CAM_S3D_PIVOT_CENTER)
 		fac = 0.5f;
 
+	fac_signed = is_left ? fac : -fac;
+
 	/* rotation */
 	if (convergence_mode == CAM_S3D_TOE) {
 		angle = atanf((interocular_distance * 0.5f) / convergence_distance);
 
-		if (is_left) {
-			angle = -angle;
-		}
-
-		transmat[0][0] =  cosf(angle * 2.0f * fac);
-		transmat[2][0] = -sinf(angle * 2.0f * fac);
-		transmat[0][2] =  sinf(angle * 2.0f * fac);
-		transmat[2][2] =  cosf(angle * 2.0f * fac);
+		transmat[0][0] =  cosf(angle * 2.0f * fac_signed);
+		transmat[2][0] = -sinf(angle * 2.0f * fac_signed);
+		transmat[0][2] =  sinf(angle * 2.0f * fac_signed);
+		transmat[2][2] =  cosf(angle * 2.0f * fac_signed);
 	}
 
 	/* translation */
-	if (is_left) {
-		transmat[3][0] = cosf(angle) * interocular_distance * fac;
-		transmat[3][2] = sinf(angle) * interocular_distance * fac;
-	}
-	else {
-		transmat[3][0] = -cosf(angle) * interocular_distance * fac;
-		transmat[3][2] = -sinf(angle) * interocular_distance * fac;
-	}
+	transmat[3][0] = cosf(angle) * interocular_distance * fac_signed;
+	transmat[3][2] = sinf(angle) * interocular_distance * fac_signed;
 
 	/* apply */
 	mul_m4_m4m4(r_viewmat, transmat, tmpviewmat);
@@ -719,10 +712,7 @@ void BKE_camera_stereo_matrices(Object *camera, float r_viewmat[4][4], float *r_
 	/* prepare the camera shift for the projection matrix */
 	/* Note: in viewport, parallel renders as offaxis, but in render it does parallel */
 	if (ELEM(convergence_mode, CAM_S3D_OFFAXIS, CAM_S3D_PARALLEL)) {
-		if (is_left)
-			*r_shift += (interocular_distance / data->sensor_x) * (data->lens / convergence_distance) * fac;
-		else
-			*r_shift -= (interocular_distance / data->sensor_x) * (data->lens / convergence_distance) * fac;
+		*r_shift += (interocular_distance / data->sensor_x) * (data->lens / convergence_distance) * fac_signed;
 	}
 }
 
diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c
index 55190d0..c775341 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -2366,8 +2366,7 @@ static void image_viewer_create_views(const RenderData *rd, Image *ima)
 	}
 }
 
-/* Reset the rederout or nodes image cache when the number of cache
- * doesn't match the needed cached views */
+/* Reset the image cache and views when the Viewer Nodes views don't match the scene views */
 void BKE_image_verify_viewer_views(const RenderData *rd, Image *ima, ImageUser *iuser)
 {
 	bool do_reset;
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index 0e82933..f93a8fe 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -331,7 +331,7 @@ static SpaceLink *view3d_new(const bContext *C)
 	v3d->gridflag = V3D_SHOW_X | V3D_SHOW_Y | V3D_SHOW_FLOOR;
 	
 	v3d->flag = V3D_SELECT_OUTLINE;
-	v3d->flag2 = V3D_SHOW_GPENCIL;
+	v3d->flag2 = V3D_SHOW_RECONSTRUCTION | V3D_SHOW_GPENCIL;
 	
 	v3d->lens = 35.0f;
 	v3d->near = 0.01f;




More information about the Bf-blender-cvs mailing list