DirectX Graphics 프로그래밍 가이드 튜토리얼, 샘플, 툴, 힌트 샘플 Environment Mapping 샘플 Sphere Map 샘플 [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
Sphere Map 샘플에서는, 구면의 맵핑으로 불리는 환경 맵핑의 방법을 나타낸다. 환경 맵핑은, 3D 개체의 주위의 환경 (라이트등)을 텍스처 맵에 배치해, 조명의 계산을 실시하지 않고 개체에 복잡한 조명 이펙트를 적용할 수 있는 방법이다.
환경 맵핑의 방법 (큐브 맵핑이나 투영 텍스처등)의 일부의 기능 밖에 지원 하고 있지 않는 카드도 있다. 디스플레이스먼트 맵핑의 더 자세한 정보는, 「환경 맵핑」을 참조할것.
소스 파일 : (SDK 루트) \Samples\C++\Direct3D\EnvMapping\SphereMap
실행 가능 파일 : (SDK 루트) \Samples\C++\Direct3D\Bin
다음의 표는 , 처리 되고 있는 키를 나타내고 있다. 메뉴 커멘드를 사용해 같은 조작을 실시할 수가 있다.
키 | 동작 |
---|---|
Enter | 장면을 시작 및 정지한다. |
Space 키 | 장면을 조금씩 진행한다. |
F2 | 새로운 렌더링 장치 또는 디스플레이 모드를 선택하도록(듯이) 사용자에 지시한다. |
Alt+Enter | 풀 스크린 모드와 윈도우 모드를 바꾼다. |
Esc | 애플리케이션을 종료한다. |
구면의 맵핑에서는, 모델링시에 미리 계산된, 크롬의 구체에 의해 반사된 환경 전체를 포함한 텍스처 맵을 사용한다. 이 방법에서는, 각 정점에 대해, 그 법선을 계산해, 그 법선이 크롬의 구체상에서 일치하는 위치를 찾아내, 그 텍스처 좌표를 정점에 할당한다.
매칭은 복잡하지 않지만, 각 프레임의 각 정점에 대해 계산이 필요하다. 이 계산은, Microsoft® Direct3D® 의 텍스처 좌표 생성 기능을 사용해 실시할 수가 있다. 관련하는 렌더링 스테이트 처리는 D3DTSS_TCI_CAMERASPACENORMAL 로, 카메라 공간에서의 정점의 법선을 사용해, 텍스처 변환에 의해 변형해, 텍스처 좌표를 생성한다. 다음에, 텍스처 행렬을 설정해 나머지의 처리를 실시한다. 이 단순한 케이스에서는, 행렬은, 카메라 공간 (-1, +1)으로부터 텍스처 공간 (0,1)을 얻어오기 위해 텍스처 좌표를 스케일링 해, 평행이동 하는 것만으로 있다.
이 샘플에서는, 헬퍼-함수등의 프로그래밍 요소로부터 구성되는 Microsoft DirectX® 코드를 사용한다. 이 코드는 DirectX 소프트웨어 개발 킷 (SDK) 외 샘플과 공유되고 있다. 샘플 프레임워크(framework)의 헤더는 (SDK 루트)\Samples\C++\Common\Include, 소스 코드는 (SDK 루트) \Samples\C++\Common\Src 에 있다.