DirectX Graphics 프로그래밍 가이드 고도의 주제 픽셀 파이프라인 환경 맵핑 구면의 환경 맵핑   [목차열람] [주소복사] [슬롯비우기]
구면의 환경 맵핑
 
Microsoft DirectX 9.0

구면의 환경 맵핑


구면의 환경 맵, 또는 구면의 맵은, 개체의 주위의 장면(scene)의 화면 또는 개체의 주위의 조명 이펙트를 포함한 특수한 텍스처이다. 큐브 환경 맵과는 달라, 구면의 맵은 개체의 주위의 모습을 직접 표현하는 것은 아니다. 「환경 맵핑」의 주제의 찻주전자의 화면은, 구면의 맵핑으로 실현될 수 있는 반사 이펙트를 나타내고 있다.

구면의 맵은, 개체의 주위의 360о의 시야를, 어안 렌즈로 본 것처럼 2D 표현한 것이다. 다음 그림은Sphere Map 샘플로 사용하는 구면의 맵을 나타내고 있다.

건물의 안쪽의 구면의 맵

구면의 환경 맵의 텍스처 좌표

환경 맵핑의 대상이 되는 각 정점으로 지정하는 텍스처 좌표는, 텍스처를 만곡한 표면에 비치는 왜곡의 함수로서 처리할 필요가 있다. 애플리케이션에서는, 각 정점의 텍스처 좌표를 계산해, 목적의 이펙트를 실현되지 않으면 안 된다. 텍스처 좌표를 간단하고 효과적으로 생성하는 방법은, 정점 법선을 입력으로서 사용하는 것이다. 방법에는 몇 종류인가 있지만, 다음 공식은, 구면의 맵에 의한 환경 맵핑을 실행하는 애플리케이션으로 공통의 공식이다.

구면의 맵의 텍스처 좌표를 계산하기 위한 공식

이 공식에서는,uv 는 계산하는 텍스처 좌표,NXNY 는 카메라 공간의 정점 법선의 xy 요소이다. 이 공식은 단순하고 유효하다. 법선에 정방향의 x 요소가 있는 경우, 법선은 우측향을 가리키고 있어u 좌표는 텍스처를 적절히 처리할 수 있도록(듯이) 조정된다. v 좌표도 마찬가지, 정방향의 y 는, 법선이 윗방향을 가리키고 있는 것을 나타낸다. 각 성분의 부의 값에 대해서는, 이 반대가 성립된다.

법선이 직접 카메라를 가리키고 있는 경우, 결과의 좌표에는 왜곡이 생기지 않는다. 양쪽 모두의 좌표에 +0. 5 바이어스를 더하면 왜곡이 없는 포인트는 구면의 맵의 중앙에 배치되어(0, 0, z)의 정점 법선에 의해 이 포인트가 처리된다. 이 공식에서는, 법선의 z 요소는 고려되지 않는다. 다만, 이 공식을 사용하는 애플리케이션에서는, 정방향의 z 요소가 있는 법선을 가지는 정점을 생략 하는 것으로 계산을 최적화할 수 있다. flat shading를 적용한 개체에 대해서 이것이 유효한 것은, 카메라 공간에서 법선이 카메라로부터 멀어질 방향 (z 의 정방향)을 가리키고 있는 경우, 개체의 렌더링시에 정점이 컬링(Culling) 되기 때문이다. 그로시딘그를 적용한 개체의 경우, 카메라로부터 멀어질 방향 (x 의 정방향)으로 법선을 향하여, 정점을 포함한 삼각형을 표시한 채로 할 수 있다. 이 정점의 uv 를 계산하지 않으면 그 면이 그대로 사용되어 예기치 않은 동작이 생길 가능성이 있다.

구면의 환경 맵의 적용

환경 맵을 개체에 적용 할 때는, 그 외의 텍스처의 경우와 같이,IDirect3DDevice9::SetTexture 메서드로 적절한 텍스처 스테이지에 텍스처를 설정한다. 제 1 인수에는, 목적의 텍스처 스테이지의 인덱스를 설정해, 제 2 인수에는, 환경 맵의 큐브 맵 텍스처의 생성시에 돌려주어진 IDirect3DDevice9 인터페이스의 주소를 설정한다. 필요에 따라서 색 및 알파 혼합 처리와 인수를 설정해, 목적의 텍스처 혼합 이펙트를 얻을 수 있다.



© 2002 Microsoft Corporation. All rights reserved.
↑TOP