Viewig Viewig 329 28년봄학기 5/3/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 등축관측 - 소실점투시관측 3- 소실점투시관측
Parallel Viewig Perspectie Viewig (Directio of Projectio) Orthographic Projectio 직교투영 (Orthographic Projectio) 에서는투영선 (Projector) 은투영면 (Projectio plae) 에수직이다. Mltiiew Orthographic Projectio 다중관측직교투영 (Mltiiew Orthographic Projectio) 에서는여러개의투영면을만드는데, 각각은객체의주면 (pricipal face) 중하나와평행하다. 일반적으로세개의관측 ( 전면, 상면, 우측면등 ) 을표시한다. Isometric (ot mltiiew orthographic iew) frot top 거리와각이모두보존됨 또한, 거리와모양의왜곡이없음 그러나, 다중관측직교투영으로부터객체가어떻게생겼는지추측이어려움 그래서, Isometric iew과함께제공함 sie
Aoometric Projectios Costrctio of a Aoometric Projectio 축측관측 (Aoometric iew) 에서투영선은투영면에수직이지만, 투영면은객체에대해어떠한방향에도존재할수있다. θ 2 θ θ 3 등축투영 (isometric) - 만일투영면이사각형객체의모서리에서만나는세개의주면에대해서대칭으로놓여짐 이축투영 (imetric) 투영면이두개의주면이대칭되도록놓여짐 삼축투영 (trimetric) 일반적인경우 투영면투영면투영면 축측투영의평면도 & 측면도 Tpes of Aoometric Projectios Obliqe Projectio 경사투영 (Obliqe Projectio) 에서투영선은투영면과임의의각을가질수있다. 투영면에평행한면내의각은보존된다. 선들의평행은이미지안에서보존되지만각은보존되지않는다. 등축투영 : 이미지공간에서선분의길이는객체공간에서측정된길이보다짧다. 이러한거리의단축 (foreshorteig) 은세개의주면에서똑같이발생한다. 따라서거리비교는가능하다. 이축투영 : 두개의다른단축비를가진다. 삼축투영 : 세개의다른단축비를가진다. 경사투영의평면도 & 측면도
Perspectie Projectio 원근 ( 투시 ) 관측 (Perspectie Projectio) 은객체가관측자로부터멀리떨어질수록크기가축소된다. 투영선은투영중심 (Ceter Of Projectio) 으로모인다. -,2-,3-Poit Perspectie 일점, 이점, 삼점투시 (oe, two, three poit perspecties) 관측의차이는객체의세가지주방향가운데얼마나많은방향이투영면에평행한가에있다. 삼점투시의경우세개의주방향에평행한모든직선들은세개의소실점 (aishig poit) 에서만난다. COP 원근 ( 투시 ) 관측은크기가축소 (imitio) 되는특징을가진다. 이러한크기변화는자연스러운모습의관측 (realistic iew) 을얻게한다. 그러나, 선분의길이가얼마나짮아지는가는그선분이관측자로부터얼마나떨어져있는가에의존하기때문에, 길이측정을할수없다. 3 점투시 2 점투시 점투시 Compter Viewig 컴퓨터에서의관측은다음과같이구성된다. 카메라의위치와방향을잡아준다. Moel-iew trasformatio matri 투영변환을적용한다. Projectio trasformatio matri 클리핑 (Clippig) 한다. View olme OpeGL 에서초기카메라는 객체프레임의원점에놓이고, - 축의음수방향을향한다. 직교관측으로설정되어있고, 원점을중심으로한각변의길이가 2 인정육면체로된관측공간을가진다. 기본투영면은 인면이고, 투영방향은 축과나란하다. 2 clippe ot Positioig the Camera Frame 모델 - 관측변환행렬 (moel-iew trasformatio matri) 방법 관측참조점 (VRP), 관측면법선 (VPN), 관측상향벡터 (VUP) 를이용한관측 - 방향행렬 (ieworietatio matri) 방법 Look-at 함수
Positioig the Camera Frame Worl frame Camera frame Moig the camera frame after traslatio b, > OpeGL 에서카메라위치지정방법 카메라를원점으로부터뒤로이동시키는방법 또는물체를카메라의앞으로이동시키는방법을사용한다. gltraslatef(.,., -) Positioig the Camera 연속된회전 (rotatio) 과이동 (traslatio) 으로카메라위치를지정할수있다. 예제 : 축방면에서바라보는관측 R 카메라를 축을중심으로회전 T 카메라를원점에서먼곳으로이동 Moel-iew matri C TR glmatrimoe(gl_modelview); glloaietit(); gltraslatef(.,., -); glrotatef(-9.,.,.,.); - -9º Camera Frame 관측참조점 (View referece poit, VRP) 관측면법선 (View plae ormal, VPN) PRP - VRP 관측상향벡터 (View-p ector, VUP) 측면벡터 (Sie ector) VUP 상향벡터 (Up ector),, 를정규화 (ormalie) 관측좌표계 (iewig cooriate sstem, - - ) 와 VRP 를추가하여카메라프레임 (camera frame) 을정의 PRP (Projectio Referece Poit) 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 벡터 ( 카메라이미지에서어디로향하는지에대한방향벡터 ) Ee poit (c, c, c ) Up-ector (,, ) Worl space origi Camera space origi Look-at poit (p, p, p ) 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; // (camera frame Z) mag sqrt([]*[] []*[] [2]*[2]); if (mag) { [] / mag; [] / mag; [2] / mag; } Yaw, Pitch, Roll 편요 (Yaw) Y 축회전 종전 (Pitch) X 축회전 횡전 (Roll) Z 축회전 [] ; [] ; [2] ; // (camera frame X) [] []*[2] [2]*[]; [] -[]*[2] [2]*[]; [2] []*[] - []*[]; mag sqrt([]*[] []*[] [2]*[2]); if (mag) { [] / mag; [] / mag; [2] / mag; } [] []*[2] [2]*[]; [] -[]*[2] [2]*[]; [2] []*[] - []*[]; // (camera frame Y) mag sqrt([]*[] []*[] [2]*[2]); if (mag) { [] / mag; [] / mag; [2] / mag; } M[] []; M[4] []; M[8] [2]; M[2].; // R M[] []; M[5] []; M[9] [2]; M[3].; M[2] []; M[6] []; M[] [2]; M[4].; M[3].; M[7].; M[].; M[5].; glmltmatri(m); } gltraslate(-e, -e, -e); // RT
Eleatio a Aimth 방위각 (Aimth) X 축회전 (-8 ~ 8) 앙각 (Eleatio) Y 축회전 (-9 ~ 9) 꼬임각 (Twist agle) Z 축회전 (-8 ~ 8) 3 차원극좌표계 (Spherical Polar Cooriates Sstem) Orthographic Projectio 직교투영 (Orthographic projectio) 투영선이관측평면에수직인평행투영의특수한경우이다. 렌즈와카메라의뒷면이평행하고초점거리가무한대이다. Orthographic projectio p p p w p M ortho M ortho p q q Mp Perspectie Projectio Perspectie Projectio COP 원근 / 투시투영 (Perspectie projectio) 투영중심 (Ceter of projectio) 은원점 (Origi) 투영면 (Projectio plae) p Projectio plae p / p / p Perspectie projectio p / q Mp p / p M pers M pers p q
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 OpeGL Orthographic Projectio glortho(left, right, bottom, top, ear, far) 이함수의매개변수는 glfrstm 의매개변수와동일하다. 관측공간은직육면체이다.
OpeGL Perspectie Projectio OpeGL 에서투시투영 (perspectie projectio) 은카메라가원점 (origi) 에위치하고있으며 Z 축을바라보고있다. glfrstm(left, right, bottom, top, ear, far) 앞면과뒷면의거리는양수이어야하며, COP 에서평면까지의거리로측정된다. 관측공간은절두체 (frstm, i.e. trcate prami) 이다. COP 관측면 OpeGL Perspectie Projectio glperspectie(fo, aspect, ear, far) fo Y- 축방향에서의시야 (fiel of iew) 각도 aspect 투영면의 ( 너비를높이로나눈 ) 종횡비 (aspect ratio) ear 앞쪽클리핑면 far 뒤쪽클리핑면 glmatrimoe(gl_projection); glloaietit(); glperspectie(45,.333,., ); glmatrimoe(gl_modelview); COP aspect w/h Projectio Normaliatio 투영정규화 (projectio ormaliatio) 는왜곡된객체의직교투영이원래객체의원하는투영이되도록, 객체들을사전왜곡시킴으로써, 모든투영을직교투영으로변환시키는작업이다. Orthogoal Projectio Matri Orthogoal projectio 은관측공간 (View olme) 을정규관측공간 (Caoical iew olme) 으로매핑한다. 직육면체 -> 정육면체직교투영 -> 직교투영
Orthogoal Projectio Matri Obliqe Projectio Matri 지정된관측공간의중심을정규관측공간의중심으로이동 ( left right) ( top bottom) ( far ear) T,, 2 2 2 지정된관측공간의변을길이가 2 가되도록크기변환 2 2 2 S,, ( right left) ( bottom top) ( far ear) 경사투영 -> 직교투영직육면체 -> 정육면체직교투영 -> 직교투영 Projectio matri: P ST 2 right left Geeral case: P M orth ST 2 top bottom 2 far ear right left right left top bottom top bottom far ear far ear top iew taθ p p cotθ - p - p sie iew taφ p p cotφ, Obliqe Projectio Matri Perspectie Projectio Matri shear ( ales chage) cot θ H(θ,φ) cot φ Projectio matri: P M orth H(θ,φ) Geeral case: P M orth ST H(θ,φ) 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 이면, α β ma mi -> - 그리고 ma -> 매핑하도록 α와 β를선정 ma mi α ma mi 2mami β ma mi α β 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 Orthographic Projectio P NSH 2mi right left 2mi top bottom right left right left top bottom top bottom ma mi ma - mi 2 ma - ma mi mi 직교투영 (Orthographic projectio) 은직육면체 (rectiliear bo) 의관측공간을화면에투영한다. 객체의크기가거리에따라변하지않는다. Viewig olme ma far mi ear
Perspectie Projectio 원근투영 (Perspectie projectio) 은절두체 (frstm, i.e., trcate prami) 관측공간을화면에투영한다. 가까운객체는크게나타나고, 멀리있는객체는작게나타난다. Viewig olme