Viewig Viewig 5478 7 년가을학기 //7 단국대학교박경신 관측의기본요소 객체 (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 -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과함께제공함 side
Aoometric Projectios Costrctio of a Aoometric Projectio 축측관측 (Aoometric iew) 에서투영선은투영면에수직이지만 투영면은객체에대해어떠한방향에도존재할수있다. q q q 3 등축투영 (isometric) - 만일투영면이사각형객체의모서리에서만나는세개의주면에대해서대칭으로놓여짐 이축투영 (dimetric) 투영면이두개의주면이대칭되도록놓여짐 삼축투영 (trimetric) 일반적인경우 투영면투영면투영면 축측투영의평면도 & 측면도 Tpes of Aoometric Projectios Obliqe Projectio 경사투영 (Obliqe Projectio) 에서투영선은투영면과임의의각을가질수있다. 투영면에평행한면내의각은보존된다. 선들의평행은이미지안에서보존되지만각은보존되지않는다. 등축투영 : 이미지공간에서선분의길이는객체공간에서측정된길이보다짧다. 이러한거리의단축 (foreshorteig) 은세개의주면에서똑같이발생한다. 따라서거리비교는가능하다. 이축투영 : 두개의다른단축비를가진다. 삼축투영 : 세개의다른단축비를가진다. 경사투영의평면도 & 측면도
Perspectie Projectio 원근 ( 투시 ) 관측 (Perspectie Projectio) 은객체가관측자로부터멀리떨어질수록크기가축소된다. 투영선은투영중심 (Ceter Of Projectio) 으로모인다. --3-Poit Perspectie 일점 이점 삼점투시 (oe two three poit perspecties) 관측의차이는객체의세가지주방향가운데얼마나많은방향이투영면에평행한가에있다. 삼점투시의경우세개의주방향에평행한모든직선들은세개의소실점 (aishig poit) 에서만난다. COP 원근 ( 투시 ) 관측은크기가축소 (dimitio) 되는특징을가진다. 이러한크기변화는자연스러운모습의관측 (realistic iew) 을얻게한다. 그러나 선분의길이가얼마나짮아지는가는그선분이관측자로부터얼마나떨어져있는가에의존하기때문에 길이측정을할수없다. 3 점투시 점투시 점투시 Orthographic Projectio 직교투영 (Orthographic projectio) 은직육면체 (rectiliear bo) 의관측공간을화면에투영한다. 객체의크기가거리에따라변하지않는다. Perspectie Projectio 원근투영 (Perspectie projectio) 은절두체 (frstm i.e. trcated pramid) 관측공간을화면에투영한다. 가까운객체는크게나타나고 멀리있는객체는작게나타난다. Viewig olme Viewig olme
OpeGL Orthographic Projectio glm::ortho(left right bottom top ear far) 이함수의매개변수는 glfrstm 의매개변수와동일하다. 관측공간은직육면체이다. ear 와 far 는양수만받는다. 내부에서음수로바꿔서사용한다. OpeGL Perspectie Projectio OpeGL 에서투시투영 (perspectie projectio) 은카메라가원점 (origi) 에위치하고있으며 Z 축을바라보고있다. glm::frstm(left right bottom top ear far) 앞면과뒷면의거리는양수이어야하며 COP 에서평면까지의거리로측정된다. 관측공간은절두체 (frstm i.e. trcated pramid) 이다. OpeGL Perspectie Projectio glm::perspectie(fo aspect ear far) fo Y- 축방향에서의시야 (field of iew) 각도 aspect 투영면의 ( 너비를높이로나눈 ) 종횡비 (aspect ratio) ear 앞쪽클리핑면 far 뒤쪽클리핑면 Projectio = glm::perspectie(45 aspect. ); COP aspect = w/h Orthographic Projectio 직교투영 (Orthographic projectio) 투영선이관측평면에수직인평행투영의특수한경우이다. 렌즈와카메라의뒷면이평행하고초점거리가무한대이다. Orthographic projectio M ortho = p = p = p = w p = M ortho p = q = q=mp
Perspectie Projectio Perspectie Projectio 원근 / 투시투영 (Perspectie projectio) 투영중심 (Ceter of projectio) 은원점 (Origi) 투영면 (Projectio plae) p = d COP Projectio plae p = p = / d / d p = d Perspectie projectio p = / d p = / d p = d = / d q = Mp M pers = M pers p = q = d d Projectio Normaliatio Orthogoal Projectio Matri 투영정규화 (projectio ormaliatio) 는왜곡된객체의직교투영이원래객체의원하는투영이되도록 객체들을사전왜곡시킴으로써 모든투영을직교투영으로변환시키는작업이다. Orthogoal projectio 은관측공간 (View olme) 을정규관측공간 (Caoical iew olme) 으로매핑한다. 직육면체 -> 정육면체직교투영 -> 직교투영
Orthogoal Projectio Matri Orthogoal Projectio Matri 지정된관측공간의중심을정규관측공간의중심으로이동 ( left right) ( top bottom) ( far ear) T 지정된관측공간의변을길이가 가되도록크기변환 S ( right left) ( bottom top) ( far ( ear)) Projectio matri: P = ST = right left topbottom far ear right left right left top bottom topbottom far ear far ear Ortho = ST right left right left top bottom top bottom far ear far ear right left right left top bottom top bottom far ear far ear ( right left ) ( top bottom) ( far ear ) Geeral case: P = M ortho ST Obliqe Projectio Matri Obliqe Projectio Matri shear ( ales chaged) 경사투영 -> 직교투영직육면체 -> 정육면체직교투영 -> 직교투영 H() = cot θ cot φ top iew ta p p cot - p - p side iew ta p p cot Projectio matri: P = M ortho H() Geeral case: P = M ortho ST H()
Perspectie Projectio Matri Perspectie Projectio Matri Perspectie projectio 은관측공간 (View olme) 을정규관측공간 (Caoical iew olme) 으로매핑한다. [l r] => [- ] [b t] => [- ] [- -f] => [- ] [ f] => [ -] COP Projectio plae at = - 절두체 -> 정육면체원근투영 -> 직교투영한점으로모이던투영선들이평행해짐 - 원근감생성 Perspectie Projectio Matri 원근정규화 (Perspectie ormaliatio) Distorted object projects correctl Perspectie Projectio Matri 원근정규화 (Perspectie ormaliatio) 는원근투영을직교투영으로바꾸는작업이다. 투영면 (PP) 이 = - 투영중심 (COP) 이원점인원근투영행렬 M M pers = = = = ear/far New clippig olme 관측공간의측면이투영면을 45 도로교차하도록함으로써시야를 9 도로고정 = =
Perspectie Projectio Matri N 행렬 : N = α β p =Np: w 원근나눗셈 (Perspectie diisio) 한후 p ->p : Perspectie Projectio Matri = 이면 = = 이면 = Far plae = -far이면 Near plae = -ear 이면 ( far ) far -> 매핑하도록 와 를선정 : (-ear -) & (-far ) far ear far ear far ear far ear ( ear ) ear ( far ) far & ( ear) ear ( far ) ( ear ear) far ( ear far ) ear far ear ear ear far far ear ear far far ear OpeGL Perspectie Projectio OpeGL Perspectie Projectio glm::frstm(left right bottom top ear far) Shear Scale N - - Shear right left top bottom H(cotcot) H ear ear The right left top bottom ear far ear ear Scale ear ear S S right left top bottom The Normalie far ear N = far ear far ear α β far ear
OpeGL Perspectie Projectio Matri Compter Viewig Frstm= NSH Frstm NSH ear right left far ear far ear ear top bottom ear right left far ear far ear right left right left top bottom top bottom far ear far ear ear top bottom far ear far ear ( right left ) ear ( top bottom) ear 컴퓨터에서의관측은다음과같이구성된다. 카메라의위치와방향을잡아준다. Model-iew trasformatio matri 투영변환을적용한다. Projectio trasformatio matri 클리핑 (Clippig) 한다. View olme OpeGL 에서초기카메라는 객체프레임의원점에놓이고 - 축의음수방향을향한다. 직교관측으로설정되어있고 원점을중심으로한각변의길이가 인정육면체로된관측공간을가진다. 기본투영면은 = 인면이고 투영방향은 축과나란하다. clipped ot = Positioig the Camera Frame 모델 - 관측변환행렬 (model-iew trasformatio matri) 방법 관측참조점 (VRP) 관측면법선 (VPN) 관측상향벡터 (VUP) 를이용한관측 - 방향행렬 (ieworietatio matri) 방법 Look-at 함수 Positioig the Camera Frame OpeGL에서카메라위치지정방법 카메라를원점으로부터뒤로이동시키는방법 또는물체를카메라의앞으로이동시키는방법을사용한다. World = glm::traslate(glm::mat4(.f) glm::ec3(.. -d)); World frame = Camera frame Moig the camera frame after traslatio b d d >
Positioig the Camera 연속된회전 (rotatio) 과이동 (traslatio) 으로카메라위치를지정할수있다. 예제 : 축방면에서바라보는관측 R = 카메라를 축을중심으로회전 T = 카메라를원점에서먼곳으로이동 Model-iew matri C = TR World = glm::traslate(glm::mat4(.f) glm::ec3(.. -d)) * glm::rotate(glm::mat4(.f) -9 glm::ec3( )); -d -9º Camera Frame 관측참조점 (View referece poit VRP) 관측면법선 (View plae ormal VPN) = PRP - VRP 관측상향벡터 (View-p ector VUP) 측면벡터 (Side ector) = VUP 상향벡터 (Up ector) = 를정규화 (ormalie) 관측좌표계 (iewig coordiate sstem - - ) 와 VRP 를추가하여카메라프레임 (camera frame) 을정의 PRP (Projectio Referece Poit) Camera Frame View-orietatio matri M Rotatio matri M - = M T = R World frame 에서카메라의위치지정 : V = RT M e e e e e e lookat glm::lookat(ec3 & ee ec3 & at ec3 & p) = ee at = p =
lookat Ee Poit : 카메라의원점 ( 월드좌표계 ) Look-At : 카메라가쳐다보고있는위치 ( 카메라이미지의중심이되는위치 ) Up-Vector : 월드좌표계에서카메라가보는 p 벡터 ( 카메라이미지에서어디로향하는지에대한방향벡터 ) Ee poit (c c c ) Up-ector ( ) gllookat oid gllookat(gldoble e GLdoble e GLdoble e GLdoble a GLdoble a GLdoble a GLdoble GLdoble GLdoble ) { GLdoble M[6]; GLdoble [3] [3] [3]; GLdoble mag; [] = e a; [] = e a; [] = e a; // (camera frame Z) mag = sqrt([]*[] + []*[] + []*[]); if (mag) { [] /= mag; [] /= mag; [] /= mag; } [] = ; [] = ; [] = ; // (camera frame X) [] = []*[] []*[]; [] = -[]*[] + []*[]; [] = []*[] - []*[]; mag = sqrt([]*[] + []*[] + []*[]); if (mag) { [] /= mag; [] /= mag; [] /= mag; } [] = []*[] []*[]; [] = -[]*[] + []*[]; [] = []*[] - []*[]; // (camera frame Y) mag = sqrt([]*[] + []*[] + []*[]); if (mag) { [] /= mag; [] /= mag; [] /= mag; } World space origi Camera space origi Look-at poit (p p p ) } M[] = []; M[4] = []; M[8] = []; M[] =.; M[] = []; M[5] = []; M[9] = []; M[3] =.; M[] = []; M[6] = []; M[] = []; M[4] =.; M[3] =.; M[7] =.; M[] =.; M[5] =.; glmltmatri(m); gltraslated(-e -e -e); // R // RT Yaw Pitch Roll 편요 (Yaw) Y축회전 종전 (Pitch) X축회전 횡전 (Roll) Z축회전 Eleatio ad Aimth 방위각 (Aimth) X축회전 (-8 ~ 8) 앙각 (Eleatio) Y축회전 (-9 ~ 9) 꼬임각 (Twist agle) Z축회전 (-8 ~ 8) 3 차원극좌표계 (Spherical Polar Coordiates Sstem)
Referece 원근정규화 http://www.sogho.ca/opegl/gl_projectiomatri.html