Texture Mapping
목차
- Texture Mapping
- Texture coordinate functions
- - Projections
- - Cubemap
- Mapping Techniques
- - Antialiasing
- - Normal Bump Mapping
Texture Mapping
개요
현실의 물체들은 색이나 법선 방향등이 균일하지 않은 문제점으로 높은 디테일은 모델링하기 어렵습니다.
사실적인 shading을 위해서 색상, 법선에 변화를 주는 것이 필요 → Texture(텍스처, Map이라는 단어도 씁니다.)를 사용해서 복잡한 디테일의 모델링을 대체합니다
방법
텍스처 자체는 2차원 이미지로 2차원 이미지를 3차원 물체 표면에 덮어씌우는 매핑과정을 통합니다.
물체의 표면이 평면인 경우(벽, 바닥) 그냥 덮어 씌우면 되지만, 곡면을 가진 표면이라면 표면의 parameter인 (u,v)를 texture coordinate로 사용합니다. 즉 표면의 각 점은 텍스처 위의 다른 점으로 매핑합니다.
Texture Coordinate Functions
● Planar Projection (평면 투영)
텍스처를 그래도 평면으로 투영시키는 방법입니다. 이 경우 x,y평면은 괜찮은데 수직이거나 그 외는 투영이 왜곡이 심해집니다.
● Spherical Projection (구면 투영)
물체를 원으로 감싸듯이 매핑하는 방법입니다. 이 때 아래 설명과 같이 극점에서의 문제점이 있습니다. 극점은 3D에서는 한 점이지만, 2D에서는 한 라인으로 표시되어 유니크하지 않은 점이 있습니다. (지구본 vs 세계지도에서의 북극)
● Cylindrical Projection (원통 투영)
물체를 원통형으로 매핑하는 방법입니다.
● Cubemap
여러 텍스처를 하나의 텍스처로 매핑할 수 있는 방식으로, 정육면체 각 면에 텍스처를 반영한 방식이 Cubemap입니다.
게임에서 배경을 표현하기 위한 Skybox도 cubemap으로 표현할 수 있습니다.
● Interpolated Texture Coordinates - Barycentric Coordinate (보간 텍스처 좌표 - 질량 중심 좌표계)
Barycentric Coordinates는 삼각형의 내부의 점을 표현하는 좌표계입니다. 삼각형 내부 점을 정점 3개의 좌표와 보간된 비율로 표현합니다.
Barycentric은 질량을 뜻하는 접두사 Bary와 중심을 뜻하는 접미사 centric이 합쳐진 단어입니다.
아래가 예시가 다 질량 중심 좌표계인지는 확실하지 않으나, 보간을 바탕으로 텍스처를 매핑하는 방법입니다.
Mapping Techniques?
● Texture Wrapping Modes - 가장자리 처리 방법
● Antialiasing Texture Lookup
Aliasing : Discrete raster device에서는 부드러운 선을 그릴 수 없습니다. 그래서 계단형의(staircased) 라인(jaggies)들을 그리게 됩니다. 이런 끊겨보이는 현상을 aliasing aritfact(staircased pixels, moire patterns)라 합니다.
○ Supersampling : Anti Aliasing 기술로 각 pixel을 칠할 때, point에 정확한 값보다는 point 주변의 area의 평균값으로 pixel의 색상을 결정합니다. (Area 내에서 Blending)
○ Reconstruction : Texel(Texture 내 1개의 Pixel)보다 실제 매핑(texture space footprint)의 크기가 작을 때 texel들 간의 보간(interpolation)을 적용합니다. Texel보다 실제 매핑이 크다면 여러 texel들 간의 평균 값을 효율적으로 계산하는 것이 중요합니다.
○ Mipmapping : 같은 이미지를 downsampling해서 저장한 텍스처들의 계층적 집합인 Mipmap을 가지고, 실제 매핑의 크기와 비슷한 texel을 가진 mipmap에서 pixel 값을 읽습니다.
● Normal - Bump Mapping
물체 표면은 보통 부드럽지 않고, 이를 재현하기 위해서는 복잡한 기하 모델이 필요합니다.
이를 위해 normal을 국소적으로 흔들어서 실제로는 부드럽지만 눈으로 보이는 표면의 재질은 부드럽지 않게 표현할 수 있습니다.
○ Normal - Bump vs Displacement Mapping
Normal - Bump는 실제 표면의 형태는 바꾸지 않는 shading tick이라 실루엣을 보면 여전히 부드럽게 보입니다.
Displacement mapping은 normal 방향의 height map을 저장해서 normal의 국소적인 흔들기를 surface에도 실제로 적용하는 것입니다
● Environmental Mapping
공간에서 반사되어 나오는 빛을 texture로 저장하는 방법입니다. 반사 효과를 나타내는 가장 저렴한 방법으로 주변 파노라마 이미지를 생성해 물체에 텍스처로 매핑합니다. 사람의 눈은 반사에 대해 둔감하여 효율적입니다.
● Volumetric Textures
텍스처 패턴을 3D domain에서 정의해 물체의 각각의 점에 대해 3D location으로 텍스처를 계산해 매핑합니다.
주로 자연 모습에 메테리얼이나 불규칙적인 텍스처에 사용하는 것 같습니다(돌, 나무, 등등)