일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- priority_queue
- set
- 라인트레이서
- map
- 자료구조
- 운영체제
- Algorithm
- LineTracer
- c++
- stl
- 아두이노
- 컴퓨터 그래픽스
- arduino compiler
- vector
- 시스템프로그래밍
- html
- list
- Visual Micro
- 아두이노 컴파일러
- Arduino
- 통계학
- 수광 소자
- Stack
- queue
- Array
- WinAPI
- C언어
- Deque
- 아두이노 소스
- directx
- Today
- Total
Kim's Programming
3차원 그래픽스 투영의 종류 본문
투영의 종류
투영방식은 상대적인 크기가 유지되는 평행투영(Parallel Projection)과 거리에 따라 크기가 다르게 투영되는 원근투영(Perspective Projection)으로 구분됩니다.
평행투영(Parallel Projection)
평행투영에서는 3차원 객체를 2차원 평면인 투영면에 일정한 각도로 투영을 시키며, 이 경우 모든 투영선이 평행이므로 원래 객체들 간의 상대적인 크기가 그대로 유지됩니다. 평행투영은 직각투영, 등축투영, 경사투영으로 분류됩니다.
1) 직각 투영(Orthographic Projection)
직각 투영은 3차원 공간의 좌표계에서 x, y, z축 가운데 한 축과 투영방향이 동일하고 투영면은 이 축과 직각이 되도록 배치하여 투영하는 방법을 의미합니다. 직각투영은 처리과정에서 변환과정이 매우 간단한것이 특징입니다. z축방향으로 직각투영 할 경우 z좌표값만 0으로 바꾸면 끝납니다.
2) 등축 투영(Axonometric Projection)
대표적인 등축투영 방식인 삼축투영 (Isometric Projection)에서는 투영면이 각 축의 방향으로 같은 거리에 위치 하고 이 평면에 직각방향으로 투영을 합니다.투영면은 x+y+z+c=0인 평면이 되고 모든 투영선은 x=y=z벡터와 평행이 됩니다.
3) 경사 투영(Oblique Projection)
경사 투영은 투영 방향과 투영면이 직각방향이 아니고 일정한 다른 각도를 이루고 있는 경우 입니다. 경사 투영에서는 45도 또는 60도인 경우가 많이 사용되며 투영결과에서 상대적 크기는 유지됩니다.
원근(Perspective Projection)
원근투영에서는 평행푸영에서와는 다르게 평행을 이루지 않고 투영면에 직각방향으로 투영이 되지 않습니다. 평행투영에서는 하나의 시점에서 3차원 객체를 바라본 모습이 투영면에 나타나므로 모든 투영선이 시점에 모이게 됩니다. 원근투영을 이용하면 시점에서 멀리 떨어져 있는 객체는 작게 투영되고 가까이 있는 객체는 상대적으로 크게 투영되므로 사람의 눈으로 3차원 물체를 보는듯한 투영결과를 얻을 수 있습니다. 아래 그림에서 (0,0,Zprop)을 기준으로 임의의 점 P(x,y,z)를 원근투영 시켰을 때 투영면 (Xp,Yp,Zp)의 좌표값은 다음과 같은 식으로 구할 수 있게 됩니다.(비례 식을 통하여 구합니다.
뷰잉 변환(Viewing Transformation)
뷰잉 과정
3차원 뷰잉과정 중에서 뷰잉 변환은 월드좌표계로 통합된 3차원 객체들을 투영변환이 쉽게 적용될 수 있도록 뷰잉 좌표계로 바꾸어 표현하는 과정입니다. 뷰잉변환 단계에서 뷰평면과 뷰잉좌표계를 설정하면 다음 단계인 투영변환에서 사용될 뷰 볼륨 및 튜영면을 뷰잉좌표계에서 지정할 수 있습니다. 뷰잉좌표계는 투영변환을 위하여 사용되는 좌표계로서 대개의 경우 투영방향은 z축 방향이고 투영이 되는 뷰평면은 xy평면으로 설정하여 사용합니다. 뷰잉좌표계의 설정이 완료되면 월드좌표계에서 표현된 3차원 객체들을 뷰잉좌표계로 바꾸는 뷰잉변환을 실행합니다.
투영변환은 월드좌표계에서 뷰잉좌표계로 변환된 3차원 객체를 2차원 뷰평면에 투영시켜 투영좌표계로 변환시키는 과정입니다. 투영의 방식 중에서 평행투영을 적용하면 객체의 상대적인 크기가 유지되며, 원근투영을 적용하면 현실감있는 장면을 얻을 수 있습니다. 또한 투영변환을 수행하고 나면 직각형태의 뷰볼륨이 되므로 클리핑을 쉽게 처리할 수 있습니다. 투영변환을 거쳐 2차원 그래픽스 뷰잉과정과 같이 뷰포트 변환과정에서 출력장치의 장치 좌표계로 표현됩니다.
뷰잉좌표계(Viewing Coordinate System)의 설정
투영변환이 실행되기 위해서는 몇개를 지정해야합니다.
- 뷰평면 : 투영면
- 뷰볼륨 : 클리핑 공간
- 투영방향, 투영중심점 : 투영의 종류에 따라
객체에 기하변환을 적용을 하는 대신에 월드좌표계와 뷰잉 좌표계간의 좌표계변환을 적용해도 동일한 결과를 얻을 수 있기 때문에 좌표계변환을 하게됩니다. 좌표계변환의 과정은 다음과 같이 진행됩니다.
- 뷰잉좌표계를 이동시켜 월드좌표계와 뷰잉좌표계의 원점을 일치 시킵니다.
- 월드좌표계의 x축을 중심으로 뷰잉좌표계를 회전시킵니다. 이 때 뷰잉좌표계의 z축이 월드 좌표계의 zx평면에 위치하도록 합니다.
- 월드좌표계의 y축을 중심으로 뷰잉좌표계를 회전시켜서 두 좌표계의 z축을 일치시킵니다.
- 월드좌표계의 z축을 중심으로 뷰잉좌표계를 회전시켜서 두 좌표계의 y축을 일치시킵니다.
- x축은 자동적으로 결정되어 두 좌표계를 일치시킵니다.
'Computer Theory > Computer Graphics' 카테고리의 다른 글
3차원 그래픽스 객체의 모델링(1/2) (0) | 2016.01.25 |
---|---|
3차원 그래픽스 투영을 위한 변환 (4) | 2016.01.24 |
3차원 그래픽스 기하변환 (4) | 2016.01.24 |
3차원 그래픽스 (0) | 2016.01.24 |
래스터 변환과 2차원 윈도우 (0) | 2016.01.24 |