3D프로그래밍 이론 기초정리

1. 3차원 공간 개념 
다이렉트는 왼손좌표계를 쓴다.
Z좌표가 들어가는 쪽이 + 다.




2. 벡터, 행렬에 대한 이해
행렬변환 -> 이동,회전,크기 을 쉽게 할 수 있다.
이동과 회전만을 하는 변환을 아핀변환이라고함

3D그래픽에서 행렬을 사용하는이유?
=>
행렬을 사용하는 가장 큰이유는 이동회전크기를 행렬을 사용하면 쉽기때문,
또한 결합법칙이 성립하게 때문에 연산횟수를 엄청 줄일수있다(변환행렬을 한번에 구해서 계산)

벡터의 내적연산: 은면제거 기법에 사용, 또는 좌표계변환, 조명계산에 많이 사용
벡터의 외적연산: 두벡터를 외적하면 두 벡터의 평행한 벡터가 나온다는 성질을 이용해 법선벡터를 만듬 
  




3.폴리곤(polygon), 정점(vertex), 변(edge),  텍스쳐(texture),
깊이버퍼(Z-버퍼) 이해 

 

폴리곤: 3개의 점정으로 만들어진 삼각형
정점: 하나의 버텍스 (3차원상의 점)
변: 점점과 정점을 이은것
메쉬: 폴리곤들이 모여 3차원 물체를 만드는것(하나의 오브젝트)
=>변은 프로그래밍상에서 잘 쓰이지 않음.
=>메쉬와 버텍스를 가장 많이 씀 

 
택스쳐 : 3차원물체에 2차원의 이미지를 입히는 방법
텍스쳐를 하는이유?
=>3차원 정점만으로 화면에 물체를 나타내게 되면 메모리 문제 같은 제약이 많이 따름
그래서 텍스쳐기법을 이용해서 섬세한 물체를 표현하게 함 

매핑: 3차원 정점에 2차원이미지를 입히는것:

3차원 물체에 텍스처를 입히는 것을 텍스처 맵핑이라고 하고, 맵핑이 되는 2차원 이미지를 텍스처, 혹은 텍스처 맵이라고 
부릅니다.

깊이버퍼( Z버퍼 ):
화면에 그려질 하나하나의 픽셀에 대한 깊이 값을 보관하는 버퍼를 말함
3D 그래픽에서는 렌더링 파이프 라인이라는 것이 존재하는데, 렌더링 파이프 라인의 가장 핵심적인 내용 중의 하나가 3차원 공간을 2차원 모니터상에 출력하도록  변환(transform)이라는 과정을 거치는 것입니다.투영(projection) 변환의 과정을 거치게 되는데, 최종적으로 카메라 변환과 투영 변환까지 거치게 되면 3차원 공간상의 모든 정점은 ( -1, -1, 0 ) ~ ( 1, 1, 1 ) 사이의 공간에 위치하게 됩니다.이때, (x, y, z)를 보면 Z값이 0.0 ~ 1.0 사이의 값이라는 것을 알 수 있을 것입니다. 
Z 버퍼란, 화면에 그려질 픽셀들의 Z값을 보관하는 특별한 버퍼(0.0 ~ 1.0 사이의 값을 보관하는 소수점 버퍼)를 말합니다




4.쉐이딩 기법
 

쉐이딩: 폴리곤에 음영을 넣는 작업
플렛쉐이딩: 하나의 폴리곤을 단색으로 처리하는 방식 (딱딱하게 각진 모습 )
고로쉐이딩: 폴리곤의 내부를 점정의 색에 따라 보간(interpolate) 하여 칠하는 방식
퐁쉐이딩:
래디오시티:
광선추적:
->퐁(Phong) 셰이딩 등의 기법이 있으나, 아직까지는 하드웨어적인 지원을 받지 못하고 있습니다.
그러나 Cg나 Vertex Shader 등을 통하여 Phong Shading,Radiosity, Raytracing을 GPU 수준에서 구현할 수 있음
것입니다


이 글을 공유하기

댓글

Designed by JB FACTORY