Viewig Viewig 329 27년봄학기 5//27 박경신 관측의기본요소 객체 (Objects) 관측자 (Viewer) 투영선 (Projector) 투영면 (Projectio plae) 투영중심 (Ceter of Projectio: COP) COP 가유한한경우 투시관측 (Perspectie iews) COP 가무한한경우 평행관측 (Parallel iews) Classical Viewig Classical Viewig Plaar projectios Parallel Perspectie Obliqe Orthographic -poit 2-poit 3-poit other Caalier Cabiet Aoometric Mltiiew orthographic Isometric Dimetric Trimetric
Parallel Viewig Perspectie Viewig (Directio of Projectio) Orthographic Projectio 직교투영 (Orthographic Projectio) 에서는투영선 (Projector) 은투영면 (Projectio plae) 에수직이다. Mltiiew Orthographic Projectio 다중관측직교투영 (Mltiiew Orthographic Projectio) 에서는여러개의투영면을만드는데, 각각은객체의주면중하나와평행하다. 일반적으로세개의관측 ( 전면, 상면, 우측면등 ) 을표시한다. Isometric (ot mltiiew orthographic iew) frot top 거리와각이모두보존된다 또한, 거리와모양의왜곡이없다 그러나, 다중관측직교투영으로부터 객체가어떻게생겼는지그리기어렵다. 그래서, Isometric iew과함께제공함 sie
Aoometric Projectios Tpes of Aoometric Projectios 축측관측 (Aoometric iew) 에서투영선은투영면에수직이지만, 투영면은객체에대해어떠한방향에도존재할수있다. θ 2 θ θ 3 등축관측 (isometric) - 만일투영면이사각형객체의모서리에서만나는세개의주면에대해서대칭으로놓여짐 이축관측 (imetric) 투영면이두개의주면이대칭되도록놓여짐 삼축관측 (trimetric) 선들의평행은이미지안에서보존되지만각은보존되지않는다. 등축관측 : 이미지공간에서선분의길이는객체공간에서측정된길이보다짧다. 이러한거리의단축 (foreshorteig) 은세개의주면에서똑같이발생한다. 따라서거리비교는가능하다. 이축관측 : 두개의다른단축비를가진다. 삼축관측 : 세개의다른단축비를가진다. Obliqe Projectio 경사투영 (Obliqe Projectio) 에서투영선은투영면과임의의각을가질수있다. 투영면에평행한면내의각은보존된다. Perspectie Projectio 투시관측 (Perspectie Projectio) 은객체가관측자로부터멀리떨어질수록크기가축소된다. 투영선은투영중심 (ceter of projectio) 으로모인다. 투시관측은크기가축소 (imitio) 되는특징을가진다. 이러한크기변화는자연스러운모습의관측 (realistic iew) 을얻게한다. 그러나, 선분의길이가얼마나짮아지는가는그선분이관측자로부터얼마나떨어져있는가에의존하기때문에길이측정을할수없다.
-,2-,3-Poit Perspectie 일점, 이점, 삼점투시 (oe, two, three poit perspecties) 관측의차이는객체의세가지주방향가운데얼마나많은방향이투영면에평행한가에있다. 삼점투시의경우세개의주방향에평행한모든직선들은세개의소실점 (aishig poit) 에서만난다. 3 점투시 2 점투시 점투시 Compter Viewig 컴퓨터에서의관측은다음과같이구성된다. 카메라의위치와방향을잡아준다. Moel-iew trasformatio matri 투영변환을적용한다. Projectio trasformatio matri 클리핑 (Clippig) 한다. View olme OpeGL 에서초기카메라는 객체프레임의원점에놓이고, Z 축의음수방향을향한다. 직교관측으로설정되어있고, 원점을중심으로한각변의길이가 2 인정육면체로된관측공간을가진다. 기본투영면은 인면이고, 투영방향은 축과나란하다. 2 clippe ot Positioig the Camera Frame OpeGL에서카메라의위치지정 카메라를원점으로부터먼곳으로이동시키는방법, 또는 gltraslatef(.,., -) 물체를카메라의앞으로이동시키는방법을사용한다. Positioig the Camera 연속된회전 (rotatio) 과이동 (traslatio) 으로카메라위치를지정할수있다. 예제 : 축방면에서바라보는관측 R 카메라를 축을중심으로회전 T 카메라를원점에서먼곳으로이동 Moel-iew matri C TR glmatrimoe(gl_modelview); glloaietit(); gltraslatef(.,., -); glrotatef(-9.,.,.,.); - -9º Worl frame Camera frame Moig the camera frame after traslatio b, >
Camera Frame 관측참조점 (View referece poit, VRP) 관측면법선 (View plae ormal, VPN), PRP - VRP 관측상향벡터 (View-p ector, VUP) VUP,, 를정규화 관측좌표계 (iewig cooriate sstem, - - ) 와 VRP 를추가하여카메라프레임 (camera frame) 을정의 PRP Camera Frame View-orietatio matri, M Rotatio matri, M - M T R Worl frame 에서카메라의위치지정 : V RT M e e e e e e gllookat gllookat(ee, ee, ee, at, at, at, p, p, p ) ee at p gllookat Ee Poit : 카메라의원점 ( 월드좌표계 ) Look-At : 카메라가쳐다보고있는위치 ( 카메라이미지의중심이되는위치 ) Up-Vector : 월드좌표계에서카메라가보는 p 벡터 ( 카메라이미지에서어디로향하는지에대한방향벡터 ) Worl space origi Camera space origi Ee poit (c, c, c ) Look-at poit (p, p, p ) Up-ector (,, )
gllookat oi gllookat(globle e, GLoble e, GLoble e, GLoble a, GLoble a, GLoble a, GLoble, GLoble, GLoble ) { GLoble M[6]; GLoble [3], [3], [3]; GLoble mag; [] e a; [] e a; [2] e a; mag sqrt([]*[] []*[] [2]*[2]); if (mag) { [] / mag; [] / mag; [2] / mag; } // Yaw, Pitch, Roll 편요 (Yaw) Y 축회전 종전 (Pitch) X 축회전 횡전 (Roll) Z 축회전 [] ; [] ; [2] ; // [] []*[2] [2]*[]; [] -[]*[2] [2]*[]; [2] []*[] - []*[]; mag sqrt([]*[] []*[] [2]*[2]); if (mag) { [] / mag; [] / mag; [2] / mag; } [] []*[2] [2]*[]; [] -[]*[2] [2]*[]; [2] []*[] - []*[]; // mag sqrt([]*[] []*[] [2]*[2]); if (mag) { [] / mag; [] / mag; [2] / mag; } } M[] []; M[] []; M[2] [2]; M[3].; M[4] []; M[5] []; M[6] [2]; M[7].; M[8] []; M[9] []; M[] [2]; M[].; M[2].; M[3].; M[4].; M[5].; glmltmatri(m); gltraslate(-e, -e, -e); // R // RT Eleatio a Aimth 방위각 (Aimth) X 축회전 (-8 ~ 8) 앙각 (Eleatio) Y 축회전 (-9 ~ 9) 꼬임각 (Twist agle) Z 축회전 (-8 ~ 8) Perspectie Projectio 원근투영 (Perspectie projectio) 투영중심 (Ceter of projectio) 은원점 (Origi) 투영면 (Projectio plae) p COP Projectio plae p / p / p
Perspectie Projectio M / q Mp / p q Perspectie projectio p / p / p Perspectie Projectio 투영면 (Projectio plae, PP) 이투영중심 (Ceter of projectio, COP) 의뒤에있는경우 P(,,) P (, ) COP (,,) M / Perspectie Projectio 투영면 (Projectio plae, PP) 이투영중심 (Ceter of projectio, COP) 의앞에있는경우 P P COP (,,) M / Perspectie Projectio 투영면 (Projectio plae, PP) 이 에있고, 투영중심 (Ceter of projectio, COP) 이 - 에있는경우 P P COP (,,-) ) ( ) ( M /
Orthographic Projectio 직교투영 (Orthographic projectio) 투영선이관측평면에수직인평행투영의특수한경우이다. 렌즈와카메라의뒷면이평행하고초점거리가무한대이다. Orthographic projectio p p p w p M p p Mp OpeGL Perspectie Projectio OpeGL 에서투시투영 (perspectie projectio) 은바늘구멍카메라 (pi-hole camera) 가원점 (origi) 에위치하고있으며 Z 축을바라보고있다. glfrstm(left, right, bottom, top, ear, far) 앞면과뒷면의거리는양수이어야하며, COP 에서평면까지의거리로측정된다. 관측공간은절두체 (frstm, i.e. trcate prami) 이다. COP OpeGL Perspectie Projectio OpeGL Orthographic Projectio glperspectie(fo, aspect, ear, far) fo Y- 축방향에서의시야 (fiel of iew) 각도 aspect 투영면의 ( 너비를높이로나눈 ) 종횡비 (aspect ratio) ear 앞쪽클리핑면 far 뒤쪽클리핑면 glortho(left, right, bottom, top, ear, far) 이함수의매개변수는 glfrstm 의매개변수와동일하다. 관측공간은직육면체이다. glmatrimoe(gl_projection); glloaietit(); glperspectie(45,.333,., ); glmatrimoe(gl_modelview); COP aspect w/h
Perspectie Projectio 원근투영 (Perspectie projectio) 은절두체 (frstm, i.e., trcate prami) 관측공간을화면에투영한다. 가까운객체는크게나타나고, 멀리있는객체는작게나타난다. far (right, top, ear) Orthographic Projectio 직교투영 (Orthographic projectio) 은직육면체 (rectiliear bo) 의관측공간을화면에투영한다. 객체의크기가거리에따라변하지않는다. (right, top, far) Viewig olme DirectX s perspectie projectio is a pi-hole camera, locate at the origi, lookig ow the ais. (left, bottom, ear) Viewig olme (left, bottom, ear) w h Projectio Normaliatio 투영정규화 (projectio ormaliatio) 는왜곡된객체의직교투영이원래객체의원하는투영이되도록먼저객체들을왜곡시킴으로써, 모든투영을직교투영으로변환시키는작업이다. Orthogoal Projectio Matri 관측공간을정규관측공간 (Caoical iew olme) 으로매핑한다. 직육면체 -> 정육면체직교투영 -> 직교투영
Orthogoal Projectio Matri Perspectie Projectio Matri 지정된관측공간의중심을정규관측공간의중심으로이동 ( left right) ( top bottom) ( far ear) T,, 2 2 2 지정된관측공간의변을길이가 2 가되도록크기변환 2 2 2 S,, ( right left) ( bottom top) ( far ear) P ST 2 right left 2 top bottom 2 far ear right left right left top bottom top bottom far ear far ear COP Projectio plae at - 절두체 -> 정육면체원근투영 -> 직교투영한점으로모이던투영선들이평행해짐 - 원근감생성 Perspectie Projectio Matri 원근정규화 (Perspectie ormaliatio) Distorte object projects correctl Perspectie Projectio Matri 원근정규화 (Perspectie ormaliatio) 는원근투영을직교투영으로바꾸는작업이다. 투영면 (PP) 이 -, 투영중심 (COP) 이원점인원근투영행렬, M M ± ± ± ± ear/far ± New clippig olme 관측공간의측면이투영면을 45 도로교차하도록함으로써시야를 9 도로고정 ± ±
Perspectie Projectio Matri N 행렬 : N p Np: α β,, α β, w 원근나눗셈 (Perspectie iisio) 한후, p ->p :,, α β Perspectie Projectio Matri ± 이면, ± ± 이면, ± Far plae ma 이면, α Near plae mi 이면, α mi -> - 그리고 ma -> 매핑하도록 α와 β를선정 ma mi α ma mi 2mami β ma mi β ma β mi OpeGL Perspectie Projectio OpeGL Perspectie Projectio glfrstm(left, right, bottom, top, ear, far) COP Shear The, Scale right left top bottom H (cotθ,cotφ) H, 2mi 2mi right left top bottom ±, ±, ma, 2 2 mi ±, ± mi mi Shear Scale N - - N α β ma α ma 2ma β ma mi mi mi mi
OpeGL Perspectie Projectio Camera Moemet P NSH 2mi right left 2mi top bottom right left right left top bottom top bottom ma mi ma - mi 2ma ma - mi mi The OpeGL camera is alwas positioe at the origi, lookig ow the Z ais. The camera itself eer moes. Lookig at the fial image proce, moig a camera is eqialet to moig the worl i the opposite irectio. E.g. moig eerthig to the right will proce the same image as moig the camera to the left. ma far mi ear Camera Moemet To gie the effect of moig the perspectie iewpoit i OpeGL, se a trasformatio at the begiig of the frame, which affects all objects. For eample, to moe the camera its from the origi i the Z irectio, traslate the worl b - i Z oi ispla() { glmatrimoe(gl_projection); glloaietit(); glperspectie(45,,., ); glmatrimoe(gl_modelview); glloaietit(); gltraslatef(,, -); rawobjects(); } Camera Moemet For geeral camera moemet Keep track of camera positio & orietatio Appl ierse trasformatio to the worl Eample float camerax, cameray, cameraz, cameraheaig; oi ispla() { glloaietit(); glrotatef(-cameraheaig,,, ); gltraslatef(-camerax, -cameray, -cameraz); } rawobjects();