[Bf-blender-cvs] [d1ef6be4a77] master: Fix T61204: Can't select Camera in stereoscopy mode

Dalai Felinto noreply at git.blender.org
Tue Feb 5 21:41:37 CET 2019


Commit: d1ef6be4a770c8b2caacc70cb93d3cf9ab52e0d9
Author: Dalai Felinto
Date:   Tue Feb 5 18:37:42 2019 -0200
Branches: master
https://developer.blender.org/rBd1ef6be4a770c8b2caacc70cb93d3cf9ab52e0d9

Fix T61204: Can't select Camera in stereoscopy mode

This was deliberately disabled since I didn't get the drawing working
originally. It is fully working now.

Note: camera lens widget still needs to be fixed since it still draws it
wrongly.

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

M	source/blender/draw/modes/object_mode.c

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

diff --git a/source/blender/draw/modes/object_mode.c b/source/blender/draw/modes/object_mode.c
index 78e256039d8..cf6c9e39028 100644
--- a/source/blender/draw/modes/object_mode.c
+++ b/source/blender/draw/modes/object_mode.c
@@ -1868,22 +1868,23 @@ static void DRW_shgroup_camera(OBJECT_ShadingGroupList *sgl, Object *ob, ViewLay
 	if (look_through && !is_stereo3d_cameras) {
 		/* Only draw the frame. */
 		float mat[4][4];
-		if (is_selection_camera_stereo) {
-			/* Make sure selection uses the same matrix for camera as the one used while viewing. */
+		if (is_stereo3d) {
 			const bool is_left = v3d->multiview_eye == STEREO_LEFT_ID;
-			BKE_camera_multiview_model_matrix(&scene->r, ob, is_left ? STEREO_LEFT_NAME : STEREO_RIGHT_NAME, mat);
+			const char *view_name = is_left ? STEREO_LEFT_NAME : STEREO_RIGHT_NAME;
+			BKE_camera_multiview_model_matrix(&scene->r, ob, view_name, mat);
+			const float shiftx = BKE_camera_multiview_shift_x(&scene->r, ob, view_name);
+			cam->drwcorners[0][0][0] += shiftx;
+			cam->drwcorners[0][1][0] += shiftx;
+			cam->drwcorners[0][2][0] += shiftx;
+			cam->drwcorners[0][3][0] += shiftx;
 		}
 		else {
 			copy_m4_m4(mat, ob->obmat);
 		}
 
-		/* TODO (dfelinto): Disabling this for now since it is extremely wrong.
-		 * Besides selection and multiview still works bad even on its finest day. */
-		if (!is_multiview) {
-			DRW_shgroup_call_dynamic_add(
-			        sgl->camera_frame, color, cam->drwcorners[0],
-			        &cam->drwdepth[0], cam->drwtria, mat);
-		}
+		DRW_shgroup_call_dynamic_add(
+		        sgl->camera_frame, color, cam->drwcorners[0],
+		        &cam->drwdepth[0], cam->drwtria, mat);
 	}
 	else if (!look_through) {
 		if (!is_stereo3d_cameras) {



More information about the Bf-blender-cvs mailing list