SSISO Community

시소당

OpenGL 용어 정리

3D의 기본적인 개념과 용어

■ 2D + 원근법 = 3D

: 물체의 깊이를 조절하는 데에는 선 사이의 각도가 중요한 역할을 한다.



두 눈 사이의 각도인 ϴ는 물체가 멀리 있을수록 커지며, 양쪽 이미지 사이의 각도를 늘려주면 3D효과 또한 증폭시킬 수 있다.


■ 3D의 인식

: 가까이 있는 물체가 멀리 있는 물체보다 커 보인다는 사실을 통해 눈에 보여지는 2D 효과를 3D로 인식할 수 있게 되는 것이다.


■ 모델링(Modeling)
: 무엇을 그릴까에 관한 것이 모델링이다.
이는 그래픽으로 표현하고자 하는 장면(Scene) 내부의 물체(Object)를 정의하는 작업이다.
평면 다각형의 집합으로 물체 표면을 정의하려면 다각형 정점의 위치를 명시하는 작업이 모델링이다. 여러 물체를 조합하여 새로운 물체를 정의하는 작업도 모델링 작업이다. 구체적으로 모델링은 2차원 또는 3차원 물체를 표현할 수 있는 자료구조와 해당 자료구조를 처리할 수 있는 알고리즘을 포함한다.



■ 렌더링(Rendering)


: 어떻게 그릴까에 관한 것이 렌더링이다.
조명을 어떻게 가할 것인가, 관찰자의 위치는 어디에 둘 것인가, 3차원 물체를 어떻게 2차원 화면으로 사상시킬 것인가, 물체 표면의 재질은 어떻게 입힐 것인가 등이 렌더링이다.



■ 원근법

: 선 사이의 각도를 조절하여 3차원 효과를 내는 기법을 말한다.
다만 “팝핑(popping) 현상”(앞면과 뒷면이 바뀌어 보이는 현상을 뜻함)이 있다는 문제점이 있으나 아래 그림과 같이 시야에 보이지 않는 선들을 제거하여 어떤 쪽이 앞면이고 뒷면인지를 보다 명확하게 표현할 수 있다.
이를 ‘숨겨진 표면 제거' 또는 ‘은면 제거'라고 한다.



 


■ 색상과 쉐이딩
: 위 그림은 오랫동안 주시하다보면 불록 튀어나온 상자가 아니라 움푹 파인 형태로 보일 수 있다. 이를 보완하기 위해서는 각 면에 색상을 추가할 필요가 있는데 모든 면에 같은 색상을 칠하면 오히려 3D 효과가 사라진다.


그러나 각 면에 서로 다른 색상을 적용하면 내부가 꽉! 차있는 듯한 효과를 얻을 수 있다.



■ 조명과 그림자
: 조명의 효과를 적용하여 각 면의 색상 진하기를 조절하고, 조명의 위치와 물체의 위치 및 각도를 고려하여 적절한 그림자를 넣으면 더욱 사실적인 물체를 만들 수 있다.







■ 텍스처 입히기
: 표면의 실제 사진 등의 이미지를 폴리곤의 면에 입히면 아주큰 효과를 줄 수있다.
이러한 과정을 텍스처 입히기, 즉 텍스처 맴핑(texture mapping)이라고 하며, 면에 입혀진 이미지를 텍스처, 텍스처의 각 요소들을 텍셀(texel) 그리고 물체의 표면에 맞추기 위해 텍셀을 늘리거나 줄이는 과정을 필터링(filltering)이라고 부른다.





■ 안개
: 장면 내의 물체를 흐릿하게 표현하는 방식의 특수 효과로, 관찰자로부터 물체가 얼마나 멀리 떨어져 있는가에 따라 안개의 농도를 적절히 조절하면 상당한 현실감을 낼 수 있다.




■ 블렌딩과 투명 효과
: 블렌딩(blending)은 화면상의 색상과 물체를 혼합하는 방식의 효과로, 두 이미지가 겹쳐있는 듯한 결과를 얻고자 할 때 사용된다.
유리잔 뒤에 배경이 비치는 등의 효과가 이에 해당한다. (반사 효과가 필요할 때도 활용된다.)


■ 안티 알리아싱
: 마치 계단 모양의 투박한 형태로 선이 표현되는 경우가 있다.
이러한 선을 배경과 적절히 블렌딩하면 부드러운 선으로 표현할 수 있다.



■ 실시간 3D
: 사용자의 입력에 따라 즉시 반응하는 것.





■ 즉시 모드와 보류 모드
- 즉시 모드 (Immediate Mode) : 물체를 화면에 그림과 동시에 물체 생성과 관련된 정보를 파기해 버립니다. 따라서 그 물체를 다시 그리려면 모든 코드를 처음부터 다시 실행해야 합니다. 이 경우 복잡한 장면 중 일부 물체만 변경하기를 원할 때에도 나머지 모든 물체에 대해서도 다시 코드를 실행해야 하는데 따른 시간적 부담을 요하게 됩니다.


- 보류 모드 (Retained Mode) : 정의된 물체 정보를 그대로 유지하고 재 사용합니다. 즉, 물체를 다시 그려낼 때 코드를 실행하지 않고 이미 정의된 물체를 컴파일 된 형태로 재 사용함으로써 빠른 속도를 보장하게 됩니다. 이러한 보류 모드는 Display List에 의해 이루어집니다.




■ 2D 직교 좌표계
: 2D에서 가장 많이 사용되는 좌표 시스템이다.
수평의 위치를 나타내는 x 좌표와 수직의 위치를 나타내는 y 좌표로 이루어진다.






■ 좌표의 클리핑
: 화면에 무언가를 그리기 위해서는 좌표를 어떻게 해석해야 되는지를 OpenGL에 알려주는 과정이 필요하다.

이를 위해 창이 차지하는 영역을 직교 좌표 영역으로 할당해야 하며, 정확히 말하면 직교 좌표계의 커다란 영역 중 일부를 잘라(clipping) 창에 할당하는 것이다.





■ 뷰 포트(ViewPort)
논리적 직교 좌표를 물리적인 화면 픽셀 화면 픽셀 좌표로 전환하는 과정이 필요하며, 이때 사용되는 것이 뷰포트라는 개념이다.

즉 클리핑 영역을 창에 적용시키는 기능을 한다.

뷰포트는 전체 창에 대해 적용되지만, 반드시 그럴 필요는 없으므로 원하는 부분만큼만 맵핑하는 것도 가능하다.
                     * 클리핑 영역의 두배 크기로 설정된 뷰포트



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




■ 버텍스(Vertex)
: 각 면의 구석에는 꼭지점(Vertex)이 있으며, 이 vertex는 3D 공간 내에서 특정한 한 좌표와 대응된다.


■ 3D 직교 좌표계




■ 투영 (3D를 2D로)
: 3D 좌표계 내에서 만들어진 지오메트리들을 편평한 2D 공간으로 옮기는 과정







■ 직교 투영
: 영역 내에 있는 모든 물체들이 거리에 관계없이 모두 같은 키기 비율로 표현된다는 것.



■ 원근 투영
: 물체가 얼마나 가까이 또는 멀리 있는가에 따라 2D 화면에 나타나는 크기가 달라지게 된다.


715 view

4.0 stars