DirectX Graphics 프로그래밍 가이드 Direct3D 의 기초지식 3D 좌표계와 지오메트리 면법선 벡터와 정점 법선 벡터   [목차열람] [주소복사] [슬롯비우기]
면법선 벡터와 정점 법선 벡터
 
Microsoft DirectX 9.0

면법선 벡터와 정점 법선 벡터


메쉬의 각면에는, 수직의 법선 벡터가 있다. 법선 벡터의 방향은, 정점이 정의되고 있는 순서와 좌표계가 왼손 좌표계나 오른손 좌표계 등에 의해서 정해진다. 면의 법선 벡터는 면의 앞면으로부터 멀어질 방향으로 향한다. Microsoft®Direct3D®에서는 앞쪽 면만 보인다. 앞면이란 각 정점이 시계방향 순서로 정의된 면이다.

법선 벡터

앞면 이외의 면은 뒷면이다. Direct3D 에서는, 뒷면이 항상 렌더링 되는 것은 아니다. 이것을 뒷면컬링(Culling)라고 말한다. 컬링(Culling) 모드를 변경하면 뒷면을 렌더링 할 수 있다. 더 자세한 정보는 「컬링(Culling) 스테이트」를 참조할것.

Direct3D 는, gouraud shading, 조명 이펙트, 텍스처 이펙트의 제어에 정점 법선을 사용한다.

정점 법선

gouraud shading를 다각형에 적용 할 때 Direct3D 에서는 정점 법선을 사용해 광원과 표면간의 각도를 계산한다. Direct3D 에서는, 정점의 색과 강도의 값을 계산해, 기본도형의 표면 전체의 모든 포인트에 대해서 이 값을 보간 한다. Direct3D 에서는, 이 각도를 사용해 조명의 강도의 값을 계산한다. 각도가 큰 만큼, 표면을 비추는 빛이 약해진다.

평탄한 개체를 생성 하는 경우, 다음 그림이 나타내듯 정점 법선을 표면에 대해서 수직으로 설정한다. 2 개의 삼각형으로 구성되는 평탄한 표면이 정의되고 있다.

평탄한 표면의 법선

그러나, 보통은 개체가 삼각형 스트립으로 구성되어 그러한 삼각형이 동일 평면상에 없는 것이 많다. 스트립의 모든 삼각형 전체에 매끄러운 쉐이딩을 입히려면 , 우선 정점에 관계 붙일 수 있는 각 다각형의 표면에 대해, 면법선 벡터를 계산하는 것이 간단하다. 정점 법선은, 그 주위의 각 표면의 법선으로부터의 각도가 동일해지도록(듯이) 설정할 수 있다. 다만, 이 방법은 기본도형가 복잡한 경우에는 효율적이 아닌 경우가 있다.

이 방법에 대해 다음의 그림으로 설명한다. 이 그림에서는, S1 와 S2 의 2 개의 표면이 있어, 위로부터 보면 엣지가 겹치고 있다. S1 와 S2 의 법선 벡터는 청색으로 가리킨다. 정점 법선 벡터는 적색으로 가리킨다. S1 의 면법선과 정점 법선 벡터가 이루는 각도는, S2 의 면법선과 정점 법선이 이루는 각도와 같다. 이것들 2 개의 표면에 라이트를 대어 gouraud shading으로 음영을 붙이면, 표면간의 엣지의 음영이 매끄럽게 되어 둥그스름을 띤다.

굿 로 쉐이딩의 정점

정점 법선이, 관계 붙일 수 있는 표면중 1 개에 기울고 있는 경우, 광원과 면의 각도에 응해 표면 위의 점에 대한 빛의 강도가 증가 또는 감소한다. 이 예를 다음의 그림으로 가리킨다. 이 그림에서도, 표면의 엣지는 겹치고 있다. 정점 법선은 S1 편에 기울고 있으므로, S1 와 광원의 각도는, 정점 법선과 2 개의 면법선의 각도가 동일한 경우보다 작아진다.

굿 로 쉐이딩의 정점

gouraud shading를 사용해, 날카로운 엣지가 있는 개체를 3D 장면에 표시할 수 있다. 이 때문에는, 다음 그림이 나타내듯 날카로운 엣지가 필요한, 면의 교점의 위치 좌표 2 개의 정점으로써 각각의 면과 같은 법선 벡터가 필요하다.

날카로운 엣지의 정점

DrawPrimitive 메서드를 사용해 장면(scene)를 렌더링 하는 경우, 엣지가 날카로운 개체는, 삼각형 스트립은 아니고 삼각형 리스트로서 정의한다. 개체를 삼각형 스트립으로서 정의 하면, Direct3D 에서는 그 개체를 복수의 삼각형의 면으로 구성된 단일의 다각형으로서 취급한다. gouraud shading는, 다각형의 각면 및 인접하는 면과의 사이의 양쪽 모두에 적용된다. 그 결과, 개체의 면의 경계가 매끄럽게 쉐이딩 된다. 삼각형 리스트는, 일련의 독립한 삼각형의 면으로부터 구성되는 다각형이므로, Direct3D 에서는 다각형의 각면에 gouraud shading이 적용된다. 다만, 면과 면의 경계에는 gouraud shading는 적용되지 않는다. 삼각형 리스트의 복수의 삼각형이 인접하고 있는 경우, 그 삼각형의 사이에는 날카로운 엣지가 표시된다.

또, 엣지가 날카로운 개체를 렌더링 할 때 flat shading로 변경하는 방법도 있다. 이것은 컴퓨터에는 가장 효율적이지만, gouraud shading를 적용한 개체보다 리얼리티가 부족한 개체가 장면(scene)에 표시될 가능성이 있다.



© 2002 Microsoft Corporation. All rights reserved.
↑TOP