본문 바로가기
전공/컴퓨터 그래픽스

텍스처 (2)텍스쳐 매핑 기법

by 임 낭 만 2023. 5. 20.

텍셀 (Texel)

  • 텍스쳐 영상의 기본단위
  • 화소와 마찬가지로 (R, G, B, A) 저장
  • 예 (a) : 6☓5 크기의 2차원 배열로 저장. 텍스쳐 좌표는 정규화 형태로 표현.
  • 텍스쳐 매핑: (s, t) 좌표로 표현된 2차원 텍스쳐 영상을 (x, y, z) 좌표로 표현된 3차원 물체면으로 사상


평면 다각형의 텍스쳐 맵핑

수작업으로 좌표 명시

매핑 방향 : 다각형에서 텍스쳐

  • 화소별로 해당 텍스쳐를 구함. 해당 화소의 무게중심 좌표(Barycentric Coordinates)를 구함.

  • 에일리어싱 발생가능 (undersampling)

투상 이후에 텍스쳐를 가하는데 따른 오류

  • 원근변환은 특성상 원래의 물체 길이를 보존하지 않음
  • 투상 이후의 정점을 기준으로 구해진 무게중심 좌표는 원래 정점을 기준으로 구해진 무게중심 좌표와는 서로 다를 수 있음


곡면의 텍스쳐 맵핑

  • 평면으로 곡면을 둘러싸는데 따르는 어려움

  • 역으로 곡면으로 평면을 만드는데 따르는 어려움

곡면의 텍스쳐 맵핑 - 파라미터 곡면

  • 원구좌표 (표면 상의 점을 경도, 위도로 표현 가능)

u는 y축으로부터의 각도, v는 z축으로부터의 각도, r은 반지름의 길이

  • 평면 텍스쳐를 원구 표면으로 매핑

곡면의 텍스쳐 맵핑 - 다각형 곡면

  • 2단계 매핑(2-Stage Mapping)
    • 곡면을 매개변수로 표시할 수 없을 때
    • S 매핑(S Mapping)에서는 텍스쳐를 원기둥, 육면체, 원구 등 중개면(Intermediate Surface)에 입힘.
  • S 매핑의 예: 원기둥 중개면

  • O 매핑
    • 물체를 중개면 내부에 넣고 물체면에 텍스쳐를 입힘.
    • 원기둥, 육면체, 원구 중개면

  • O 매핑의 종류
    • 물체면 법선 벡터(a), 물체 중심(b), 중개면 법선 벡터 (c), 시점 반사 벡터 (d)

곡면의 텍스쳐 맵핑

곡면의 텍스쳐 맵핑 - Box Mapping

곡면의 텍스쳐 맵핑 - Cylinder Mapping

곡면의 텍스쳐 맵핑 - Sphere Mapping


주편 매핑 (Environmental Mapping)

  • 경면 반사(Specular Reflection)를 위주로 표현할 수 있는 물체, 반사 매핑(Reflective Mapping).

  • 2단계 매핑 사용
    • O 매핑에서 항상 시점 반사벡터를 사용
    • 시점 위치에 따라 서로 다른 모습

  • 원구 중개면의 예
    • 물체주변 모습을 광각으로 반영
    • 180도 어안렌즈로 촬영된 텍스쳐


지엘의 텍스쳐 매핑

지엘의 텍스쳐 매핑 - 수동 매핑

glBegin(GL_POLYGON); 
    glNormal3f(0.0, 0.0, 1.0); 
    glTexCoord2f(0.2, 0.8);                   //텍스쳐 정점 a를 
    glVertex3f(7.5, 10.5, 0.0);               //물체 정점 A에 할당 
    glNormal3f(0.0, 0.0, 1.0); 
    glTexCoord2f(0.4, 0.2);                   //텍스쳐 정점 b를 
    glVertex3f(0.0, 3.8, 0.0);                //물체 정점 B에 할당 
    glNormal3f(0.0, 0.0, 1.0); 
    glTexCoord2f(0.8, 0.4);                   //텍스쳐 정점 c를 
    glVertex3f(12.0, 0.0, 0.0);               //물체 정점 C에 할당 
glEnd( );

지엘의 텍스쳐 매핑 - 자동 매핑

void glTexGen{ifd}[v](GLenum coord, GLenum pname, TYPE param);
  • 기준평면과의 물체와의 거리

static GLfloat MyPlane[ ] = {1.0, 0.0, 0.0, 0.0};
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR);
glTexGenfv(GL_S, GL_OBJECT_PLANE, MyPlane);
glEnable(GL_TEXTURE_GEN_S);

지엘의 텍스쳐 매핑 - 주변 매핑

glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);

  • 지엘: 카메라(360)도

댓글