1 자습서 마야Maya 강좌 3DMAX 맵핑에 대해서 알아보기 Sat May 07, 2011 9:10 am
Admin
Admin
[You must be registered and logged in to see this image.]
매핑
아무리 모델링을
꼼꼼하게 잘 한다 하더라도, 아무리 최신 렌더링 기법을 사용한다 하더라도 이것만으로는 우리가 원하는 모든 것들을 표현할 수가
없습니다. 오브젝트 표면에 모델링만으로는 감당할 수 없는 혹은 감당하기 힘든 디테일을 추가하기 위해 사용하는 방법이 바로
매핑(Mapping)입니다. 좀 더 적극적으로는 복잡한 모델링을 대체함으로써 경제적인 결과를 얻기 위해 매핑 기법을 사용하기도
합니다.
[You must be registered and logged in to see this image.]
그림 1. 매핑의 효과 (c)De Espona
Texture 매핑
[You must be registered and logged in to see this image.]보
통 Texture 매핑이라고 하면 보통 비트맵 이미지를 이용해서 오브젝트 표면의 무늬를 입히는 것으로만 생각하는 경우가
많습니다. 물론 이 경우가 Texture 매핑의 가장 대표적인 예이기는 하지만 이렇게 표면에 무늬를 입히는 작업은 Texture
매핑을 응용한 예의 하나 일뿐 그 자체가 Texture 매핑은 아닙니다.
Texture 매핑의 정확한 의미는 "외부에서 주어지는 값으로 변수나 색상 값을 대체하는 과정"이라고 할 수 있습니다.
방금 말씀드린
오브젝트 표면에 무늬를 입히는 경우는 오브젝트 표면의 색상을 결정하는 Diffuse 값에 매핑을 적용한 경우에 해당되는 것이죠.
매핑에 의해 오브젝트의 각 부분의 Diffuse 색상이 각기 다른 값을 갖게 되고 이것은 결국 Texture Map이 오브젝트
표면에 씌워진 것과 같은 결과를 만들어 주는 것입니다. Diffuse 매핑 혹은 Color 매핑이라고 부르는 방법이죠. 만약
물체의 투명도(Opacity 혹은 Transparency) 값에 매핑을 사용한다면 물체의 각 부분에 서로 다른 투명도를 적용되는
것이고 Shininess 값에 사용되면 물체 각 부분의 정반사 정도가 달라지는 것입니다.
그림 2. (c)김종숙
매핑을 위해 "외부에서 값을 주는" 주는 가장 대표적인 방법은 비트맵 이미지를 사용하는 것인데 이때 사용되는 비트맵 이미지를 Texture Map혹은 매핑 소스(Mapping Source)라고 부릅니다. 또 다른 방법으로는 Texture를 일련의 과정을 통해 자동적으로 생성해서 사용하는 방법이 있는데 이런 방법은 Procedural Texture라고 부릅니다. 이 방법에 대해서는 뒤에서 다시 살펴보도록 하겠습니다.
매핑 좌표
Texture Map를
이용해서 오브젝트 표면 특성을 대체하기 위해서는 Texture Map의 어느 픽셀이 오브젝트 표면의 어느 부분에 대응될 것인지를
결정해 주어야 합니다. 말이 좀 어렵다면 비트맵 이미지가 오브젝트에 씌워질 때 어떻게(위치, 방향, 크기) 씌워질 것인지를
결정하는 것이다라고 이해하면 되겠습니다.
이런 작업을
하자면 오브젝트 표면에도 Texture Map에 대응하는 좌표계를 설정해 주어야 하는데 비트맵 이미지는 2차원의 직교 평면을
이루고 있으므로 오브젝트 표면에도 이에 대응하는 좌표를 설정해 주어야 합니다. 그리고 이렇게 오브젝트 표면에 설정되는 좌표계를 매핑 좌표계라고 부르는데 오브젝트 평면에 매핑 좌표계가 설정되면 대응되는 좌표의 Texture Map의 픽셀 값(Pixel과의 혼동을 막기 위해 Texel이라고 부릅니다.)이 표면 특성 값으로 사용되어 매핑이 이루어지게 되는 것입니다.
[You must be registered and logged in to see this image.]
그림 3. 매핑 좌표
매핑 좌표에서는 우리가 보통 사용하는 XYZ 좌표계 대신에 바로 앞 알파벳을 딴 UVW 좌표를
사용하는데 UVW는 각각 XYZ축에 대응됩니다. 결국 매핑 소스로 사용된 비트맵 이미지에서 가로 방향이 U축이고 세로 방향이
V축인 셈이고 일반적으로 매핑 좌표가 필요한 경우는 2D Map을 사용할 때이므로 그냥 줄여서 UV 좌표라고 부르기도 합니다.
또한 매핑 좌표는 한정된 평면 안에서의 위치만을 정의하면 되므로 UV 좌표에서는 좌표값은 항상 0과 1 사이의 값이 됩니다.
예를 들어 비트맵 이미지의 한쪽 끝이 0,0이라면 대각선 반대쪽은 1,1이고 정 중앙은 0.5, 0.5가 됩니다.
오브젝트에 매핑 좌표를 설정하는 가장 대표적인 방법은 3대 기본 좌표계인 직교, 원통, 극 좌표계를 이용해서 좌표계를 오브젝트에 투영(Projection)하는 방법입
니다. 평면형(Planar) 좌표계는 사각형 평면을 따라 이미지를 투영하는 것이고 원통형(Cylindrical) 좌표계는
이미지를 원통형으로 구부려 투영하는 것입니다. 구형(Spherical) 좌표계는 일단 원통형(Cylindrical)으로 이미지를
둘러싼 다음 위와 아래를 다시 모아 마치 지도로 지구본을 감싸듯 이미지를 투영하는 것입니다.
[You must be registered and logged in to see this image.]
그림 4. 기본 매핑 좌표계 (c)Rosalee Wolfe
그러나 이런 방법은
개념이 간단한 만큼 다음과 같은 단점을 갖고 있습니다. 평면형(Planar) 좌표계는 비트맵 이미지가 한 방향에서 투영되므로
투영되는 방향과 평행을 이루지 않는 면들이 있을 경우 줄이 생기며 원통형(Cylindrical) 좌표계는 이미지의 양쪽 끝이
만나는 지점에서 무늬가 불연속적이 되고 뚜껑 부분 처리가 힘들죠. 구형(Spherical) 좌표계는 역시 원통형 좌표계와
마찬가지로 양쪽 끝이 만나는 지점에서 무늬가 불연속이며 극지점 처리가 어렵다는 단점이 있습니다.
[You must be registered and logged in to see this image.]
그림 5. 투영 매핑 좌표의 단점
매핑 좌표를 설정하는 또 다른 방법으로는 오브젝트 표면 자체에 내장되어 있는 좌표를 이용하는 방법이
있습니다. Bezier Patch나 NURBS Surface같은 Parametric Surface들은 그 생성 원리상 각 표면이
기본적으로 내장된 UV좌표를 갖고 있으므로 이 UV좌표를 그대로 매핑 좌표로 할 수 있습니다. 또한 최근에는 이런 방법을
확장시켜 Parametric Surface를 이용해서 원하는 모양의 매핑 좌표를 만들고 이를 오브젝트에 투영시키는 방법이
개발되어 사용되고 있습니다.
[You must be registered and logged in to see this image.]
그림 6. NURBS Surface의 매핑
하지만 어떤 방법을 사용하더라도 부분 단점을 갖고 있을 수밖에 없기 때문에 지금 이 시간에도 다양한 매핑 좌표 설정 방법들이 속속 개발되고 있습니다.
3D Painting, Texture Unwrap
대개의 경우
매핑 작업은 매핑 소스를 먼저 준비한 다음 매핑 좌표를 잘 조절해서 원하는 위치에 Texture Map을 적용시키는 방식으로
진행되어 나갑니다. 하지만 이런 방법을 사용하기 적합하지 않은 경우도 있습니다. 예를 들어, 사람 얼굴을 위한 Texture
Map을 만드는 경우 아무런 기준도 없이 모델에 딱 맞는 매핑소스를 그린다는 것은 매우 어려울 것입니다. 따라서, 이런 경우에는
맵을 그려 오브젝트에 맞추는 것이 아니라 매핑 좌표에 맞춰 오브젝트를 펼쳐 놓고 이 위에 맵을 그리는 방식으로 작업을 진행하게
되는데 이런 방법을 Texture Unwrap이라고 합니다.
[You must be registered and logged in to see this image.]
그림 7. Texture Unwrap
또는, 붓을 들고
조각품을 색칠하듯 3차원 상태의 모델을 보며 그 위에 직접 Texture Map을 그리는 방법을 사용하기도 하는데 이런 방법을
3D Painting이라고 합니다. 이 방법은 뭐니 뭐니해도 직관적으로 작업이 이루어진다는 점이 가장 큰 장점입니다. 하지만,
아무래도 정밀한 작업은 힘들기 때문에 아주 정밀하게 맵을 그려야 하는 경우에는 앞서 말씀드린 Texture Unrwap 기법을
사용하는 경우가 더 많습니다.
[You must be registered and logged in to see this image.]
그림 8. BodyPaint 3D (c)MAXON computer
Procedural Texture
[You must be registered and logged in to see this image.]컴
퓨터 그래픽에서 Procedural이라는 용어가 나오면 일단 "자동적인"내지는 "컴퓨터에 의해 만들어지는"이라고 해석하면
됩니다. 그렇다면 Procedural Texture Map의 뜻은 "컴퓨터에 의해서 자동적으로 만들어지는 Texture
Map"정도가 되겠지요. Procedural Texture Map의 핵심은 이와 같이 사용자에 의해 주어지는 변수 값들을 바탕으로 특정 함수(주로 Fractal이나 Noise 함수)를 이용해서 Texture Map을 컴퓨터가 스스로 만들어 낸다는데 있습니다.
그림 9. Procedural Texture
주위에서 가장 흔하게
볼 수 있는 Procedural Texture의 예로는 포토샵에 있는 Gradient 기능을 생각해 볼 수 있습니다. 여러분들이
시작 지점의 색상과 위치 끝나는 지점의 색상과 위치 등 몇 가지 변수 값들을 지정해 주기만 하면 설정에 따라 아주 멋진
Gradient를 만들어지죠. 그런데 이렇게 만들어진 결과를 3D 프로그램에서 매핑 소스로 사용하고 싶다면 어떻게 할까요? 물론
포토샵에서 만들어서 비트맵 이미지로 저장한 다음 3D 프로그램으로 가져와 사용해도 되겠지만 그것보다는 아예 Gradient를
만드는 프로그램 루틴을 3D 프로그램에 알려준 다음 3D 프로그램이 알아서 Gradient를 만들어 Texture Map으로
사용하면 더 편할 것입니다. 이것이 바로 Procedural Texture의 기본 원리입니다.
Procedural
Texture는 생성되는 데이터의 자원에 따라 2D Procedural Texture와 3D Procedural Texture로
나눌수 있는데 앞서 언급한 Gradient의 경우는 2D Procedural Texture라고 할 수 있습니다. 2D
Procedural Texture의 경우는 그냥 비트맵이 그때그때 생성되어 사용된다고만 생각하면 어려울 것이 없습니다. 당연히
매핑 좌표도 필요하겠죠.
중요한 것은 3D Procedural Texture입니다. Solid Texture라고도 불리는 이 방법은 주어진 함수에 의해 Texture Space라는 3차원 공간을 형성하고 오브젝트를 이 공간에 집어넣어 표면의 색상이나 변수 값을 결정하는 방법입니다. 돌덩이를 깎아내는 과정과 똑같다고 보면 되겠습니다.
[You must be registered and logged in to see this image.]이
방법은 다른 Map들에 비해 여러 가지 면에서 장점을 갖는데 일단 Texture Map이 실제로 3차원 공간 전체를 채우고 있기
때문에 매핑 좌표라는 개념이 필요 없어집니다. 따라서 그림 10처럼 아무리 요상하게 생긴 오브젝트라 할지라도 투영 매핑 좌표를
사용할 때처럼 매핑 과정에서 밀리거나 하는 문제가 발생하지 않습니다. 또한 3D Procedural Texture는 아무리
확대해도 깨지지 않는 무한대 해상도를 갖기 때문에 영화용 출력물처럼 고해상도 출력이 필요한 경우 비트맵 이미지를 사용하는
경우보다 메모리를 훨씬 덜 요구한다는 장점도 있습니다. 마지막으로 이 방법은 구름과 같은 비정형의 3차원 물체를 표현하고자 할
때에도 유용하게 사용될 수 있습니다.
그림 10
Bump 매핑 & Displacement 매핑
Bump 매핑이란
오브젝트 표면의 울퉁불퉁함을 표현하기 위한 특수한 형태의 Texture 매핑으로 (1)아스팔트 표면처럼 모델링으로는 처리하기에
너무 미세하게 거친 표면이나 (2)수면처럼 울퉁불퉁한 모양이 애니메이션 되어야 하는 경우에 주로 사용됩니다.
그림11에서 파란 화살표는 각 면의 Normal로서 면은 그대로 두고 Normal 만을 흐트러뜨리면 가운데 그림과 같은 결과가 얻어집니다. 바로 이와 같이 오브젝트에 적용된 매핑 소스의 밝기 값에 따라 오브젝트 표면의 Normal 값을 변화시켜 울퉁불퉁한 표면을 처리하는 방법을 Bump 매핑이라고 합니다. 일종의 눈속임이죠. 결국 Normal만을 흐트려뜨렸을 뿐 오브젝트 자체에는 아무런 변화가 없으므로 중간 부분은 그럴듯하게 보이지만 오브젝트 가장자리는 여전히 직선을 이루는 문제가 발생합니다.
[You must be registered and logged in to see this image.]
그림 11. Bump 매핑과 Displacement 매핑
그래서 눈속임이 아니라 기하체의 형태 자체를 매핑 소스의 밝기 값에 따라 바꿔버리는 방법을 사용하게 되었으니 그것이 바로 Displacement 매핑입니다. 그림은 Displacement 매핑에 의한 결과로서 가장자리를 보면 Bump 매핑과의 차이를 쉽게 구별할 수 있습니다.
Environment 매핑
지금까지 살펴본 내용은
모두 Texture Map을 오브젝트 표면에 대응시키는 Texture Mapping에 대한 얘기들이었습니다. 하지만, 우리는 또
다른 형태의 매핑을 사용할 수 있으니 바로 Environment 매핑입니다. 이 기법은 이미지를 오브젝트 표면이 아닌 환경(Environment)에 매핑하는 기법으
로 Local Illumination Model만을 사용하는 렌더러에서는 반사(Reflection)나
굴절(Refraction)과 같이 오브젝트 상호간의 관계에 의해 생성되는 현상들을 표현할 수 없었기 때문에 이를 해결하기 위해
도입된 방법입니다. 혹자들은 "가난한 자의 Ray Tracing"이라고 부르기도 하지요. 비록 요즘 하드웨어 환경이 좋아지다
보니 Ray Tracing을 이용하기가 쉬워져서 다소 인기가 시들해진 감은 있지만 아무리 Ray Tracing이라 하더라도
반사가 정확하게 표현되려면 장면 안에 반사될 물체들을 모두 만들어 주어야 하기 때문에 여전히 많이 활용되고 있는 기법입니다.
카메라 뒤 보이지도 않는 부분까지 모두 만드느니 이 방법을 여전히 경쟁력을 갖고 있습니다. Toy Story에서도 반사와 굴절
부분은 Ray Tracing이 아니라 Environment 매핑에 의해 모두 처리되었습니다.(PR Renderman은 Ray
Tracing이 지원되지 않는 Scanline Renderer입니다.) Environment 매핑은 시점이 바뀌거나 오브젝트가
움직이게 되면 오브젝트 특정 지점에서 반사되어 보이는 부분이 바뀌게 되므로 해당 오브젝트 표면의 색상도 바뀌는 특징을 갖습니다.
또한 환경에다 매핑을 하므로 오브젝트에 별도의 매핑 좌표를 만들 필요 없죠.
[You must be registered and logged in to see this image.]Environment
매핑을 구현하기 위한 가장 대표적인 방법은 장면 안에 천체와 같은 가상의 거대한 구가 있다고 가정하고 여기에 이미지를 매핑해서
환경(Environment)으로 사용하는데 이를 구형 환경 매핑(Spherical Environment Mapping)이라고
합니다.
그림 12. 구형 환경 매핑(Spherical Environment Mapping)
혹은 가상의 6면체를 만들어 환경을 구성하는 Cubic Environment 매핑도
많이 사용하는데 이 방법은 Spherical Environment 매핑에 비해 이미지의 왜곡 현상이 덜 하다는 장점을 갖습니다.
반면에 매핑 소스로 사용될 6장의 이미지를 만들기가 매우 힘들다는 단점도 있죠. 따라서 Cubic Environment 매핑을
사용할 때에는 별도의 매핑 소스를 만들기보다는 컴퓨터가 장면에 가상의 카메라 6대를 설치하고 이를 통해 자동적으로 매핑 소스를
만들어 쓰는 방법을 사용하는 경우가 많습니다. 뭐 이렇게 되면 이론적으로는 거의 Ray Tracing과 거의 차이가 없지요.
[You must be registered and logged in to see this image.]
그림 13. Cubic Environment 매핑]
매핑
아무리 모델링을
꼼꼼하게 잘 한다 하더라도, 아무리 최신 렌더링 기법을 사용한다 하더라도 이것만으로는 우리가 원하는 모든 것들을 표현할 수가
없습니다. 오브젝트 표면에 모델링만으로는 감당할 수 없는 혹은 감당하기 힘든 디테일을 추가하기 위해 사용하는 방법이 바로
매핑(Mapping)입니다. 좀 더 적극적으로는 복잡한 모델링을 대체함으로써 경제적인 결과를 얻기 위해 매핑 기법을 사용하기도
합니다.
[You must be registered and logged in to see this image.]
그림 1. 매핑의 효과 (c)De Espona
Texture 매핑
[You must be registered and logged in to see this image.]보
통 Texture 매핑이라고 하면 보통 비트맵 이미지를 이용해서 오브젝트 표면의 무늬를 입히는 것으로만 생각하는 경우가
많습니다. 물론 이 경우가 Texture 매핑의 가장 대표적인 예이기는 하지만 이렇게 표면에 무늬를 입히는 작업은 Texture
매핑을 응용한 예의 하나 일뿐 그 자체가 Texture 매핑은 아닙니다.
Texture 매핑의 정확한 의미는 "외부에서 주어지는 값으로 변수나 색상 값을 대체하는 과정"이라고 할 수 있습니다.
방금 말씀드린
오브젝트 표면에 무늬를 입히는 경우는 오브젝트 표면의 색상을 결정하는 Diffuse 값에 매핑을 적용한 경우에 해당되는 것이죠.
매핑에 의해 오브젝트의 각 부분의 Diffuse 색상이 각기 다른 값을 갖게 되고 이것은 결국 Texture Map이 오브젝트
표면에 씌워진 것과 같은 결과를 만들어 주는 것입니다. Diffuse 매핑 혹은 Color 매핑이라고 부르는 방법이죠. 만약
물체의 투명도(Opacity 혹은 Transparency) 값에 매핑을 사용한다면 물체의 각 부분에 서로 다른 투명도를 적용되는
것이고 Shininess 값에 사용되면 물체 각 부분의 정반사 정도가 달라지는 것입니다.
그림 2. (c)김종숙
매핑을 위해 "외부에서 값을 주는" 주는 가장 대표적인 방법은 비트맵 이미지를 사용하는 것인데 이때 사용되는 비트맵 이미지를 Texture Map혹은 매핑 소스(Mapping Source)라고 부릅니다. 또 다른 방법으로는 Texture를 일련의 과정을 통해 자동적으로 생성해서 사용하는 방법이 있는데 이런 방법은 Procedural Texture라고 부릅니다. 이 방법에 대해서는 뒤에서 다시 살펴보도록 하겠습니다.
매핑 좌표
Texture Map를
이용해서 오브젝트 표면 특성을 대체하기 위해서는 Texture Map의 어느 픽셀이 오브젝트 표면의 어느 부분에 대응될 것인지를
결정해 주어야 합니다. 말이 좀 어렵다면 비트맵 이미지가 오브젝트에 씌워질 때 어떻게(위치, 방향, 크기) 씌워질 것인지를
결정하는 것이다라고 이해하면 되겠습니다.
이런 작업을
하자면 오브젝트 표면에도 Texture Map에 대응하는 좌표계를 설정해 주어야 하는데 비트맵 이미지는 2차원의 직교 평면을
이루고 있으므로 오브젝트 표면에도 이에 대응하는 좌표를 설정해 주어야 합니다. 그리고 이렇게 오브젝트 표면에 설정되는 좌표계를 매핑 좌표계라고 부르는데 오브젝트 평면에 매핑 좌표계가 설정되면 대응되는 좌표의 Texture Map의 픽셀 값(Pixel과의 혼동을 막기 위해 Texel이라고 부릅니다.)이 표면 특성 값으로 사용되어 매핑이 이루어지게 되는 것입니다.
[You must be registered and logged in to see this image.]
그림 3. 매핑 좌표
매핑 좌표에서는 우리가 보통 사용하는 XYZ 좌표계 대신에 바로 앞 알파벳을 딴 UVW 좌표를
사용하는데 UVW는 각각 XYZ축에 대응됩니다. 결국 매핑 소스로 사용된 비트맵 이미지에서 가로 방향이 U축이고 세로 방향이
V축인 셈이고 일반적으로 매핑 좌표가 필요한 경우는 2D Map을 사용할 때이므로 그냥 줄여서 UV 좌표라고 부르기도 합니다.
또한 매핑 좌표는 한정된 평면 안에서의 위치만을 정의하면 되므로 UV 좌표에서는 좌표값은 항상 0과 1 사이의 값이 됩니다.
예를 들어 비트맵 이미지의 한쪽 끝이 0,0이라면 대각선 반대쪽은 1,1이고 정 중앙은 0.5, 0.5가 됩니다.
오브젝트에 매핑 좌표를 설정하는 가장 대표적인 방법은 3대 기본 좌표계인 직교, 원통, 극 좌표계를 이용해서 좌표계를 오브젝트에 투영(Projection)하는 방법입
니다. 평면형(Planar) 좌표계는 사각형 평면을 따라 이미지를 투영하는 것이고 원통형(Cylindrical) 좌표계는
이미지를 원통형으로 구부려 투영하는 것입니다. 구형(Spherical) 좌표계는 일단 원통형(Cylindrical)으로 이미지를
둘러싼 다음 위와 아래를 다시 모아 마치 지도로 지구본을 감싸듯 이미지를 투영하는 것입니다.
[You must be registered and logged in to see this image.]
그림 4. 기본 매핑 좌표계 (c)Rosalee Wolfe
그러나 이런 방법은
개념이 간단한 만큼 다음과 같은 단점을 갖고 있습니다. 평면형(Planar) 좌표계는 비트맵 이미지가 한 방향에서 투영되므로
투영되는 방향과 평행을 이루지 않는 면들이 있을 경우 줄이 생기며 원통형(Cylindrical) 좌표계는 이미지의 양쪽 끝이
만나는 지점에서 무늬가 불연속적이 되고 뚜껑 부분 처리가 힘들죠. 구형(Spherical) 좌표계는 역시 원통형 좌표계와
마찬가지로 양쪽 끝이 만나는 지점에서 무늬가 불연속이며 극지점 처리가 어렵다는 단점이 있습니다.
[You must be registered and logged in to see this image.]
그림 5. 투영 매핑 좌표의 단점
매핑 좌표를 설정하는 또 다른 방법으로는 오브젝트 표면 자체에 내장되어 있는 좌표를 이용하는 방법이
있습니다. Bezier Patch나 NURBS Surface같은 Parametric Surface들은 그 생성 원리상 각 표면이
기본적으로 내장된 UV좌표를 갖고 있으므로 이 UV좌표를 그대로 매핑 좌표로 할 수 있습니다. 또한 최근에는 이런 방법을
확장시켜 Parametric Surface를 이용해서 원하는 모양의 매핑 좌표를 만들고 이를 오브젝트에 투영시키는 방법이
개발되어 사용되고 있습니다.
[You must be registered and logged in to see this image.]
그림 6. NURBS Surface의 매핑
하지만 어떤 방법을 사용하더라도 부분 단점을 갖고 있을 수밖에 없기 때문에 지금 이 시간에도 다양한 매핑 좌표 설정 방법들이 속속 개발되고 있습니다.
3D Painting, Texture Unwrap
대개의 경우
매핑 작업은 매핑 소스를 먼저 준비한 다음 매핑 좌표를 잘 조절해서 원하는 위치에 Texture Map을 적용시키는 방식으로
진행되어 나갑니다. 하지만 이런 방법을 사용하기 적합하지 않은 경우도 있습니다. 예를 들어, 사람 얼굴을 위한 Texture
Map을 만드는 경우 아무런 기준도 없이 모델에 딱 맞는 매핑소스를 그린다는 것은 매우 어려울 것입니다. 따라서, 이런 경우에는
맵을 그려 오브젝트에 맞추는 것이 아니라 매핑 좌표에 맞춰 오브젝트를 펼쳐 놓고 이 위에 맵을 그리는 방식으로 작업을 진행하게
되는데 이런 방법을 Texture Unwrap이라고 합니다.
[You must be registered and logged in to see this image.]
그림 7. Texture Unwrap
또는, 붓을 들고
조각품을 색칠하듯 3차원 상태의 모델을 보며 그 위에 직접 Texture Map을 그리는 방법을 사용하기도 하는데 이런 방법을
3D Painting이라고 합니다. 이 방법은 뭐니 뭐니해도 직관적으로 작업이 이루어진다는 점이 가장 큰 장점입니다. 하지만,
아무래도 정밀한 작업은 힘들기 때문에 아주 정밀하게 맵을 그려야 하는 경우에는 앞서 말씀드린 Texture Unrwap 기법을
사용하는 경우가 더 많습니다.
[You must be registered and logged in to see this image.]
그림 8. BodyPaint 3D (c)MAXON computer
Procedural Texture
[You must be registered and logged in to see this image.]컴
퓨터 그래픽에서 Procedural이라는 용어가 나오면 일단 "자동적인"내지는 "컴퓨터에 의해 만들어지는"이라고 해석하면
됩니다. 그렇다면 Procedural Texture Map의 뜻은 "컴퓨터에 의해서 자동적으로 만들어지는 Texture
Map"정도가 되겠지요. Procedural Texture Map의 핵심은 이와 같이 사용자에 의해 주어지는 변수 값들을 바탕으로 특정 함수(주로 Fractal이나 Noise 함수)를 이용해서 Texture Map을 컴퓨터가 스스로 만들어 낸다는데 있습니다.
그림 9. Procedural Texture
주위에서 가장 흔하게
볼 수 있는 Procedural Texture의 예로는 포토샵에 있는 Gradient 기능을 생각해 볼 수 있습니다. 여러분들이
시작 지점의 색상과 위치 끝나는 지점의 색상과 위치 등 몇 가지 변수 값들을 지정해 주기만 하면 설정에 따라 아주 멋진
Gradient를 만들어지죠. 그런데 이렇게 만들어진 결과를 3D 프로그램에서 매핑 소스로 사용하고 싶다면 어떻게 할까요? 물론
포토샵에서 만들어서 비트맵 이미지로 저장한 다음 3D 프로그램으로 가져와 사용해도 되겠지만 그것보다는 아예 Gradient를
만드는 프로그램 루틴을 3D 프로그램에 알려준 다음 3D 프로그램이 알아서 Gradient를 만들어 Texture Map으로
사용하면 더 편할 것입니다. 이것이 바로 Procedural Texture의 기본 원리입니다.
Procedural
Texture는 생성되는 데이터의 자원에 따라 2D Procedural Texture와 3D Procedural Texture로
나눌수 있는데 앞서 언급한 Gradient의 경우는 2D Procedural Texture라고 할 수 있습니다. 2D
Procedural Texture의 경우는 그냥 비트맵이 그때그때 생성되어 사용된다고만 생각하면 어려울 것이 없습니다. 당연히
매핑 좌표도 필요하겠죠.
중요한 것은 3D Procedural Texture입니다. Solid Texture라고도 불리는 이 방법은 주어진 함수에 의해 Texture Space라는 3차원 공간을 형성하고 오브젝트를 이 공간에 집어넣어 표면의 색상이나 변수 값을 결정하는 방법입니다. 돌덩이를 깎아내는 과정과 똑같다고 보면 되겠습니다.
[You must be registered and logged in to see this image.]이
방법은 다른 Map들에 비해 여러 가지 면에서 장점을 갖는데 일단 Texture Map이 실제로 3차원 공간 전체를 채우고 있기
때문에 매핑 좌표라는 개념이 필요 없어집니다. 따라서 그림 10처럼 아무리 요상하게 생긴 오브젝트라 할지라도 투영 매핑 좌표를
사용할 때처럼 매핑 과정에서 밀리거나 하는 문제가 발생하지 않습니다. 또한 3D Procedural Texture는 아무리
확대해도 깨지지 않는 무한대 해상도를 갖기 때문에 영화용 출력물처럼 고해상도 출력이 필요한 경우 비트맵 이미지를 사용하는
경우보다 메모리를 훨씬 덜 요구한다는 장점도 있습니다. 마지막으로 이 방법은 구름과 같은 비정형의 3차원 물체를 표현하고자 할
때에도 유용하게 사용될 수 있습니다.
그림 10
Bump 매핑 & Displacement 매핑
Bump 매핑이란
오브젝트 표면의 울퉁불퉁함을 표현하기 위한 특수한 형태의 Texture 매핑으로 (1)아스팔트 표면처럼 모델링으로는 처리하기에
너무 미세하게 거친 표면이나 (2)수면처럼 울퉁불퉁한 모양이 애니메이션 되어야 하는 경우에 주로 사용됩니다.
그림11에서 파란 화살표는 각 면의 Normal로서 면은 그대로 두고 Normal 만을 흐트러뜨리면 가운데 그림과 같은 결과가 얻어집니다. 바로 이와 같이 오브젝트에 적용된 매핑 소스의 밝기 값에 따라 오브젝트 표면의 Normal 값을 변화시켜 울퉁불퉁한 표면을 처리하는 방법을 Bump 매핑이라고 합니다. 일종의 눈속임이죠. 결국 Normal만을 흐트려뜨렸을 뿐 오브젝트 자체에는 아무런 변화가 없으므로 중간 부분은 그럴듯하게 보이지만 오브젝트 가장자리는 여전히 직선을 이루는 문제가 발생합니다.
[You must be registered and logged in to see this image.]
그림 11. Bump 매핑과 Displacement 매핑
그래서 눈속임이 아니라 기하체의 형태 자체를 매핑 소스의 밝기 값에 따라 바꿔버리는 방법을 사용하게 되었으니 그것이 바로 Displacement 매핑입니다. 그림은 Displacement 매핑에 의한 결과로서 가장자리를 보면 Bump 매핑과의 차이를 쉽게 구별할 수 있습니다.
Environment 매핑
지금까지 살펴본 내용은
모두 Texture Map을 오브젝트 표면에 대응시키는 Texture Mapping에 대한 얘기들이었습니다. 하지만, 우리는 또
다른 형태의 매핑을 사용할 수 있으니 바로 Environment 매핑입니다. 이 기법은 이미지를 오브젝트 표면이 아닌 환경(Environment)에 매핑하는 기법으
로 Local Illumination Model만을 사용하는 렌더러에서는 반사(Reflection)나
굴절(Refraction)과 같이 오브젝트 상호간의 관계에 의해 생성되는 현상들을 표현할 수 없었기 때문에 이를 해결하기 위해
도입된 방법입니다. 혹자들은 "가난한 자의 Ray Tracing"이라고 부르기도 하지요. 비록 요즘 하드웨어 환경이 좋아지다
보니 Ray Tracing을 이용하기가 쉬워져서 다소 인기가 시들해진 감은 있지만 아무리 Ray Tracing이라 하더라도
반사가 정확하게 표현되려면 장면 안에 반사될 물체들을 모두 만들어 주어야 하기 때문에 여전히 많이 활용되고 있는 기법입니다.
카메라 뒤 보이지도 않는 부분까지 모두 만드느니 이 방법을 여전히 경쟁력을 갖고 있습니다. Toy Story에서도 반사와 굴절
부분은 Ray Tracing이 아니라 Environment 매핑에 의해 모두 처리되었습니다.(PR Renderman은 Ray
Tracing이 지원되지 않는 Scanline Renderer입니다.) Environment 매핑은 시점이 바뀌거나 오브젝트가
움직이게 되면 오브젝트 특정 지점에서 반사되어 보이는 부분이 바뀌게 되므로 해당 오브젝트 표면의 색상도 바뀌는 특징을 갖습니다.
또한 환경에다 매핑을 하므로 오브젝트에 별도의 매핑 좌표를 만들 필요 없죠.
[You must be registered and logged in to see this image.]Environment
매핑을 구현하기 위한 가장 대표적인 방법은 장면 안에 천체와 같은 가상의 거대한 구가 있다고 가정하고 여기에 이미지를 매핑해서
환경(Environment)으로 사용하는데 이를 구형 환경 매핑(Spherical Environment Mapping)이라고
합니다.
그림 12. 구형 환경 매핑(Spherical Environment Mapping)
혹은 가상의 6면체를 만들어 환경을 구성하는 Cubic Environment 매핑도
많이 사용하는데 이 방법은 Spherical Environment 매핑에 비해 이미지의 왜곡 현상이 덜 하다는 장점을 갖습니다.
반면에 매핑 소스로 사용될 6장의 이미지를 만들기가 매우 힘들다는 단점도 있죠. 따라서 Cubic Environment 매핑을
사용할 때에는 별도의 매핑 소스를 만들기보다는 컴퓨터가 장면에 가상의 카메라 6대를 설치하고 이를 통해 자동적으로 매핑 소스를
만들어 쓰는 방법을 사용하는 경우가 많습니다. 뭐 이렇게 되면 이론적으로는 거의 Ray Tracing과 거의 차이가 없지요.
[You must be registered and logged in to see this image.]
그림 13. Cubic Environment 매핑]