CG Texture Mapping


텍스처링 (Texture Mapping)

텍스처 맵핑의 개념 (Concept of Texture Mapping)

소개 (Introduction)
텍스처 맵핑은 3D 모델의 표면에 2D 이미지를 적용하여 사실적인 효과를 만드는 기술입니다. 이 기법을 통해 모델에 디테일한 표면 질감과 패턴을 입힐 수 있습니다.

개념 (Concept)

  • 텍스처 (Texture): 2D 이미지로, 주로 비트맵 형식으로 저장됩니다.
  • 텍스처 맵핑 (Texture Mapping): 3D 모델의 표면에 텍스처를 매핑하는 과정입니다.

원리 (Principle)

  • 텍스처 이미지를 모델의 표면에 매핑하기 위해 텍스처 좌표를 사용합니다. 이러한 좌표는 모델의 정점과 연결되어, 렌더링 시 각 픽셀에 텍스처 색상을 적용합니다.

예제 (Example)

// GLSL 예제: 텍스처 맵핑
#version 330 core
layout(location = 0) in vec3 aPos;
layout(location = 1) in vec2 aTexCoord;

out vec2 TexCoord;

uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;

void main() {
    gl_Position = projection * view * model * vec4(aPos, 1.0);
    TexCoord = aTexCoord;
}

#version 330 core
out vec4 FragColor;
in vec2 TexCoord;

uniform sampler2D texture1;

void main() {
    FragColor = texture(texture1, TexCoord);
}

텍스처 좌표 및 매핑 기법 (Texture Coordinates and Mapping Techniques)

개념 (Concept)

  • 텍스처 좌표 (Texture Coordinates): 2D 텍스처 이미지에서의 위치를 나타내는 좌표로, (u, v) 형태를 가집니다. 일반적으로 0에서 1 사이의 값으로 정규화됩니다.
  • 매핑 기법 (Mapping Techniques): 다양한 방법으로 텍스처를 3D 모델에 적용합니다.

기법 (Techniques)

  • UV 매핑 (UV Mapping): 모델의 표면을 평면으로 펼쳐서 텍스처 좌표를 지정하는 방법입니다.
  • 프로젝션 매핑 (Projection Mapping): 특정 투영 방법을 사용하여 텍스처를 모델에 적용하는 방법입니다.
  • 큐브 매핑 (Cube Mapping): 6개의 텍스처를 사용하여 모델의 모든 면에 텍스처를 적용하는 방법입니다.

예제 (Example)

// GLSL 예제: 텍스처 좌표 적용
layout(location = 1) in vec2 aTexCoord;
out vec2 TexCoord;
void main() {
    TexCoord = aTexCoord;
}

텍스처 필터링 및 안티앨리어싱 (Texture Filtering and Anti-Aliasing)

개념 (Concept)

  • 텍스처 필터링 (Texture Filtering): 텍스처를 확대하거나 축소할 때 발생하는 품질 저하를 개선하는 기술입니다.
  • 안티앨리어싱 (Anti-Aliasing): 경계의 톱니 현상을 줄이는 기술입니다.

필터링 기법 (Filtering Techniques)

  • 최근접 이웃 (Nearest Neighbor): 가장 가까운 텍스처 샘플을 사용하여 픽셀 색상을 결정합니다.
  • 선형 필터링 (Linear Filtering): 주변 텍스처 샘플을 선형 보간하여 픽셀 색상을 결정합니다.
  • 이방성 필터링 (Anisotropic Filtering): 텍스처의 방향성을 고려하여 더 높은 품질의 텍스처 필터링을 제공합니다.

예제 (Example)

// GLSL 예제: 텍스처 필터링
uniform sampler2D texture1;
void main() {
    vec4 color = texture(texture1, TexCoord);
    // 선형 필터링 적용
    FragColor = color;
}

고급 텍스처링 기법 (Advanced Texturing Techniques)

소개 (Introduction)
고급 텍스처링 기법은 표면의 디테일을 더욱 현실감 있게 표현하는 데 사용됩니다. 이러한 기법은 주로 노멀 맵핑과 디스플레이스먼트 맵핑을 포함합니다.

개념 (Concept)

  • 노멀 맵핑 (Normal Mapping): 추가적인 디테일을 표현하기 위해 표면의 노멀 벡터를 조작하는 기법입니다.
  • 디스플레이스먼트 맵핑 (Displacement Mapping): 실제로 표면의 기하학적 변형을 적용하여 디테일을 표현하는 기법입니다.

원리 (Principle)

  • 노멀 맵핑: 각 픽셀의 노멀 벡터를 변경하여 빛의 반사와 조명을 조작합니다.
  • 디스플레이스먼트 맵핑: 텍스처를 사용하여 표면의 높이 정보를 변경하고, 이를 기반으로 실제 기하학적 변형을 적용합니다.

예제 (Example)

// GLSL 예제: 노멀 맵핑
uniform sampler2D normalMap;
void main() {
    vec3 normal = texture(normalMap, TexCoord).rgb;
    normal = normalize(normal * 2.0 - 1.0); // 텍스처 값을 [-1, 1] 범위로 변환
    // 조명 계산에 노멀 벡터 사용
}

// GLSL 예제: 디스플레이스먼트 맵핑
uniform sampler2D displacementMap;
uniform float displacementScale;
void main() {
    float displacement = texture(displacementMap, TexCoord).r * displacementScale;
    vec3 displacedPosition = aPos + normal * displacement; // 정점 위치 변형
    gl_Position = projection * view * model * vec4(displacedPosition, 1.0);
}

사용법 (Usage)

  • 노멀 맵핑: 주로 게임과 실시간 렌더링에서 사용되며, 저해상도 모델에 고해상도 디테일을 추가하는 데 유용합니다.
  • 디스플레이스먼트 맵핑: 고해상도 모델링과 영화 제작에 사용되며, 실제 기하학적 변형이 필요한 경우에 유용합니다.

이와 같이 텍스처링 기법은 3D 모델의 표면을 더욱 현실감 있게 표현하는 데 중요한 역할을 합니다. 기본적인 텍스처 맵핑에서 고급 기법까지 다양한 텍스처링 기술을 통해 복잡하고 디테일한 그래픽스를 구현할 수 있습니다.


Posted in CG

Leave a Reply

Your email address will not be published. Required fields are marked *