[Graphics] Texture

박민주·2022년 6월 19일
0

Computer Graphics

목록 보기
7/8
post-thumbnail

Texturing

  • 꼭짓점을 여러 개 만들지 않고서도 다양한 색을 줄 수 있는 방식
  • 복잡한 색 분포를 나타내기 위한 Texture mapping (스티커를 붙이는 것)

Texture

  • 물체에 붙여질 이미지를 말함
  • 표면의 색 분포를 결정함

Texture map

  • 각 픽셀에 어느 색이 맵핑되는지 결정되어야 함
  • 이미지와 물체의 표면 간의 관계를 결정
  • 텍스처로부터 픽셀의 색깔을 결정하기 위해,
    픽셀이 표면 상에 어떻게 배치되고 텍스처 이미지 상의 어느 영역을 커버하는지 알아야 함
  • Texture Image + Mapping Info
  • 픽셀을 그리기 위해 픽셀의 색깔을 가진 해당되는 텍셀을 찾는 과정

Texture Coordinate

  • [0,1] x [0,1] 즉, 텍스처 이미지는 0과 1사이의 좌표로 구성되는 정사각형
  • 텍스처 공간에서의 텍스처 이미지 상의 위치를 x,y로 나타냄
  • 가로축을 u축, 세로축을 v축으로 나타냄

Issues in Texture mapping

1. Addressing

  • 만약 u,v 좌표가 0보다 작아지거나 1보다 커지면?
  • Repeat, mirror, clamp, border 등의 방법이 있음

    Repeat
    - 1보다 큰 값이 되면 1을 빼서 그림이 계속 반복됨 (1.3 -> 0.3)
    Mirror
    - 1보다 커지면 다시 차례대로 감소해서 서로 뒤집힌 형태로 그려짐 (1.3 -> 0.7)
    Clamp
    - 1보다 크면 1, 0보다 작으면 0의 값으로 설정하여 가장자리 값이 반복됨 (1.3 -> 1.0)
    Border
    - 0보다 작거나 1보다 크면 정해진 색으로 그림

2. Coordinate Generation

Projection method

  • 각 꼭짓점에 텍스처 좌표를 정해줄 때 규칙을 가지고 계산하는 것

    Spherical
    - 사각형인 텍스처 이미지를 구에다가 표현해서 적도에 가까워질 수록 촘촘해짐
    Cylindrical
    - 원통에 스티커를 붙이는 듯한 방법
    Planar
    - 한 쪽 면에다가만 척 붙임

3. Texture Filtering

  • 텍스처 맵핑 시 모호성이 있음
  • 하나의 텍셀은 픽셀의 일부분에 맵핑될 수도 있고, 여러 픽셀에 맵핑될 수도 있음
    또한 여러 텍셀이 하나의 픽셀에 적용될 수도 있음
  • 그래서 나온 게 Nearest Neighbor Method
    픽셀의 색을 채울 때 가장 가까운 텍셀의 색깔을 적용시킴
    픽셀이 넓은 영역으로 표시되면 계단효과가 발생할 수도 있는 게 문제

Linear Filtering

  • 색들의 선형 조합을 계산하는 것
  • 많은 픽셀에 하나의 텍셀을 맵핑할 때 효과적!
  • Nearest 방식이랑 비교했을 때 계단현상이 덜함
  • Bilinear Interpolation도 있는데 x,y 축으로 보간하는 것을 의미

4. Texture Minification

  • 텍스처가 축소되었을 때의 문제
  • 하나의 픽셀 안에 많은 수에 텍셀이 들어왔을 때 해당 픽셀에 색은 수 많은 텍셀 중 어느 색을 채택?
    많은 텍셀들의 평균을 내서 하나의 픽셀의 색을 결정해야 하는데 굉장히 복잡함
  • 해결 방법 중 하나가 Mipmap

    Mipmap
    - Texture minification 에서 여러 텍셀의 평균을 미리 계산하는 것을 말함
    - Pre-generate average colors
    - 원래의 하나의 색 대신에 평균된 색을 사용

Mipmapping

  • Image pyramid: 줄이기 전 텍스처에서 4개 픽셀에 대한 평균을 냄
  • 색을 정할 때 어느 정도의 레벨을 선택할 것인지 결정(해상도)
  • 레벨 0은 원래 해상도, 레벨 1은 1/2, 레벨 2는 1/4, ..
  • 줄이면서 색깔을 계산할 때에는 Nearest neighbor / Linear filtering / Trilinear, bilinear, single linear filtering 중에 선택할 수 있고, 이들을 조합할 수도 있음
  • 텍스처가 레벨 별로 여러 개이더라도 추가적인 메모리는 33% 밖에 안 씀
  • Mipmapping의 단점은 아래 그림과 같이 먼 부분의 블러가 심하다는 점임 (거의 무늬를 못알아볼 정도)
  • 해결방법은 Anisotropic Texture Filtering 을 쓰는 것임

    Anisotropic Texture Filtering
    비등방성 필터링, 이방성 필터링, 애니소트로픽 필터링(anisotropic filtering, 간단히 AF)은 3차원 컴퓨터 그래픽스에서 빗각에 놓인 표면 위의 질감의 품질을 강화하는 방법이다.
    이중선형 및 삼중선형 필터링과 같이, 비등방성 필터링은 에일리어싱 효과를 제거하지만 블러를 제거하고 매우 높은 시야각에서 자세한 부분을 보존함으로써 이러한 다른 기술들을 보완한다.
    비등방성 압축은 상대적으로 부하가 큰 까닭에 1990년대 말에 들어서야 소비자 수준의 그래픽 카드의 표준 기능으로 등장하게 되었다. 이 기법은 현재 현대의 그래픽 하드웨어 및 그래픽 드라이버 소프트웨어에 일상적으로 쓰이며 사용자가 드라이버 설정이나 그래픽 프로그램, 비디오 게임을 통해 설정을 변경할 수 있다.
    (출처: https://ko.wikipedia.org/wiki/%EB%B9%84%EB%93%B1%EB%B0%A9%EC%84%B1_%ED%95%84%ED%84%B0%EB%A7%81)

Applying Texture

  • Illumination Color, Texture Color 계산 필요
  • Modulate와 Replace 필요
    Modulate: Lighting의 영향에 따라 texture color를 곱하는 것
    Replace: texure color 만을 사용하는 것

Multi-texture

Blending

  • 텍스처와 라이팅의 블렌딩
  • 텍스처와 텍스처의 블렌딩
profile
Game Programmer

0개의 댓글