diff options
author | Antony Riakiotakis <kalast@gmail.com> | 2015-06-12 18:20:46 +0300 |
---|---|---|
committer | Antony Riakiotakis <kalast@gmail.com> | 2015-06-12 18:21:07 +0300 |
commit | efe4af8fcbf9987dd1563a2f49ce606d3c14d808 (patch) | |
tree | 0c2467235da13da6445de834e4ba32809815097e /source/blender/editors/space_view3d | |
parent | a9d3f663d303ddfc2a3a471d054bac7acc161882 (diff) |
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.
Diffstat (limited to 'source/blender/editors/space_view3d')
-rw-r--r-- | source/blender/editors/space_view3d/drawobject.c | 19 |
1 files changed, 17 insertions, 2 deletions
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; |