BLOG main image
FunnyPR (32)
OpenGL (20)
PatternRecognition (7)
Tips (2)
XML (1)
DataMining (1)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
2014. 4. 19. 18:12

◆ OPENGL - 3D 프로그래밍을 위한 기본적인 지식들 


실시간 3D 그래픽을 위한 API 프로그래밍 방식은 크게 두 가지로 나뉨

1. 보류 모드(Retained Mode)

- 물체나 장면에 대한 정보를 API 또는 툴킷에 제공

- API 또는 툴킷은 내부적인 처리를 거쳐 화면에 출력할 이미지를 만들어 내는 방식

- 사용자는 카메라의 위치나 방향을 조정하거나 장면 내의 다른 ㅁㄹ체에 대한 약간의 정보 정도만 다루면 됨

적용 예: 광선 추적기, 비행 시뮬레이션, 이미지 생성기 

- 장면 내의 모드 물체들과 그 사이의 관계를 미리 만들어진 데이터 구조로 만들어 두고, 이 구조에 축적인 약간의 정보들만 제공하여 완성된 이미지 만들어 냄

- 렌더링에 대한 세부적인 부분까지 신경 쓸 필요가 없다는 장점. 사용이 편함

- 최종 이미지 생산을 위해 중간 단계 구조(Scene graph)를 가지는 특징이 있음


2. 즉시 모드(Immediate Mode)

- 이미 실행된 명령에 대해서는 그 후에 내려진 명령이 아무런 영향을 주지 못함



▶ 좌표체계

OpenGL을 포함한 대부분의 3D API에서는 화면 내에 무언가를 그리고자 할 때 어떤 좌표계(Coordinate System)을 사용할 것인지, 그리고 그 좌표가 물리적인 화면의 픽셀과 어떻게 대응될 것인지 함께 지정해야 함

2D, 3D 

좌표계 설정 - OpenGL 은 오른손 좌표계를 사용함 

픽셀 설정이 필요함






http://www.hyperzoid.com/csc492/rendering.html


▶ 좌표의 클리핑(Clipping: 자르기)

클리핑 영역을 설정할때 참고 해야 함

http://lueseypid.tistory.com/37


▶ 뷰포트: 드로잉 좌표와 창 좌표의 매핑

클리핑 영역과 창의 픽셀 수가 정확히 맞아떨어지는 경우는 드물다. 따라서 논리적 직교 좌표를 물리적ㅇ니 화면 픽셀 좌료로 전화하는 과정이 필요한데, 이때 사용되는 것이 뷰포트(Viewport)라는 개념이다.

클리핑 영역에 두배 크기로 설정된 뷰포트



클리핑 영역과 같은 크기로 설정된 뷰포트



▶ 투영: 3D를 2D로 설정



우리가 보는 영상이 3D라도 실제 화면에 나타나는 것은 2D이다. 따라서 3D 이미지들이 2D로 투영되여 화면에 나타나는데 두가지 방법이 사용된다. 


1. 직교 투영(Orthographic Projection)

- 모든 물체들이 거리에 관계없이 동일한 크기 비율로 투영됨

- 주로 건축물의 설계도나 디자인 문서 등에 주로 사용됨


2. 원근 투영(Perspective Projection)

- 물체가 얼마나 가까이 또는 멀리 있는가에 따라 거리를 고려하여 투영



http://www3.ntu.edu.sg/home/ehchua/programming/opengl/CG_Introduction.html