From b843c8a0ea40b0089e522f11b40eee9cb0801232 Mon Sep 17 00:00:00 2001 From: Alexander Ewering Date: Sat, 27 Sep 2003 11:10:49 +0000 Subject: [PATCH] "Set Camera to View3d": SHIFT-NUMPAD0 selects the camera like NUMPAD0, and in addition aligns and positions it so that it exactly "sees" the former View3d. --- source/blender/src/toets.c | 4 +++- source/blender/src/view.c | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/source/blender/src/toets.c b/source/blender/src/toets.c index 6394959dd0c..edc328dd6ee 100644 --- a/source/blender/src/toets.c +++ b/source/blender/src/toets.c @@ -391,8 +391,10 @@ void persptoetsen(unsigned short event) if(G.vd->camera) { G.vd->persp= 2; G.vd->view= 0; + if(G.qual & LR_SHIFTKEY) { + setcameratoview3d(); + } } - } else if(event==PAD9) { countall(); diff --git a/source/blender/src/view.c b/source/blender/src/view.c index 30eb5acbb9b..b1d0c367cec 100644 --- a/source/blender/src/view.c +++ b/source/blender/src/view.c @@ -711,6 +711,26 @@ void setviewmatrixview3d() } } +void setcameratoview3d() +{ + Object *ob; + float dvec[3]; + + ob= G.vd->camera; + dvec[0]= G.vd->dist*G.vd->viewinv[2][0]; + dvec[1]= G.vd->dist*G.vd->viewinv[2][1]; + dvec[2]= G.vd->dist*G.vd->viewinv[2][2]; + VECCOPY(ob->loc, dvec); + VecSubf(ob->loc, ob->loc, G.vd->ofs); + G.vd->viewquat[0]= -G.vd->viewquat[0]; + if (ob->transflag & OB_QUAT) { + QUATCOPY(ob->quat, G.vd->viewquat); + } else { + QuatToEul(G.vd->viewquat, ob->rot); + } + G.vd->viewquat[0]= -G.vd->viewquat[0]; +} + /* IGLuint-> GLuint*/ short selectprojektie(unsigned int *buffer, short x1, short y1, short x2, short y2) {