맨위로가기

텍스처 매핑

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

텍스처 매핑은 3차원 모델의 표면에 2차원 이미지를 입혀 사실적인 표현을 구현하는 기술이다. 1974년 에드윈 캐트멀에 의해 처음 개발되었으며, 디퓨즈 매핑에서 시작하여 멀티텍스처링, 밉맵 등 다양한 기술 발전을 거쳐 사실적인 3D 렌더링을 가능하게 했다. 텍스처 맵은 3D 모델의 폴리곤 표면에 적용되는 2차원 이미지로, 비트맵 또는 절차적 텍스처 형태를 가질 수 있으며, 텍스처 좌표를 통해 텍스처를 모델에 매핑한다. 텍스처 매핑은 아핀, 원근 보정, 멀티텍스처링, 텍스처 필터링, 텍스처 스트리밍, 베이킹 등 다양한 기법을 사용하며, 하드웨어 구현 방식에 따라 순방향 및 역방향 텍스처 매핑으로 나뉜다. 3D 렌더링 외에도 단층 촬영, 사용자 인터페이스 등 다양한 분야에 응용된다.

더 읽어볼만한 페이지

  • 텍스처 매핑 - 범프 매핑
    범프 매핑은 표면의 작은 변위를 시뮬레이션하여 렌더링된 표면을 현실적으로 보이게 하는 컴퓨터 그래픽스 기술로, 표면 법선만 수정하여 조명 계산에 사용되며, 높이 맵이나 노멀 맵을 사용하여 구현되고 실루엣과 그림자에는 영향을 주지 않는 제한이 있다.
  • 텍스처 매핑 - UV 매핑
    UV 매핑은 3차원 객체 표면에 2차원 이미지를 입히는 기술로, UV 텍스처 맵을 사용하여 3D 모델 다각형에 색상과 표면 속성을 할당하며, 메시 펼치기, 텍스처 생성, 텍스처 적용 단계를 거쳐 게임, 애니메이션 등 다양한 분야에 활용된다.
  • 컴퓨터 그래픽스 - 딥페이크
    딥페이크는 인공지능 기술을 활용하여 영상이나 이미지를 조작, 합성하여 실제와 구별하기 어렵게 만드는 기술이며, 가짜 뉴스, 명예훼손, 신원 위장 등 다양한 문제점을 야기한다.
  • 컴퓨터 그래픽스 - 엔비디아
    엔비디아는 1993년 설립된 미국의 반도체 회사로, GeForce 256을 통해 GPU라는 용어를 대중화하고 딥러닝 기술 발전에 힘입어 인공지능 및 자율주행 분야에서 시장을 선도하며 성장하여 2024년 6월에는 시가총액 세계 1위 기업에 올랐다.
텍스처 매핑

2. 역사

에드윈 캐트멀은 1974년에 텍스처 매핑 기술을 처음 개발했다.[4] 초기에는 3D 표면에 텍스처의 픽셀을 단순히 매핑하는 '''디퓨즈 매핑'''이 주로 사용되었다.

최근 수십 년 동안, 멀티텍스처링, 밉맵, 높이 매핑, 범프 매핑, 노멀 매핑, 변위 매핑 등 다양한 고급 매핑 기술이 등장하면서, 실시간으로 거의 포토리얼리즘에 가까운 시뮬레이션이 가능해졌다.

3. 텍스처 맵

텍스처 맵은 2차원 컴퓨터 그래픽 그림으로, 폴리곤 표면에 적용된다. 이 과정은 마치 색이 없는 상자에 무늬가 있는 종이를 붙이는 것과 비슷하다.[5][6][7] 텍스처 맵은 비트맵 이미지 또는 절차적 텍스처일 수 있으며, 일반적인 이미지 파일 형식으로 저장되거나 3D 모델 형식 또는 재질 정의에서 참조될 수 있다.

가시적인 표면의 경우 2차원이 가장 일반적이지만, 1차원에서 3차원까지 가능하다. 최신 하드웨어와 함께 사용하기 위해 텍스처 맵 데이터는 모턴 순서 또는 타일 순서로 저장되어 캐시 일관성을 향상시킬 수 있다. 렌더링 API는 텍스처 맵 리소스를 버퍼 또는 표면으로 관리하며, 후처리 또는 환경 매핑과 같은 효과를 위해 '텍스처 렌더링'을 허용할 수 있다.

텍스처 맵은 주로 RGB 색상 데이터와 알파 블렌딩(RGBA)을 위한 추가 채널을 포함하며, 알파 채널반사율과 같은 다른 용도로 사용될 수 있다. 여러 개의 텍스처 맵은 텍스처 아틀라스 또는 배열 텍스처로 결합될 수 있으며, 최신 하드웨어는 환경 매핑을 위해 큐브 맵 텍스처를 지원하기도 한다.

에드윈 캐트멀 등은 1974년에 텍스처 매핑 기술을 개발했다.[18] 텍스처는 3D 객체 표면에 벽지처럼 붙여져 질감을 향상시킨다. 예를 들어, 암석 표면 텍스처를 불균등한 다면체에 적용하면, 많은 폴리곤을 사용하지 않고도 현실감 있는 암산을 표현할 수 있다.

텍스처 기술의 단점은 렌더링 시 상세도가 텍스처 이미지 해상도에 의존한다는 점이다. 해상도가 충분하지 않으면 시점에 가까운 폴리곤에서 픽셀이 보일 수 있다.

3. 1. 텍스처 생성

텍스처 맵은 스캔이나 디지털 사진을 통해 얻거나, GIMP, 포토샵과 같은 이미지 편집 소프트웨어에서 디자인하거나, Mudbox 또는 ZBrush와 같은 3D 페인트 도구에서 3D 표면에 직접 그려서 만들 수 있다.

3. 2. 텍스처 적용

텍스처 매핑은 3차원 물체의 표면에 2차원 이미지인 텍스처를 입히는 과정이다. 마치 색이 없는 상자에 무늬가 있는 종이를 붙이는 것과 비슷하다.

다각형의 각 정점에는 텍스처 좌표(2D의 경우 UV 좌표)가 할당된다.[8] 이는 정점 속성을 직접 지정하거나, UV 언래핑 도구를 사용하여 3D 모델링 프로그램에서 수동으로 편집할 수 있다. 또는 재질과 연결된 절차적 변환을 통해 텍스처 공간으로 매핑할 수도 있다. 평면 투영, 원통 좌표 또는 구면 좌표 매핑 등이 사용될 수 있으며, 더 복잡한 매핑은 왜곡을 최소화하기 위해 표면을 따라 거리를 고려하기도 한다.

이러한 좌표는 렌더링 과정에서 텍스처 맵을 샘플링하기 위해 다각형 면에 걸쳐 보간된다. 텍스처는 유한한 직사각형 비트맵을 더 넓은 영역으로 확장하기 위해 반복되거나 미러링될 수 있다. 또는 표면의 모든 부분에서 일대일 고유한 단사 매핑을 가질 수도 있는데, 이는 렌더 맵핑 및 광원 맵핑(베이킹)에 중요하다.

3. 2. 1. 텍스처 공간

텍스처 매핑은 모델 표면(또는 래스터화 중 화면 공간)을 '''텍스처 공간'''에 매핑한다. 이 공간에서 텍스처 맵은 왜곡되지 않은 형태로 표시된다. UV 언랩핑 도구는 일반적으로 텍스처 좌표의 수동 편집을 위해 텍스처 공간 보기를 제공한다. 서브 표면 산란과 같은 일부 렌더링 기술은 텍스처 공간 연산을 통해 대략적으로 수행될 수 있다.

텍스처 위의 좌표는 텍스처 좌표이며, 2차원 벡터 또는 3차원 벡터로 표시되며, 벡터의 성분은 대부분 U, V, W로 표시된다.[19] 텍스처를 물체에 적용하기 위해서는 물체의 각 부분이 텍스처의 어느 부분을 사용할 것인지에 대한 정보가 필요한데, 이는 텍스처 좌표로 표시된다. 이 텍스처 좌표는 정확하게는 픽셀마다 필요하지만, 실제로는 처리 속도 확보를 위해 정점마다 계산되며, 픽셀마다의 좌표는 선형 보간되는 경우가 많다.

텍스처 좌표는 텍스처의 크기를 초과하는 바깥쪽을 지정할 수도 있지만, 이 경우 픽셀 값을 어떻게 결정할지에 관해서는 몇 가지 처리 방법(클램프, 리피트, 미러 등)이 있다.

2차원 텍스처의 경우, 텍스처 좌표는 사전에 설정되거나, 다음 기법에 의해 생성된다. (2차원 텍스처 좌표는 U축, V축으로 표시되므로 "UV 좌표"라고도 불린다)

3. 3. 멀티텍스처링

멀티텍스처링은 한 번에 여러 개의 텍스처를 폴리곤에 사용하는 것이다.[9] 예를 들어, 광원 맵 텍스처는 표면에 빛을 비추는 데 사용될 수 있다. '''마이크로 텍스처''' 또는 '''디테일 텍스처'''는 고주파 디테일을 추가하는 데 사용되며, '''dirt 맵'''은 풍화 작용과 변화를 추가할 수 있다. 이는 반복되는 텍스처의 겉보기 주기성을 크게 줄일 수 있다. 현대 그래픽은 더 높은 충실도를 위해 셰이더를 사용하여 결합된 10개 이상의 레이어를 사용할 수 있다. 또 다른 멀티텍스처 기술은 범프 매핑인데, 이 기술을 사용하면 텍스처가 표면의 조명 계산 방향을 직접 제어할 수 있다.[10]

3. 4. 텍스처 필터링

샘플(예: 화면의 픽셀로 볼 때)이 텍셀(텍스처 픽셀)에서 계산되는 방식은 텍스처 필터링에 의해 결정된다. 가장 저렴한 방법은 가장 가까운 이웃 보간법을 사용하는 것이지만, 쌍선형 보간법 또는 삼선형 보간법은 미프맵 간의 두 가지 흔히 사용되는 대안으로, 계단 현상 또는 자글거림을 줄여준다. 텍스처 좌표가 텍스처 범위를 벗어나는 경우, 이는 클램핑되거나 래핑된다. 이방성 필터링은 텍스처를 비스듬한 시야각에서 볼 때 방향성 아티팩트를 더 잘 제거한다.

3. 5. 텍스처 스트리밍

텍스처 스트리밍은 각 텍스처를 두 개 이상의 서로 다른 해상도로 제공하여, 시청자로부터의 그리기 거리와 텍스처에 사용 가능한 메모리 양을 기준으로 어떤 텍스처를 메모리에 로드하여 사용할지를 결정하는 데이터 스트림을 사용하는 방법이다. 텍스처 스트리밍을 통해 렌더링 엔진은 시청자의 카메라에서 멀리 떨어진 객체에 대해 낮은 해상도의 텍스처를 사용하고, 시점이 객체에 가까워짐에 따라 데이터 소스에서 읽어 더 자세한 텍스처로 교체할 수 있다.

3. 6. 베이킹

베이킹은 복잡한 모델 또는 고비용 프로세스(예: 전역 조명)의 디테일을 표면 텍스처(주로 저해상도 모델)로 렌더링하여 최적화하는 기법이다. 베이킹은 '''렌더 매핑'''이라고도 불린다.[18]

이 기술은 광원 맵 생성에 가장 일반적으로 사용되지만, 노멀 맵 및 디스플레이스먼트 맵을 만드는 데에도 사용될 수 있다. 일부 컴퓨터 게임(예: 메시아)에서 이 기술을 사용했으며, 초기 퀘이크 소프트웨어 엔진은 광원 맵과 색상 맵("표면 캐싱")을 결합하기 위해 즉석에서 베이킹을 사용했다.[18]

베이킹은 세부 수준 생성을 위한 형태로 사용될 수 있다. 이를 통해 복잡한 장면을 렌더링 비용과 드로우 콜 감소를 위해 알고리즘적으로 축소된 ''단일'' 텍스처를 가진 ''단일'' 요소로 근사할 수 있다. 또한 3D 조각 소프트웨어 및 포인트 클라우드 스캔에서 고해상도 모델을 가져와 실시간 렌더링에 더 적합한 메쉬로 근사하는 데에도 사용된다.[18]

4. 래스터화 알고리즘

소프트웨어와 하드웨어 구현에서 다양한 래스터화 기술이 발전해왔다. 각각은 정밀성, 다재다능함, 성능 면에서 서로 다른 장단점을 가진다. 예를 들어, 초기 플레이스테이션에서는 빠른 렌더링을 위해 아핀 텍스처 매핑을 사용했지만, 원근감이 부족하여 왜곡이 발생했다. 이를 보완하기 위해 원근 보정 텍스처 매핑이 개발되었지만, 계산 비용이 더 많이 들었다.

둠 엔진은 카메라 회전을 제한하고, 벽과 바닥/천장의 깊이가 일정하다는 점을 이용하여 원근 보정 계산을 단순화하고 아핀 매핑을 활용했다. 또한, 원근 보정의 정확도를 높이기 위해 다각형을 더 작은 단위로 분할하는 방법도 사용되었다. 퀘이크 엔진은 스캔라인의 16픽셀마다 원근 보정 좌표를 계산하고 그 사이를 선형 보간하는 방식을 사용했다.

이 외에도 다항식을 사용하거나, 이전에 계산된 값을 이용하여 원근감을 근사하는 다양한 기법들이 개발되었다.

4. 1. 아핀 텍스처 매핑

'''아핀 텍스처 매핑'''은 표면 전체에서 텍스처 좌표를 선형적으로 보간하는 방식의 텍스처 매핑이다. 가장 빠른 텍스처 매핑 방식이기도 하다. 일부 소프트웨어나 하드웨어(예: 초기 플레이스테이션)는 렌더링을 할 때 3차원 공간의 꼭짓점을 화면에 투영하고, 화면 공간에서 텍스처 좌표를 선형적으로 보간한다. 이는 고정 소수점 UV 좌표를 증가시키거나 브레젠햄의 선 알고리즘과 유사한 증분 오차 알고리즘을 사용하여 수행할 수 있다.

아핀 텍스처 매핑은 다각형의 꼭지점에 대한 깊이 정보를 고려하지 않으므로, 다각형이 시청자에 수직이 아닌 경우 특히 삼각형으로 래스터화될 때 눈에 띄는 결함이 발생한다.


수직 다각형과는 달리, 원근 변환으로 인해 눈에 띄는 왜곡이 발생한다(그림 참조: 체커보드 텍스처가 구부러져 보임). 이러한 왜곡은 특히 카메라 근처의 기본 도형에서 두드러진다. 이러한 왜곡은 다각형을 더 작은 다각형으로 세분하여 줄일 수 있다.

직사각형 객체의 경우, 특히 시점에 수직인 경우, 쿼드를 통해 선형 보간하는 것이 동일한 사각형을 두 개의 아핀 삼각형으로 분할하는 것보다 더 나은 아핀 결과를 제공할 수 있다.


직사각형 객체의 경우, 쿼드 기본 도형을 사용하는 것이 동일한 사각형을 삼각형으로 분할하는 것보다 덜 부자연스러워 보일 수 있다. 하지만 4개의 점을 보간하면 래스터화가 복잡해지기 때문에 대부분의 초기 구현에서는 삼각형만을 선호했다. Nvidia NV1에서 사용된 정방향 텍스처 매핑과 같은 일부 하드웨어는 효율적인 쿼드 기본 도형을 제공할 수 있었다. 원근 보정을 사용하면 삼각형이 동등해지며 이점은 사라진다.

바닥과 벽처럼 시청자에 수직인 직사각형 객체의 경우, 원근은 화면 전체의 한 방향에서만 보정하면 된다. 바닥의 왼쪽 및 오른쪽 가장자리에서 정확한 원근 매핑을 계산한 다음, 해당 수평 구간에서 아핀 선형 보간을 수행하면 올바르게 보일 것이다. 왜냐하면 해당 선을 따라 모든 픽셀이 시청자로부터 동일한 거리에 있기 때문이다.

4. 2. 원근 보정

원근 보정 텍스처 매핑은 2차원 화면 공간에서 좌표를 단순히 보간하는 대신, 3차원 공간에서 정점의 위치를 고려한다.[11] 이렇게 하면 시각적으로 올바른 효과를 얻을 수 있지만 계산 비용이 더 많이 든다.[11]

텍스처 좌표 uv의 원근 보정을 수행하기 위해, 관찰자의 관점에서 깊이 성분인 z를 사용한다. 값 \frac{1}{z}, \frac{u}{z}, 그리고 \frac{v}{z}는 텍스처링되는 표면 전체에서 화면 공간에서 선형이라는 사실을 이용할 수 있다. 반면에 나눗셈 이전의 원래 z, u, 그리고 v는 화면 공간에서 표면 전체에 걸쳐 선형이 아니다. 따라서 각 픽셀에서 보정된 값을 계산하여 표면 전체에서 이러한 역수를 선형적으로 보간하여 원근 보정된 텍스처 매핑을 얻을 수 있다.

이를 위해 먼저 기하 도형의 각 정점(삼각형의 경우 3개 점)에서 역수를 계산한다. 정점 n에 대해 \frac{u_n}{z_n}, \frac{v_n}{z_n}, \frac{1}{z_n}을 갖는다. 그런 다음 n개의 정점 사이에서 이러한 역수를 선형적으로 보간한다(예: 바리 중심 좌표 사용). 이는 표면 전체에 걸쳐 보간된 값을 생성한다. 주어진 지점에서 보간된 u_i, v_izReciprocal_i = \frac{1}{z_i}를 얻는다. 이 u_i, v_iz로 나눗셈을 수행하여 좌표계를 변경했으므로 아직 텍스처 좌표로 사용할 수 없다는 점에 유의해야 한다.

u, v 공간으로 다시 보정하기 위해, 먼저 역수를 다시 취하여 보정된 z를 계산한다. z_{correct} = \frac{1}{zReciprocal_i} = \frac{1}{\frac{1}{z_i}}이다. 그런 다음 이를 사용하여 u_i, v_i를 보정한다. u_{correct} = u_i \cdot z_i v_{correct} = v_i \cdot z_i.[12]

이 보정을 통해 뷰어에 더 가까운 다각형 부분에서는 텍스처 좌표 간의 픽셀 간 차이가 작아지고(텍스처를 더 넓게 늘림), 더 먼 부분에서는 이 차이가 커진다(텍스처를 압축).

어파인 텍스처 매핑과 비교하면, 원근 보정 매핑은 깊이 z^{}_{}로 나눈 후 보간하며, 보간된 역수를 사용하여 올바른 좌표를 복구한다.

  • 어파인 텍스처 매핑: u^{}_{\alpha}= (1 - \alpha ) u_0 + \alpha u_1 (여기서 0 \le \alpha \le 1)
  • 원근 보정 매핑: u^{}_{\alpha}= \frac{ (1 - \alpha ) \frac{ u_0 }{ z_0 } + \alpha \frac{ u_1 }{ z_1 } }{ (1 - \alpha ) \frac{ 1 }{ z_0 } + \alpha \frac{ 1 }{ z_1 } }


3D 그래픽 하드웨어는 일반적으로 원근 보정 텍스처 매핑을 지원한다.

다양한 기술이 텍스처 매핑된 기하 도형을 다양한 품질/정밀도 절충으로 이미지로 렌더링하기 위해 발전했으며, 이는 소프트웨어와 하드웨어 모두에 적용할 수 있다. 고전적인 소프트웨어 텍스처 매퍼는 일반적으로 최대 하나의 조명 효과(일반적으로 룩업 테이블을 통해 적용됨)로 단순한 매핑만 수행했으며, 원근 보정은 비용이 약 16배 더 많이 들었다.

4. 3. 제한된 카메라 회전

둠 엔진은 세상을 수직 벽과 수평 바닥/천장으로 제한했으며, 카메라는 수직 축을 중심으로만 회전할 수 있었다. 이는 벽이 수직선을 따라 일정한 깊이 좌표를 가지고, 바닥/천장이 수평선을 따라 일정한 깊이를 갖는다는 것을 의미했다. 깊이에 대한 한 번의 원근 보정 계산을 수행한 후, 나머지 선은 빠른 아핀 매핑을 사용할 수 있었다. 이 시대의 일부 후기 렌더러는 동일한 렌더링 기술을 사용하면서 더 큰 자유를 제공하는 것처럼 보이도록 피치를 약간 시뮬레이션했는데, 이는 전단 변환을 통해 구현되었다.[13]

4. 4. 원근 보정을 위한 세분화



원근 보정을 위해 삼각형을 더 작은 삼각형으로 분할하여 아핀 매핑의 왜곡을 줄일 수 있다. 모든 삼각형은 산술 장치를 항상 작동시키고 더 빠른 산술 결과를 생성하기 위해 약 16픽셀 그룹으로 세분화될 수 있다.

4. 4. 1. 월드 공간 세분화



'''아핀 텍스처 매핑'''은 표면 전체에서 텍스처 좌표를 선형적으로 보간하므로 가장 빠른 형태의 텍스처 매핑이다. 일부 소프트웨어 및 하드웨어(예: 초기 플레이스테이션)는 렌더링 중에 3D 공간의 꼭지점을 화면에 투영하고, 텍스처 좌표를 화면 공간에서 선형적으로 보간한다. 이는 고정 소수점 UV 좌표를 증가시키거나 브레젠햄의 선 알고리즘과 유사한 증분 오차 알고리즘을 사용하여 수행할 수 있다.

수직 다각형과 달리, 이는 원근 변환으로 인해 눈에 띄는 왜곡(그림 참조: 체커보드 텍스처가 구부러져 보임)을 일으키며, 특히 카메라 근처의 기본 도형에서 두드러진다. 이러한 왜곡은 다각형을 더 작은 다각형으로 세분하여 줄일 수 있다.

하드웨어 지원 없이 원근 텍스처 매핑을 수행하기 위해 삼각형은 렌더링을 위해 더 작은 삼각형으로 분할되고, 이 작은 삼각형에 아핀 매핑이 사용된다. 이 기술이 작동하는 이유는 아핀 매핑의 왜곡이 더 작은 다각형에서는 훨씬 덜 눈에 띄기 때문이다. 플레이스테이션은 하드웨어에서 아핀 매핑만 지원했지만, 동시대 경쟁 제품에 비해 비교적 높은 삼각형 처리량을 가졌기 때문에 이 기술을 광범위하게 사용했다.

4. 4. 2. 화면 공간 세분화

화면 공간 세분화 기술. 왼쪽 위: 퀘이크 스타일, 오른쪽 위: 쌍선형, 왼쪽 아래: const-z


소프트웨어 렌더러는 오버헤드가 적기 때문에 화면 분할을 선호했다. 또한, 설정이 간소하고(2D 아핀 보간에 비해) 오버헤드가 적어 픽셀 라인을 따라 선형 보간을 시도한다. 아핀 텍스처 매핑은 x86 CPU의 적은 수의 레지스터에 맞지 않지만, 68000이나 다른 RISC CPU에는 더 적합하다.

퀘이크는 스캔라인의 16픽셀마다 한 번씩 원근 보정 좌표를 계산하고 그 사이를 선형 보간하여, 사실상 선형 보간 속도로 실행되도록 하였다. 이는 원근 보정 계산이 코프로세서에서 병렬로 실행되기 때문이다.[14] 다각형은 독립적으로 렌더링되므로, 다각형 법선의 방향에 따라 스팬, 열, 대각선 방향 사이를 전환하여 더 일정한 z값을 얻을 수 있었지만, 그만한 가치는 없는 것으로 보인다.

4. 5. 기타 기법

다항식과 같이 더 빠른 계산을 사용하여 원근감을 근사하는 기술도 있었다. 마지막으로 그려진 두 픽셀의 1/z 값을 사용하여 다음 값을 선형적으로 외삽하는 기술도 있다. 그러나 이 방법은 대부분의 시스템에서 너무 느린데, 그 이유는 나눗셈을 해당 값에서 시작하여 작은 나머지 부분만 나누면 되기 때문이다.[15]

마지막으로, 빌드 엔진은 임의의 다각형에 대해 일정한 거리를 갖는 선을 찾아 렌더링하여 에 사용된 일정한 거리 트릭을 확장했다.

5. 하드웨어 구현

텍스처 매핑 하드웨어는 원래 시뮬레이션용으로 개발되었으며(예: Evans and Sutherland ESIG 및 Singer-Link 디지털 이미지 생성기 DIG에 구현됨)[16], Silicon Graphics와 같은 전문 그래픽 워크스테이션, Ampex ADO와 같은 방송 디지털 비디오 효과 장비에서 사용되었다. 이후 1990년대 중반에 아케이드 게임 캐비닛, 소비자용 비디오 게임 콘솔, PC 비디오 카드에 등장했다.[16] 비행 시뮬레이션에서 텍스처 매핑은 텍스처가 없는 표면에서는 사용할 수 없는 조종사 훈련에 필요한 중요한 움직임 및 고도 단서를 제공했다.[16]

현대 그래픽 처리 장치(GPU)는 텍스처 매핑을 수행하기 위해 ''텍스처 샘플러'' 또는 ''텍스처 매핑 유닛''이라는 특수 고정 기능 유닛을 제공하며, 일반적으로 삼선형 필터링 또는 더 나은 다중 탭 이방성 필터링과 DXTn과 같은 특정 형식을 디코딩하는 하드웨어를 갖추고 있다. 2016년 현재, 대부분의 SOC에 적합한 GPU가 포함되어 있으므로 텍스처 매핑 하드웨어는 어디에나 존재한다.

일부 하드웨어는 타일 기반 지연 렌더링 또는 스캔라인 렌더링에서 텍스처 매핑을 은면 처리와 결합한다. 이러한 시스템은 변환된 정점에 더 큰 작업 공간을 사용하는 대신 가시적인 텍셀만 가져온다. 대부분의 시스템은 Z 버퍼링 방식을 선택했으며, 이는 앞뒤 정렬을 통해 텍스처 매핑 작업을 줄일 수 있다.

초기 그래픽 하드웨어 중에는 텍스처를 화면에 전달하는 방법에 대한 두 가지 경쟁적인 패러다임이 있었다.


  • '''순방향 텍스처 매핑'''은 텍스처의 각 텍셀을 반복하고 화면에 배치할 위치를 결정한다.
  • '''역방향 텍스처 매핑'''은 대신 화면의 픽셀을 반복하고 각 픽셀에 사용할 텍셀을 결정한다. 현대 하드웨어에서 표준이 된 방식이다.

5. 1. 역 텍스처 매핑

이 방법을 사용하면 화면의 픽셀이 텍스처의 한 점에 매핑된다. 렌더링 기본 도형의 각 정점은 화면의 한 점에 투영되며, 이 각 점은 텍스처의 u,v 텍셀 좌표에 매핑된다. 래스터라이저는 기본 도형이 덮는 각 픽셀을 채우기 위해 이러한 점 사이를 보간한다.

주요 장점은 기본 도형이 덮는 각 픽셀이 정확히 한 번만 통과된다는 것이다. 기본 도형의 정점이 변환되면, 남은 작업량은 화면에서 덮는 픽셀 수에 직접 비례한다.

순방향 텍스처 매핑에 비해 주요 단점은 텍스처가 화면에 대해 각도를 이루는 경우 텍스처 공간의 메모리 접근 패턴이 선형이 아니라는 것이다. 이 단점은 스와이즐드 텍스처 메모리 배열과 같은 텍스처 캐시 기술로 종종 해결된다.

선형 보간은 간단하고 효율적인 어파인 텍스처 매핑에 직접 사용할 수 있으며, 원근 보정에도 적용할 수 있다.

6. 텍스처 좌표

텍스처 좌표는 텍스처 위의 좌표를 의미하며, 2차원 또는 3차원 벡터로 표시된다. 이 벡터의 성분은 주로 U, V, W로 표현된다.[19] 텍스처를 물체에 적용하려면 물체의 각 부분이 텍스처의 어느 부분을 사용할지를 나타내는 정보가 필요한데, 이 정보가 바로 텍스처 좌표이다. 텍스처 좌표는 픽셀마다 정확하게 필요하지만, 실제로는 처리 속도를 높이기 위해 정점마다 계산하고, 픽셀 사이의 좌표는 선형 보간을 통해 얻는 경우가 많다.

텍스처 좌표는 텍스처 크기를 벗어나는 영역을 지정할 수도 있다. 이 경우 픽셀 값을 결정하는 방법에는 클램프, 리피트, 미러 등 여러 가지가 있다.

2차원 텍스처의 경우, 텍스처 좌표는 사전에 설정되거나 평면 투영, 원통 매핑, 구체 매핑, UDIM 등의 기법으로 생성된다. 2차원 텍스처 좌표는 U축과 V축으로 표현되기 때문에 "UV 좌표"라고도 한다.

6. 1. 평면 투영

다각형의 각 정점에는 텍스처 좌표(2D의 경우 UV 좌표)가 할당된다.[8] 이는 정점 속성을 명시적으로 할당하거나, 3D 모델링 패키지에서 UV 언래핑 도구를 통해 수동으로 편집하여 수행할 수 있다. 또한 3D 공간에서 텍스처 공간으로의 절차적 변환을 재질과 연결하는 것도 가능한데, 이는 평면 투영을 통해 수행될 수 있다. 더 복잡한 매핑은 왜곡을 최소화하기 위해 표면을 따라 거리를 고려할 수도 있다.

평면 투영은 텍스처를 붙인 평면을 물체가 존재하는 좌표계 위에 배치하고, 그것을 물체에 투영하는 방식이다. 투영하는 방향과 면이 수직에 가까운 경우, 텍스처는 늘어나고 왜곡이 커진다.

6. 2. 원통 매핑

원통 매핑은 무늬가 있는 종이를 흰색 상자에 붙이는 것과 유사하게, 텍스처를 측면에 붙인 원통을 좌표계 위에 배치하고 물체에 투영하는 방식이다. 일반적으로 텍스처 좌표에서 U축은 각도 방향, V축은 높이 방향이 된다. 이 과정에서 다각형의 각 정점에는 텍스처 좌표 (2D의 경우 UV 좌표)가 할당된다.[8]

6. 3. 구체 매핑

이 과정은 무늬가 있는 종이를 흰색 상자에 붙이는 것과 유사하다. 다각형의 각 정점에는 텍스처 좌표(2D의 경우 UV 좌표)가 할당된다.[8] 3D 공간에서 텍스처 공간으로의 절차적 변환을 재질과 연결하는 것도 가능하다. 이는 구면 좌표 매핑을 통해 수행될 수 있다. 구체 매핑은 텍스처를 붙인 구체를 좌표계 위에 배치하고, 그것을 물체에 투영하는 방식이다. 일반적으로 텍스처 좌표에서 U축은 경도, V축은 위도가 된다.

6. 4. UDIM

UDIM은 2차원 텍스처를 가로 방향으로 10개, 세로 방향으로 900개 정렬한 타일(패치)로 표현하고, 각 타일에 1001부터 9999까지 일련번호를 부여하여 여러 타일을 조합하여 사용하는 방식이다. 이를 통해 텍스처 해상도 부족 문제를 해결할 수 있다. 10 × 900개의 모든 타일 이미지를 준비할 필요는 없으며, 필요한 수와 조합으로 타일을 배치하여 유연한 매핑을 실현한다. 예를 들어, 더 높은 해상도를 필요로 하는 부분에는 많은 타일을 사용하여 큰 면적의 텍스처를 구축하거나, 직사각형 이외의 불규칙한 형태의 텍스처도 타일의 조합을 해당 형태에 맞춰 배치함으로써 가능하다. Foundry사의 MARI에서 개발되었으며, modo, Maya, 서브스턴스 페인터 등 대응하는 응용 소프트웨어가 점차 증가하고 있다.

7. 다양한 매핑

텍스처 매핑은 단순한 텍스처를 붙이는 것 외에도, 더 사실적인 표현을 위해 다양한 매핑 기법들이 개발되었다.


  • 컬러 매핑 (디퓨즈 매핑): 색상 정보를 제공하여 텍스처를 붙인다. 텍스처 매핑이라고도 한다.
  • 글로스 매핑 (스페큘러 매핑): 픽셀 단위로 광택의 정도를 조절한다. 글로스 맵, 스페큘러 맵이라고도 한다.
  • 범프 매핑: 표면에 울퉁불퉁한 요철을 부여한다. 하이트 맵이라고도 한다.
  • 환경 매핑: 주변의 반사를 의사적으로 재현한다.
  • 투명도 매핑: 투명하거나 불투명한 패턴을 부분, 또는 전체에 적용한다. 알파 맵이라고도 한다.
  • 노멀 매핑: 픽셀 단위의 3차원 법선 벡터를 사용하여 표면의 상세한 부분을 의사적으로 개선한다. 노멀 맵이라고도 한다.
  • 섀도 매핑: 광원에서 바라본 장면의 깊이 정보를 저장하여, 장면에 그림자를 부여한다. 섀도 맵이라고도 한다.
  • 디스플레이스먼트 매핑: 렌더링 시 로우 폴리곤 모델에 세밀한 요철 정보를 제공하여 실제 형상(지오메트리)을 세분화하고 변위시켜 디테일을 풍부하게 만든다.

8. 응용 분야

텍스처 매핑은 3차원 렌더링 외에도 다른 분야에 응용된다. 텍스처 매핑 하드웨어는 여러 작업을 가속화하는 데 사용될 수 있다.

8. 1. 단층 촬영

텍스처 매핑 하드웨어를 사용하여 토모그래피 스캔으로부터 얻은 복셀 데이터 집합을 재구성하고, 그 결과를 시각화하는 것을 가속화할 수 있다.[17]

8. 2. 사용자 인터페이스

많은 사용자 인터페이스는 화면 요소의 애니메이션 전환을 가속화하기 위해 텍스처 매핑을 사용한다. 예를 들어, macOS의 Mission Control이 있다.

9. 소프트웨어

https://www.gcc.tu-darmstadt.de/home/proj/texrecon/index.en.jsp 텍스리콘(TexRecon)은 C++로 작성된 3D 모델 텍스처링을 위한 오픈 소스 소프트웨어이다.

참조

[1] 웹사이트 Texture Mapping http://web.cse.ohio-[...] Ohio State University 2016-01-15
[2] 웹사이트 Texture Mapping http://www.inf.pucrs[...] 2019-09-15
[3] 웹사이트 CS 405 Texture Mapping http://www.cs.uregin[...] 2018-03-22
[4] 학위논문 A subdivision algorithm for computer display of curved surfaces http://www.pixartouc[...] University of Utah
[5] 웹사이트 DirectX 6.0 Goes Ballistic With Multiple New Features And Much Faster Code http://www.microsoft[...] 2019-09-15
[6] 웹사이트 The OpenGL Texture Mapping Guide http://homepages.gac[...] 2018-03-22
[7] 웹사이트 Anatomy of an MMORPG http://radoff.com/bl[...] 2009-12-13
[8] 웹사이트 How to use textures https://freeassetsun[...] 2021-03-20
[9] 간행물 Advanced Graphics Programming Techniques Using OpenGL https://web.archive.[...] Siggraph 1999-00-00
[10] 문서 Real-Time Bump Map Synthesis https://web.archive.[...]
[11] 잡지 The Next Generation 1996 Lexicon A to Z: Perspective Correction https://archive.org/[...] Imagine Media 1996-03-00
[12] 웹사이트 Perspective Texturemapping http://www.lysator.l[...] 2020-03-27
[13] 문서 Voxel terrain engine https://web.archive.[...] In a coder's mind 2005-00-00
[14] 서적 Michael Abrash's Graphics Programming Black Book Special Edition http://www.gamedev.n[...] The Coriolis Group, Scottsdale Arizona 1997-00-00
[15] 특허 Apparatus and method for performing perspectively correct interpolation in computer graphics
[16] 논문 Advances in Computer-Generated Imagery for Flight Simulation 1985-08-00
[17] 웹사이트 texture mapping for tomography https://patents.goog[...]
[18] 학위논문 A subdivision algorithm for computer display of curved surfaces http://www.pixartouc[...] University of Utah
[19] 문서 Volume Texture Resources (Direct3D 9) - Win32 apps | Microsoft Docs https://docs.microso[...]
[20] 웹인용 Texture Mapping http://web.cse.ohio-[...] Ohio State University 2016-01-15
[21] URL http://www.inf.pucrs[...]
[22] URL http://www.cs.uregin[...]
[23] 학위논문 A subdivision algorithm for computer display of curved surfaces http://www.pixartouc[...] University of Utah 2016-11-14



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com