80 likes | 299 Views
Cube Environment Mapping Effect. Mgun. Contents. . 큐브맵을 만드는 방법 [ 방법 1] Ray – Tracing - 속도가 느리다 . [ 방법 2] Environmental Reflection Mapping - 미리 만들어둔 주위 환경 을 물체 표면에 입혀 마치 반사가 일어난 것 같은 효과를 주는 기법. Cube Environment Mapping. http://mgun.tistory.com/1.
E N D
Contents . 큐브맵을 만드는 방법 [방법1] Ray – Tracing - 속도가 느리다. [방법2] Environmental Reflection Mapping - 미리 만들어둔 주위 환경을 물체 표면에 입혀 마치 반사가 일어난것 같은 효과를 주는 기법.
Cube Environment Mapping http://mgun.tistory.com/1
Why Use • . Reflection Mapping • -> 빛이 반사되는 표면을 처리하기 위해 • [방법1] Ray – Tracing • - 속도가 느리다. • [방법2] Environmental Reflection Mapping • - 미리 만들어둔 주위 환경을 물체 표면에 입혀 마치 반사가 일어난것 같은 효과를 주는 기법.
How Create • . Create CUbemap • -> 큐브텍스쳐의 생성. • POSITIVE_X: vLookDir= ( 1.0f, 0.0f, 0.0f ); vUpDir= ( 0.0f, 1.0f, 0.0f ); • NEGATIVE_X: vLookDir= ( -1.0f, 0.0f, 0.0f ); vUpDir= ( 0.0f, 1.0f, 0.0f ); • POSITIVE_Y: vLookDir= ( 0.0f, 1.0f, 0.0f ); vUpDir= ( 0.0f, 0.0f, -1.0f ); • NEGATIVE_Y: vLookDir= ( 0.0f, -1.0f, 0.0f ); vUpDir= ( 0.0f, 0.0f, 1.0f ); • POSITIVE_Z: vLookDir= ( 0.0f, 0.0f, 1.0f ); vUpDir= ( 0.0f, 1.0f, 0.0f ); • NEGATIVE_Z: vLookDir= ( 0.0f, 0.0f, -1.0f ); vUpDir= ( 0.0f, 1.0f, 0.0f );
Contents 구현 순서. - 현재 렌더타겟 저장. • - 큐브맵각면의서페이스를렌더타겟으로 설정하여 90도씩 회전하여 렌더링. • GetCubeMapSurface()을 사용하여 큐브 텍스쳐의 각 면을 얻어오고, • GetCubeMapViewMatrix()을 사용하여 뷰 메트릭스를 얻는다. • - 큐브맵을 저장하고자 한다면 D3DXSaveTextureToFile함수 활용. • - 만들어진 큐브맵텍스쳐를 해당 물체에 맵핑
Contents • 반짝이는 효과 • - 빛의 반사값 계산 • R = I – 2 * (I N) * N Out.Reflect = normalize(reflect(Incident, Norm)); Out.Reflect = normalize(Indicident – 2 * Norm * dot(Incident, Norm)
Contents • 동적 큐브맵 • 미리 만들어 놓은 큐브맵이 아닌 매 프레임마다 • 새로 큐브맵을 생성함. • Test • 주전자 주위를 날아다니는 비행기를 하나 띄우고, • 그 비행기의 모습이 주전자 표면에 반사되게 하여 확인 • 큐브맵 동적 생성 방법 • 주전자는 제외한 채로 • 환경과 비행기가 날아가는 장면을 생성 • 생성된 화면 6개를 큐브맵에 저장 • 다음 번 render()시에 이 큐브맵을 사용 • 반짝이는 효과 • - 빛의 반사값 계산