반응형


복사http://blog.naver.com/cra2yboy/90139675513


첨부파일 (1)

환경맵이란 무엇인가?

 

 

환경 맵핑이란 반사성이 있는 표면에 레이 트레이싱을 하지 않고 주변이 반사되는 듯 시뮬레이션하는 방법이다.

실제와 같은 반사를 위한 광선 추적 기법은 비용이 크기 때문에 환경맵을 통해 이와 비슷한 효과를 내는 것이다.

 

다양한 형태의 큐브맵

 

 

 

이 예제에서는 CreateCubeTexture 함수를 이용해 큐브 텍스쳐를 생성한다.

 

텍스쳐 좌표를 처리하기 위한 인자들

 

D3DTSS_TCI_PASSTHRU 는 정점에 주어진 텍스쳐 좌표를 그대로 사용

D3DTSS_TCI_CAMERASPACENORMAL 는 정점의 법선 정보를 카메라의 공간좌표로 변환 한 뒤 텍스쳐 변환 행렬 적용 후 텍스쳐 좌표로 사용(환경 맵핑)

D3DTSS_TCI_CAMERASPACEPOSITION 는 정점의 위치를 카메라 공간좌표로 변환한 뒤 텍스쳐 변환행렬 적용 후 텍스쳐 좌표로 사용(그림자 맵핑)

D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR 는 정점의 위치와 법선을 카메라 공간좌표로 변호나한 뒤 시선에 대한 반사벡터를 구하여 텍스쳐 변환행렬 적용 후 텍스쳐 좌표로 사용(반사 환경 맵핑)

D3DTSS_TCI_SPHEREMAP는 구면 맵핑을 위한 텍스쳐 좌표를 사용(구면 맵핑)

 

큐브 환경맵 생성하기

 

큐브 환경맵을 생성하기 위해서 이 예제에서 처리한 방법은 카메라를 기준이 되는 위치에 옮겨 놓고 6 방향을 향하도록 카메라를 각각 돌아가며 텍스쳐에 화면을 렌더링하는 방식을 사용 했다.

 

단축키 'E'를 누르면 CreateCubeMap 함수를 호출하도록 되어 있고 이곳에서 큐브맵 텍스쳐를 생성 후 렌더링 하고 파일에 저장하는 역할을 한다.

 

렌더링

 

 

g_pd3dDevice->SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR | 1);

 

주전자에 텍스쳐를 맵핑하여 렌더링 해야 하는데 텍스쳐의 맵핑 좌표는 카메라 위치를 기준으로 매번 재계산하여 적용시켜 준다.

반응형

+ Recent posts