Ray Tracing - Cube Mapping

Date:     Updated:

카테고리:

태그:

홍정모님의 그래픽스 새싹코스 강의를 듣고 정리한 내용입니다.


🐥 Cube Map

Cube Map Mapping
cubemaps_skybox cube_map2

그래픽스를 이용해 3차원 공간을 만드는 것은 아주 비싼 연산을 필요로 할 것이다. 이때 앞서 배운 텍스처링의 개념을 이용하면 기가 막힌 최적화를 할 수 있다. Cube를 이용하여 닫힌 공간을 만들고, 각각의 면에 공간과 같은 이미지를 매핑해주는 것이다.


Cube Map 구현 방법

    // top
    auto imageTexture_top = std::make_shared<Texture>("./skybox/top.jpg");

    auto square_top = make_shared<Square>(vec3(-2.0f, 2.0f, 2.0f), vec3(-2.0f, 2.0f, -2.0f), vec3(2.0f, 2.0f, -2.0f), vec3(2.0f, 2.0f, 2.0f),
                                        vec2(0.0f, 0.0f), vec2(1.0f, 0.0f), vec2(1.0f, 1.0f), vec2(0.0f, 1.0f));

    square_top->amb = vec3(1.0f);
    square_top->dif = vec3(0.0f);
    square_top->spec = vec3(0.0f);

    square_top->ambTexture = imageTexture_top;
    square_top->difTexture = imageTexture_top;

    objects.push_back(square_top);

    // bottom
    // front
    // ...

주의할 점

result1

처음에 별 생각없이 구현을 했다가 이상한 결과가 튀어나왔다. 문제의 원인은 left 사각형의 vertex 순서가 texture의 uv좌표계와 다르기 때문이었다. 다시 말해 vertex_0가 uv좌표 (0,0)이 아닌 다른 좌표에 매핑 되었기 때문. 주의가 필요한 부분인 것 같다.


🐥 Results

result



맨 위로 이동하기

Graphics 카테고리 내 다른 글 보러가기

댓글 남기기