얼굴 및 꼭짓점 법선 벡터(Direct3D 9)
메시의 각 면에는 다음 그림과 같이 수직 단위 일반 벡터가 있습니다. 벡터의 방향은 꼭짓점이 정의된 순서와 좌표계가 오른쪽 또는 왼손인지에 따라 결정됩니다. 얼굴 보통은 얼굴의 앞면을 가리킵니다. Direct3D에서는 얼굴의 전면만 표시됩니다. 앞면은 꼭짓점이 시계 방향으로 정의되는 얼굴입니다.
앞면그림
앞면이 아닌 모든 얼굴은 뒷면입니다. Direct3D가 항상 얼굴을 렌더링하는 것은 아닙니다. 따라서 등면은 컬링이라고 합니다. 원하는 경우 컬링 모드를 변경하여 다시 얼굴을 렌더링할 수 있습니다. 자세한 내용은 컬링 상태(Direct3D 9) 참조하세요.
Direct3D는 Gouraud 음영, 조명 및 텍스처링 효과에 꼭짓점 단위 법선이 사용됩니다. 다음 그림에서는 기본 예제를 보여 줍니다.
꼭짓점 법선그림
Gouraud 음영을 다각형에 적용할 때 Direct3D는 꼭짓점 법선으로 광원과 표면 사이의 각도를 계산합니다. 꼭짓점의 색과 강도 값을 계산하고 모든 기본 표면의 모든 지점에 대해 보간합니다. Direct3D는 각도를 사용하여 광도 값을 계산합니다. 각도가 클수록 표면에서 빛이 덜 빛나게 됩니다.
평면 개체를 만드는 경우 다음 그림과 같이 꼭짓점 법선이 수직으로 표면을 가리키도록 설정합니다.
꼭짓점 법선이그림
그러나 개체가 삼각형 스트립으로 구성되고 삼각형이 공동 평면이 아닐 가능성이 높습니다. 스트립의 모든 삼각형에 걸쳐 부드러운 음영을 달성하는 한 가지 간단한 방법은 먼저 꼭짓점이 연결된 각 다각형 면에 대한 표면 법선 벡터를 계산하는 것입니다. 꼭짓점 법선은 각 표면 법선과 동일한 각도로 설정할 수 있습니다. 그러나 이 메서드는 복잡한 기본 형식에 대해 충분히 효율적이지 않을 수 있습니다.
이 메서드는 다음 다이어그램에서 보여 줍니다. 이 다이어그램에서는 위에서 S1과 S2의 가장자리가 표시된 두 개의 표면을 보여 줍니다. S1 및 S2의 일반 벡터는 파란색으로 표시됩니다. 꼭짓점 일반 벡터는 빨간색으로 표시됩니다. 꼭짓점 법선 벡터가 S1의 표면 법선으로 만드는 각도는 꼭짓점 법선과 S2의 표면 법선 사이의 각도와 동일합니다. 이 두 표면이 켜지고 Gouraud 음영으로 음영 처리되면 그 결과는 매끄럽게 음영 처리되고 매끄럽게 둥근 가장자리가 됩니다.
두 표면(s1 및 s2)과 일반 벡터 및 꼭짓점 법선 벡터다이어그램
꼭짓점 법선이 연결된 얼굴 중 하나를 향해 기울어지면 광원으로 만드는 각도에 따라 해당 표면의 포인트에 대한 광 강도가 증가하거나 감소합니다. 다음 다이어그램은 예제를 보여 주는 다이어그램입니다. 다시 말하지만, 이러한 표면은 가장자리에서 볼 수 있습니다. 꼭짓점 법선은 S1 쪽으로 기울어져 있어 꼭짓점 법선이 표면 법선과 동일한 각도를 갖는 경우보다 광원과 더 작은 각도를 갖습니다.
한 면다이어그램
Gouraud 음영을 사용하여 날카로운 가장자리가 있는 3D 장면에 일부 개체를 표시할 수 있습니다. 이렇게 하려면 다음 그림과 같이 날카로운 가장자리가 필요한 면의 모든 교집합에서 꼭짓점 법선 벡터를 복제합니다.
그림
DrawPrimitive 메서드를 사용하여 장면을 렌더링하는 경우 날카로운 가장자리가 있는 개체를 삼각형 스트립이 아닌 삼각형 목록으로 정의합니다. 개체를 삼각형 스트립으로 정의하면 Direct3D는 여러 삼각형 면으로 구성된 단일 다각형으로 처리합니다. Gouraud 음영은 다각형의 각 면과 인접한 얼굴 사이에 모두 적용됩니다. 결과는 얼굴에서 얼굴로 매끄럽게 음영 처리되는 개체입니다. 삼각형 목록은 일련의 연결되지 않은 삼각형 얼굴로 구성된 다각형이므로 Direct3D는 다각형의 각 면에 Gouraud 음영을 적용합니다. 그러나 얼굴에서 얼굴로는 적용되지 않습니다. 삼각형 목록의 두 개 이상의 삼각형이 인접한 경우 둘 사이에 선명한 가장자리가 있는 것처럼 보입니다.
또 다른 대안은 날카로운 가장자리로 개체를 렌더링할 때 플랫 음영으로 변경하는 것입니다. 이는 계산적으로 가장 효율적인 방법이지만, 장면의 개체가 Gouraud 음영 처리된 개체처럼 현실적으로 렌더링되지 않을 수 있습니다.
관련 항목