얼굴 및 꼭짓점 법선 벡터(Direct3D 9)

메시의 각 면에는 다음 그림과 같이 수직 단위 일반 벡터가 있습니다. 벡터의 방향은 꼭짓점이 정의된 순서와 좌표계가 오른쪽 또는 왼쪽인지 여부에 따라 결정됩니다. 면 법선 점은 면의 앞쪽에서 떨어져 있습니다. Direct3D에서는 앞면만 표시됩니다. 앞면은 꼭짓점이 시계 방향 순서로 정의되는 면입니다.

전면에 대한 일반 벡터 그림

앞면이 아닌 모든 면은 뒷면입니다. Direct3D가 항상 다시 얼굴을 렌더링하는 것은 아닙니다. 따라서 뒷면은 컬링이라고 합니다. 원하는 경우 뒷면을 렌더링하도록 고르기 모드를 변경할 수 있습니다. 자세한 내용은 컬링 상태(Direct3D 9) 를 참조하세요.

Direct3D는 꼭짓점 단위 법선을 고우러드 음영, 조명 및 질감 효과에 사용합니다. 다음 그림에서는 예제 정규를 보여 줍니다.

꼭짓점 법선 그림

고우러드 음영을 다각형에 적용하는 경우 Direct3D는 꼭짓점 법선을 사용하여 광원과 표면 사이의 각도를 계산합니다. 꼭짓점에 대한 색과 강도 값을 계산하고, 모든 기본 요소의 표면을 교차하는 모든 점에 대해 이를 보간합니다. Direct3D는 각도를 사용하여 밝기 강도 값을 계산합니다. 각도가 클수록 표면에 비치는 조명이 줄어듭니다.

평면 개체를 만드는 경우 다음 그림과 같이 꼭짓점 법선이 표면을 수직으로 가리키도록 설정합니다.

꼭짓점 법선이 있는 두 개의 삼각형으로 구성된 평평한 표면 그림

그러나 개체가 삼각형 스트립으로 구성되고 삼각형이 평면이 아닐 가능성이 높습니다. 스트립의 모든 삼각형에 걸쳐 부드러운 음영을 적용하는 한 가지 간단한 방법은 먼저 꼭짓점이 연결된 각 다각형 면에 대한 표면 법선 벡터를 계산하는 것입니다. 꼭짓점 법선은 각 표면 법선과 동일한 각도가 되도록 설정할 수 있습니다. 그러나 이 방법은 복잡한 기본 요소에 대해 충분히 효율적이지 않을 수 있습니다.

이 방법이 다음 다이어그램에 나와 있습니다. S1과 S2라는 두 개의 면이 있고, 모서리가 위에 있습니다. S1과 S2의 법선 벡터는 파란색으로 표시되어 있습니다. 꼭짓점 법선 벡터는 빨간색으로 표시되어 있습니다. 꼭짓점 법선 벡터와 S1의 표면 법선이 이루는 각도는 꼭짓점 법선과 S2의 표면 법선이 이루는 각도와 동일합니다. 이러한 두 표면을 비추고 고우러드 음영을 적용하면 두 표면 사이에 부드럽게 음영 처리되고 부드럽게 둥근 모서리를 얻습니다.

두 표면(s1 및 s2)과 일반 벡터 및 꼭짓점 법선 벡터의 다이어그램

꼭짓점 법선이 연결된 면 중 하나로 기울면 광원과 이루는 각도에 따라 해당 표면의 점에 대한 밝기 강도가 증가하거나 감소합니다. 다음 다이어그램에서는 한 가지 예를 보여 줍니다. 다시 말하지만, 이러한 표면은 에지 온을 볼 수 있습니다. 꼭짓점 법선이 S1 쪽으로 기울어 꼭짓점 법선이 표면 법선과 동일한 각도가 될 때보다 광원과의 각도가 더 작아집니다.

한 면으로 기울어진 꼭짓점 법선 벡터가 있는 두 표면(s1 및 s2)의 다이어그램

고우러드 음영을 사용하여 3D 장면에 가장자리가 날카로운 일부 개체를 표시할 수 있습니다. 이렇게 하려면 다음 그림과 같이 날카로운 가장자리가 필요한 면의 모든 교집합에서 꼭짓점 법선 벡터를 복제합니다.

날카로운 가장자리에서 중복된 꼭짓점 법선 벡터 그림

DrawPrimitive 메서드를 사용하여 장면을 렌더링하는 경우 날카로운 가장자리가 있는 개체를 삼각형 스트립이 아닌 삼각형 목록으로 정의합니다. 개체를 삼각형 스트립으로 정의하면 Direct3D는 이를 여러 삼각형 면으로 구성된 단일 다각형으로 취급합니다. 고우러드 음영이 다각형의 각 면 전체에 적용되고 인접한 면 사이에도 적용됩니다. 그러면 면 사이가 부드럽게 음영 처리된 개체를 얻습니다. 삼각형 목록은 일련의 비연속 삼각형 면으로 구성된 다각형이므로 Direct3D는 고우러드 음영을 다각형의 각 면에 적용합니다. 그러나 면 사이에는 적용되지 않습니다. 삼각형 목록의 둘 이상의 삼각형이 인접하는 경우 그 사이의 가장자리가 날카롭게 표시됩니다.

또 다른 대안은 날카로운 가장자리가 있는 개체를 렌더링할 때 평면 음영으로 변경하는 것입니다. 이는 계산상 가장 효율적인 방법이지만 장면의 개체가 Gouraud 음영 처리된 개체만큼 현실적으로 렌더링되지 않을 수 있습니다.

좌표계 및 기하 도형