[Common]와인딩 모드, 오른나사(CW)와 왼나사(CCW)

2015. 11. 14. 11:50프로그래밍/3D Graphics

와인딩 모드, 오른나사(CW)와 왼나사(CCW)


도형은 여러 개의 정점으로 구성된다. 이때 도형을 성하는 정점의 순서를 와인딩(Winding)이라고 한다

똑같은 삼각형을 그리더라도 정점을 시계 방향으로 나열할 수도 있고 반시계 방향으로 나열할 수도 있다.


둘 다 3개의 꼭지점으로 구성되어 있는 삼각형인데 abc 순으로 돌 수도 있고 acb순으로 돌 수도 있다. 어쨌거나 세 정점을 연결하여 삼각형을 그리므로 결과는 같다. 그러나 방향에 따라 도형의 앞 뒤가 달라진다. OPENGL에서 디폴트 와인딩은 반시계 방향으로 정의되어 있으며 관찰자가 보기에 반시계 방향으로 그려진 면이 도형의 앞으로 간주된다.


위 그림에서 반시계 방향으로 그려진 왼쪽 삼각형은 앞면이 보이는 상태이고 시계 방향으로 그려진 오른쪽 삼각형은 뒷면이 보이는 상태이다. 반대쪽에서 보면 둘 다 방향이 바뀌고 앞면과 뒷면도 자연스럽게 뒤집어진다. 3D 그래픽은 회전이나 시점 변경이 가능해서 어디서 보더라도 앞뒷면이 일관된 방법이 필요한데 그것이 바로 와인딩이다.

출처 : http://soen.kr/lecture/library/opengl/opengl-6.htm


요약

면은 앞면과 뒷면이 있다. 그리고 그래픽스에서는 그리는 순서에 따라 앞면과 뒷면을 구분한다. 시계방향으로 그리는 것을 CW(ClockWise)라고 하며, 오른 나사 방식이라 부른다. 반대로 반시계방향으로 그리는 것을 CCW(CountClockWise)라고 하며, 왼 나사 방식이라고 한다. 이러한 표현 방식을 와인딩이라 한다.

 

D3D, OPENGL, MAX에서의 와인딩

OPENGLCCW 방식을 기본으로 하며, D3D는 이와 반대인 CW 방식을 기본으로 한다.

중요한건 OPENGLMAX는 동일한 순서로 그려지며, D3D는 이와 반대라는 것이다.

 

그렇기 때문에 이점을 고려하여 추출하거나, D3D에서 사용해야 한다.