3D 그래픽스 용어 정리-2


<<상기의 3D그래픽스 용어 정리-2>>

용어정리1은 링크해놓겠다!!!
2011/01/07 - [프로그래밍/Direct3D] - 3D 그래픽스 용어정리-1

0.비실시간 랜더링,실시간 랜더링

비실시간 랜더링:불편한 랜더링 타임을 없애고 효과를 주는 즉시, 
결과를 확인 할수 있는 형태를 실시간 랜더링이라 한다.
                이러한 기술은 효과 및 자막의 랜더링을 소프트웨어에 의존했던 
                기존의 방식을 탈피해 편집보드의 칩에 효과를 넣어 하드웨어 
                랜더링을 실시하므로 실시간 랜더링을 구현했다.



실시간 랜더링:
일괄처리와 같이 일정 기간 동안 발생된 데이터를 모아 한 번에 처리하는 방식으로 실시간 체계로 이루어지지 않는 시스템


1.옵티마이즈( optimize ) :
최적화(좋게 만들다)


2.밉맵: 
하나의 텍스쳐를 일정한 크기로 축소시켜서 여러장을 가지고 그려질때 현재 사이즈에 
가장 적합한 이미지를 찾아서 쓰는 것을 말한다.
문제는 실제 화면에 한픽셀을 차지하는 폴리곤이 있다고 했을때 그 한픽셀을 그리기 위해서 
512 X 512 크기의 텍스쳐를 모두 필터링해서 하나의 픽셀을 가져온다고 생각해보자.
생각만으로도 느릴것같다는 생각이 들지 않는가? ( 아니라고 말하는 당신. 그냥 그렇다고 생각해주시구려... ) 그래서 나온것이 바로 밉맵이다.


3.고정파이프 라인
미리 정해진 형식"으로 설정하기만 하면 됩니다.
이렇게 "미리" 정해진 연산을 수행할 수 있도록 제공되는 기능이 바로 고정함수 파이프라인(Fixed Pipeline)


4.프로그래머블 파이프라인(shader)
고정함수 파이프라인을 이용해서 왠만한 것들을 표현하는 것이 가능합니다. 하지만 시간이 지날 수록 사람들은 고정함수 파이프라인이 제공하지 않는 다른 특별한 표현을 하고자 하는 욕망을 품게 되었으며, 고정 함수 파이프라인의 성능에 대한 의구심을 품게 되었습니다.
예를 들면 "D3DFOG_LINEAR, D3DFOG_EXP, D3DFOG_EXP2 가 아니라 Volume Fog 를 사용하고 싶어요" 같은 요구가 생겨나게 된 것입니다. D3D 가 고정적으로 지원하는 기능이 아니기 때문에 사용자가 직접 구현해야 할 필요가 생긴 것입니다.
이러한 요구를 받아 들여 하드웨어 제조 업체와 마이크로 소프트는 Vertex Shader 와 Pixel Shader 라는 것을 발표하게 됩니다. 이 쉐이더를 사용하는 일련의 작업들은 하드웨어 상에서 처리되는 작업들에 대한 코드를 프로그래머가 직접 조작할 수 있다는 의미에서 프로그래밍 가능한 파이프라인(programmable pipeline) 이라고 불립니다
Vertex Shader 는 정점 처리에 대한 부분이고 Pixel 쉐이더는 픽셀 처리에 대한 부분입니다. Pixel 쉐이더는 fragment 쉐이더라고 불리기도 하는데, 개인적으로는 프래그먼트 쉐이더가 더 정확한 의미를 전달한다고 생각합니다. 일반적으로 픽셀이라는 것은 화면에 찍히는 점 하나를 의미합니다. 하지만 프래그먼트는 그 점이 계산하기 위해서 필요로 하는 여러 가지 정보들을 모두 포함하는 개념입니다.

버텍스 쉐이더
지오메트리 쉐이더
픽셀 쉐이더


5.LOD
LOD란 "멀리있는 물체는 잘 보이지 않는다"는 생각을 바탕으로, 렌더링될 이미지에 기여도가 작을 경우 간략하게 표현하는 방법이다. 
LOD는 기여도를 나타태는 LOD단계를 이용하여 간략한 정도를 정한다. 
이 때 어떤 방법을 이용하여 LOD단계를 얻어내느냐에 따라 성능이나 속도에 차이가 생긴다

6.Culling: 
실제 화면에 안보이는 폴리곤을 그리지않도록 추려내는 작업입니다.
컬링은 3D프로그래밍에서 다양한 방법으로 적용됩니다. 즉 한가지만 딱 두고 컬링이라고 하는게 아닙니다 . 
지금 생각나는 예는 2가지 인데 우선 후면컬링(즉 폴리곤을 그릴때, 화면상에 보이지 않은 뒷면, 
즉 삼각형의 양쪽면을 앞면 뒷면이라고 할때, 뒷면을 그리지 않음으로써 연산속도 향상을 가져옵니다. 
실제로 3D게임할때, 캐릭터같은것을 뚫고 들어가면 속안이 보이지 않는것이 그 예입니다.) 
그리고 다른 하나는 절두체 컬링(이것은 카메라에 들어오지 않는, 즉 카메라에 들어오지 않은 폴리곤을 렌더링 처리를 애초에 하지 않도록 해서 속도향상을 가져오는 기법입니다.)


7.Decal: 
이건 저도 많이 애매하군요. 대충 흝어보고 지나간거라.  decal은 그러니깐 스티커를 붙인다고 이해하면 쉽습니다. 
3D벽 모델같은 것이 있다고 생각하면 여기에는 벽돌 텍스쳐 같은것이 맵핑되어 있을것입니다. 
자 그럼 이 벽에다가 총을 한방 쐈을때, 당연히 벽에는 총알이 쏘고난뒤에 남는 탄흔이 동그렇게 탄 모양으로 남아잇어야 합니다.  
그럼 이 벽모델은  벽돌 텍스쳐위에 추가로 동그랗게 탄 모양을 일정부분에 그려줘야 합니다. 
바로 이렇게 텍스쳐가 그려진 모델위의 특정 부분에 새로운 텍스쳐를 덧씌우는걸 데칼이라고 합니다. 
아마도 맞길 바라며  ^^;; 제가 이렇게 알긴 아는데 확신은 못합니다.

 
8.Emitter :  
이건 아마도 파티클 시스템에서 나온거같군요. 대충 파티클 시스템의 파편을 방출하는 방출 오브젝트라고 생각하시면 될듯합니다. 
물론 꼭 오브젝트가 아니라 클래스의 이름이나, 추상적으로 방출하는것, 물체라고 말할수도 있습니다.

 
9.GeoMorphing : 
글쎄요 이건, 아마도 지형관리쪽에서 나온것 같은데, 제가 아는건 BSP쪽에서 본겁니다. 쉽게 말해, 지형이 잇을때, 가까이 잇는건 자세히 보여주고, 멀리 잇는건 폴리곤수같은걸 줄여서 대충보여줘서 연산량을 줄이는 기법입니다. 물론 제가 지형을 점차 이동함에 따라 더 가까이 있는 지형은 점점 정밀하게 보여지고, 멀리잇는건 대충보여지게 됩니다. 



10.Material : 
쉽게 말해 재질입니다. 물체가 빛을 받게 되면, 반사를 하고 그 반사된 빛을 우리 눈이 인지하게 됩니다. 물체가 빛을 받을때, 
반사되는 정도는 물체마다 전부 틀립니다. 3D프로그래밍에서는 대략 ambient, diffuse, specular라는 세가지 속성으로 이것을 표현하는데, 
재질이란것은 빛을 받을때 반사되는 정도를 저 세가지 속성으로 표현한 것입니다. 물론 저 세가지 속성은 빛도 마찬가지로 가지고 있습니다.
  따라서 빛 * 물체의 재질 = 화면상에 표현되는 색상 이라고 생각하시면 됩니다. 물론 텍스쳐를 입히면 저기에 *텍스쳐가 들어가게 됩니다. 



11.Multi Viewport : 
멀티뷰포트, 이넘은 윈도우창을 나눴다고 보시면 됩니다. 카메라(즉 뷰행렬)는 하나는 뷰포트에 연결되었다고 할 수 잇습니다. 
왜 게임같은것을 보면, 여러개의 분할화면으로 나뉘어진 게임 같은걸 보면 쉽게 이해할수 잇습니다. 2인대전 자동차 레이싱게임같은것
(슈퍼마리오카트같은)을 보면 상하로 화면이 분할되어 있습니다. 그것들은 각각 2개의 뷰포트를 만들어서 위아래로 나뉘어 찍은것입니다. 
좀더 자세히 설명하자면, 그래픽스 api 도움말 같은데 자세히 나와 있으나, 짧은지식으로 얘기하자면은 하나의 3D모델을 3D공간상에 찍으면 
World-View-Projection행렬을 거쳐서 2D이미지가 컴퓨터 메모리내에 만들어집니다. 
이 이미지는 다시 뷰포트 변환 행렬을 거쳐서 화면상에 어디에 찍힐지 결정됩니다. 
기본적으로 DirectX같은 경우는 이런 뷰포트를 따로 만들지 않으면 기본적으로 이미지를 전체윈도우에 그대로 맵핑시킵니다. 
그러나 뷰포트변환행렬을 여러개 만들어서 서로 다른 카메라로 얻은 장면을 화면 곳곳에 분할시켜 위치시키는것이 가능합니다. 
 

12.Normal Map : 
노말맵을 얘기하기 전에 먼저 노말을 얘기합니다. Normal이란것은 가령 정점에 잇다고 햇을때
(보통 정점에 있지만 폴리곤전체에 노말한개이런식으로 계산할때도 있습니다. ) 
그 정점과 빛 사이의 각도를 재서 이 정점이 빛을 현재 얼마나 받고 잇는지 처리하기 위한 방법입니다. 
정점에 잇는 노말과 빛이 일직선이면 가장 빛을 많이 받고, 만약 정점과 노말이 서로 반대 방향이면 빛을 받지 못하는겁니다.  
이 노말맵이란 것은 이런 노말 (노말은 vector로 표현됩니다 즉, ,x,y,z로 방향을 표시합니다) 을 텍스쳐 픽셀 하나하나의 값에다가 
즉 rgb값으로 저장해서 3D모델의 빛에 대한 표현율을 비약적으로 높인것입니다.  
즉 20개의 정점으로 이루어진 원형구가 있다면 이것은 분명 폴리곤 면이 각지게 보일것입니다. 
그러나 이 원통 구에다가 노말맵 방식으로 만들어진 텍스쳐를 맵핑하여 그 노말맵과 빛과의 계산을 하여(보통 내적을 합니다.) 
3D모델이 2D 이미지로 맵핑될때의 그 지점의 색깍을 구하게 되면 눈에 확 띌정도로 부드럽게 보입니다. 
노말맵을 만들어주는 여러가지 툴이 나와있습니다. 3dMax, Maya, photoshop등등


13.Phys mesh : 
이건 아마도 작가가 약어를 쓴것 같습니다. physical Mesh 즉 물리매쉬가 아닌듯 싶습니다. 

 
14.Render Param : 
이것도 역시 작가가 약어를 쓴것 같습니다. Rendering Parameter 즉 렌더링 매개변수


15.Sequence  : 
시퀀스, 연속적인, 이것은 각각에 해당하는 내용에 따라 그때그때 다릅니다. 
즉 연속적인 동작을 뜻할수도 있고, 연속적인 노드, 연속적인 그림, 연속되는 에니메이션 등등


16.Specular(반사) Map : 
아까 노말맵을 말씀드렸다면 이것도 약간 비슷하게 이해하면 될것 같습니다.  
스페큘러맵은 Heightlight 즉 물체에 빛을 비췄을때, 특히나 밝게 반사되는 부분을 위해서 만들어진 맵입니다. 
저도 제가 써보질 않아서 아는것은 여기까지 입니다. ^^;


17.Thumbnail : 
썸네일, 간결하게 앞으로 이야기할 내용이나, 현재 이야기하는 내용, 지금까지 이야기한 내용을 요약한것을 말하기도 하고, 
미리 보여주는 작은 그림같은것들, 즉 요약된것, 간단히 줄여서 보여주는것 이라고 이해하시면 됩니다. 


18.CCW
Counter ClockWise의 약자로 시계반대 방향을 나타냄
D3DX가 기본으로 하고있는 방향.


19. 기타


// 해골책 참조
vertex(정점) : 수학적인 연산에서는 point(점)을, 구체적으로 프로그래밍할 때는 vertex라고 한다.

pixel(화소) : 화면상에 실제로 보이게 되는 물리적인 점을 말한다.

affine transform : 이동과 회전만으로 이루어진 행렬.

polygon : 3개의 vertex로 만들어진 삼각형.

edge(모서리) : polygon에서 vertex와 vertex를 연결하는 직선.

mesh : polygon이 모여서 만들어진 3차원 공간의 object(객체).

shading : polygon에 음영을 넣는 작업.

mapping : 3차원 정점에 이미지를 입히는 작업.

texture mapping : 3차원 물체에 texture를 입히는 것.
                         이때 이미지를 texture, 또는 texture map이라고 한다.

FVF(Flexible Vertex Format) : 사용자 정의 정점 형식.

T&L(TnL) : Transform & Lighting

Vertex Buffer : 정점을 모아두는 일종의 메모리.
                    비디오 메모리와 시스템 메모리 두 가지의 메모리를 사용.

interpolation : 보간.

로컬 좌표계 : 최초에 3차원 데이터가 생성되는 시점에서 기준이 되는 원점을 중심으로 한 좌표계.

TM(Transform Matrix) : 로컬 좌표계를 월드 좌표계로 변환하는 행렬.

World Transform : 로컬 좌표계를 월드 좌표계로의 변환하는 것.

Camera Transform : 뷰변환.
3차원 월드 좌표계를 카메라를 기준으로 한 카메라 좌표계로 변환하는 것.

Projection Transform : 투영변환.
                        3차원 좌표계를 2차원 좌표계로 바꿔주는 변환.
                        orthographic projection(직교투영)과 perspective projection(원근투영).

frustum : 절두체.

material : 재질. 메시(혹은 물체)의 표면 상태를 말하는 것.
             빛이 물체의 표면에서 반사되어 변화된 뒤 사람의 눈에 들오오기까지의 과정을
             수학적으로 모델링하기 위해서 사용하는 값들.
             주변광, 확산광, 반사광, 방출광이 있다.


<광원>
ambient(주변광) : 최저 평균 밝기. 똑같은 양으로 모든 면에서 나오는 빛.
diffuse(확산광) : 표면의 모든 점들에 균일하게 비춰지는 빛.
specular(반사광) : 특정한 방향으로만 반사하는 빛.
                   광원의 위치와 카메라의 위치에 따라서 달라진다.
emissive(방출광) : 메시 표면에서 자체적으로 방출되는 빛.
                   이 빛이 다른 메쉬에 영향을 주지는 못한다.



raytrace(광선추적) : 빛이 물체 표면에서 반사되어 인간의 눈에 도달하기까지의 과정을 시뮬레이팅.



<광원>
-주변광원 : 배치나 위치에 전혀 상관없이 똑 같은 양으로 모든 곳을 비추는 빛. 물론 방향과 위치는 없으며 색깔과 강도만이 존재한다. 당연히 이것이 실세계에는 존재하지 않는 빛이다.
-점 광원 : 말그대로 점광원.
-방향성 광원 : 태양광선처럼 한 방향으로 평행하게 비추는 빛
-점적 광원 : 무대에서 쓰는 Spot light 이다


ambient light : 주변 광원. 3차원 공간 내에서 메시의 배치나 위치와는 전혀 상관없이 똑같은 양으로 
모든 곳을 비추는 빛의 강도를 말한다. 방향과 위치가 없으며, 색깔과 강도만이 존재한다.

point light : 점 광원. 직관적으로 가장 쉽게 생각할 수 있는 빛이다. 
예를 들면, 백열전구를 생각하면 된다. 광원의 위치, 방향에 따라 빛의 강도가 달라진다.

directional light : 방향성 광원. 모든 광원의 방향이 하나의 방향을 갖는 것으로 완벽하지는 않지만 태양을 예로 들 수 있다. 광원의 위치는 상관 없고, 방향이 가장 중요한 요소다.

spot light : 점적 광원.  정해진 위치와 범위에만 비추는 특수한 조명을 말한다. 흔히 영화나 쇼 무대에서 사용하는 점적 광원 조명을 생각하면 된다.

IB(Index Buffer) : 정점을 저장하기 위한 정점 버퍼와 마찬가지로 정점의 인덱스를 보관하기 위한 전용 버퍼를 말한다.


마이크로 소프트에서 제공되는 D3DX의 용어 설명집






공부하면서 계속적으로 추가하겠음 ㅎㅎ

이 글을 공유하기

댓글

Designed by JB FACTORY