면 및 꼭짓점 법선 벡터
메시의 각 면에는 수직 단위 법선 벡터가 있습니다. 벡터의 방향은 꼭짓점이 정의된 순서와 좌표계가 오른쪽 또는 왼쪽인지 여부에 따라 결정됩니다.
앞면에 대한 수직 단위 법선 벡터
메시의 각 면에는 수직 단위 법선 벡터가 있습니다. 벡터의 방향은 꼭짓점이 정의된 순서와 좌표계가 오른쪽 또는 왼쪽인지 여부에 따라 결정됩니다. 면 법선 점은 면의 앞쪽에서 떨어져 있습니다. Direct3D에서는 앞면만 표시됩니다. 앞면은 꼭짓점이 시계 방향 순서로 정의되는 면입니다.
다음 그림에서는 앞면에 대한 법선 벡터를 보여 줍니다.
뒷면 고르기
앞면이 아닌 모든 면은 뒷면입니다. Direct3D는 항상 뒷면을 렌더링하지는 않습니다. 뒷면은 선별된다고 합니다. 뒷면 고르기는 렌더링에서 뒷면을 제거하는 것을 의미합니다. 원하는 경우 뒷면을 렌더링하도록 고르기 모드를 변경할 수 있습니다. 자세한 내용은 고르기 상태를 참조하세요.
꼭짓점 단위 법선
Direct3D는 꼭짓점 단위 법선을 고우러드 음영, 조명 및 질감 효과에 사용합니다.
다음 그림에서는 꼭짓점 법선을 보여 줍니다.
고우러드 음영을 다각형에 적용하는 경우 Direct3D는 꼭짓점 법선을 사용하여 광원과 표면 사이의 각도를 계산합니다. 꼭짓점에 대한 색과 강도 값을 계산하고, 모든 기본 요소의 표면을 교차하는 모든 점에 대해 이를 보간합니다. Direct3D는 각도를 사용하여 밝기 강도 값을 계산합니다. 각도가 클수록 표면에 비치는 조명이 줄어듭니다.
평면
평면 개체를 만드는 경우 꼭짓점 법선을 표면에 수직인 점으로 설정합니다.
다음 그림에서는 꼭짓점 법선이 있는 두 개의 삼각형으로 구성된 평면을 보여 줍니다.
비평면 개체의 부드러운 음영
평면 개체가 아닌 개체는 삼각형 스트립으로 구성되고 삼각형이 동일한 평면에 있지 않을 가능성이 더 높습니다. 스트립의 모든 삼각형에 걸쳐 부드러운 음영을 적용하는 한 가지 간단한 방법은 먼저 꼭짓점이 연결된 각 다각형 면에 대한 표면 법선 벡터를 계산하는 것입니다. 꼭짓점 법선은 각 표면 법선과 동일한 각도가 되도록 설정할 수 있습니다. 그러나 이 방법은 복잡한 기본 요소에 대해 충분히 효율적이지 않을 수 있습니다.
이 방법이 다음 다이어그램에 나와 있습니다. S1과 S2라는 두 개의 면이 있고, 모서리가 위에 있습니다. S1과 S2의 법선 벡터는 파란색으로 표시되어 있습니다. 꼭짓점 법선 벡터는 빨간색으로 표시되어 있습니다. 꼭짓점 법선 벡터와 S1의 표면 법선이 이루는 각도는 꼭짓점 법선과 S2의 표면 법선이 이루는 각도와 동일합니다. 이러한 두 표면을 비추고 고우러드 음영을 적용하면 두 표면 사이에 부드럽게 음영 처리되고 부드럽게 둥근 모서리를 얻습니다.
다음 그림에서는 두 표면(S1과 S2)과 해당 법선 벡터 및 꼭짓점 법선 벡터를 보여 줍니다.
꼭짓점 법선이 연결된 면 중 하나로 기울면 광원과 이루는 각도에 따라 해당 표면의 점에 대한 밝기 강도가 증가하거나 감소합니다. 다음 다이어그램에서는 한 가지 예를 보여 줍니다. 이러한 표면의 모서리가 위에 있습니다. 꼭짓점 법선이 S1 쪽으로 기울어 꼭짓점 법선이 표면 법선과 동일한 각도가 될 때보다 광원과의 각도가 더 작아집니다.
다음 그림에서는 꼭짓점 법선 벡터가 한 면으로 기운 두 개의 표면(S1과 S2)을 보여 줍니다.
날카로운 가장자리
고우러드 음영을 사용하여 3D 장면에 가장자리가 날카로운 일부 개체를 표시할 수 있습니다. 이렇게 하려면 날카로운 가장자리가 필요한 면의 모든 교차점에서 꼭짓점 법선 벡터를 복제합니다.
다음 그림에서는 날카로운 가장자리에서 복제된 꼭짓점 법선 벡터를 보여 줍니다.
DrawPrimitive 메서드를 사용하여 장면을 렌더링하는 경우 날카로운 가장자리가 있는 개체를 삼각형 스트립이 아닌 삼각형 목록으로 정의합니다. 개체를 삼각형 스트립으로 정의하면 Direct3D는 이를 여러 삼각형 면으로 구성된 단일 다각형으로 취급합니다. 고우러드 음영이 다각형의 각 면 전체에 적용되고 인접한 면 사이에도 적용됩니다.
그러면 면 사이가 부드럽게 음영 처리된 개체를 얻습니다. 삼각형 목록은 일련의 비연속 삼각형 면으로 구성된 다각형이므로 Direct3D는 고우러드 음영을 다각형의 각 면에 적용합니다. 그러나 면 사이에는 적용되지 않습니다. 삼각형 목록의 둘 이상의 삼각형이 인접하는 경우 그 사이의 가장자리가 날카롭게 표시됩니다.
또 다른 대안은 날카로운 가장자리가 있는 개체를 렌더링할 때 평면 음영으로 변경하는 것입니다. 이는 계산상 가장 효율적인 방법이지만 장면의 개체가 Gouraud 음영 처리된 개체만큼 현실적으로 렌더링되지 않을 수 있습니다.
관련 항목