From efe4af8fcbf9987dd1563a2f49ce606d3c14d808 Mon Sep 17 00:00:00 2001 From: Antony Riakiotakis Date: Fri, 12 Jun 2015 17:20:46 +0200 Subject: Fix T45018 camera not easily selectable in multiview. Generally for scene choosing a view to use for selection is not straightforward, but camera should at least be easily selectable. --- source/blender/editors/space_view3d/drawobject.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'source/blender/editors/space_view3d') diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 5272019ce4d..220cea230cd 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -2098,8 +2098,23 @@ static void drawcamera(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base glDisable(GL_CULL_FACE); /* camera frame */ - if (!is_stereo3d_cameras) - drawcamera_frame(vec, GL_LINE_LOOP); + if (!is_stereo3d_cameras) { + /* make sure selection uses the same matrix for camera as the one used while viewing */ + if ((G.f & G_PICKSEL) && is_view && (scene->r.views_format == SCE_VIEWS_FORMAT_STEREO_3D)) { + float obmat[4][4]; + bool is_left = v3d->multiview_eye == STEREO_LEFT_ID; + + glPushMatrix(); + glLoadMatrixf(rv3d->viewmat); + BKE_camera_multiview_model_matrix(&scene->r, ob, is_left ? STEREO_LEFT_NAME : STEREO_RIGHT_NAME, obmat); + glMultMatrixf(obmat); + + drawcamera_frame(vec, GL_LINE_LOOP); + glPopMatrix(); + } + else + drawcamera_frame(vec, GL_LINE_LOOP); + } if (is_view) return; -- cgit v1.2.3