텍스처 매핑
Texture mapping텍스처 매핑은[1][2][3] 컴퓨터 생성 그래픽 또는 3D 모델에서 고주파 세부 정보, 표면 텍스처 또는 색상 정보를 정의하는 방법입니다.최초의 기술은 1974년 [4]에드윈 캣멀에 의해 개척되었다.
텍스처 매핑은 원래 확산 매핑이라고 불리며 텍스처의 픽셀을 단순히 3D 표면에 매핑하는 방법("이미지를 오브젝트에 감아")입니다.최근 수십 년 동안 멀티패스 렌더링, 멀티텍스트링, 밉맵 및 높이 매핑, 범프 매핑, 법선 매핑, 변위 매핑, 반사 매핑, 스펙컬 매핑, 폐색 매핑 및 (재료 시스템에 의해 제어되는) 기법의 많은 다른 변형과 같은 보다 복잡한 매핑의 출현으로 시뮬레이션을 가능하게 했습니다.e 사실적이고 기능적인 3D 장면을 구축하는 데 필요한 폴리곤 및 조명 계산의 수를 크게 줄임으로써 실시간에 가까운 포토렐리즘에 가깝습니다.
텍스처 맵
텍스처[5][6] 맵은 도형 또는 [7]폴리곤의 표면에 적용(매핑)된 이미지입니다.비트맵 이미지 또는 절차 텍스처일 수 있습니다.3D 모델 형식 또는 재료 정의에서 참조되는 공통 이미지 파일 형식으로 저장하여 리소스 번들로 조립할 수 있습니다.
2차원은 육안으로 볼 수 있는 표면에 가장 일반적이지만 1-3차원이 있을 수 있습니다.최신 하드웨어와 함께 사용하기 위해 텍스처 맵 데이터는 캐시 일관성을 향상시키기 위해 스위즈 또는 타일된 순서로 저장할 수 있습니다.렌더링 API는 일반적으로 텍스처 맵자원(디바이스 메모리에 있는 경우)을 버퍼 또는 서페이스로 관리하며 사후 처리나 환경 매핑 등의 추가 효과를 위해 '렌더에서 텍스처로의 렌더링'을 허용할 수 있습니다.
일반적으로 RGB 색상 데이터(직접 색상, 압축 형식 또는 색인 색상으로 저장됨)를 포함하며, 특히 광고판과 스티커 오버레이 텍스처용 알파 블렌딩(RGBA)을 위한 추가 채널을 포함할 수 있습니다.알파 채널(하드웨어에 의해 구문 분석된 형식으로 저장하는 것이 편리할 수 있음)을 특수성 등의 다른 용도로 사용할 수 있습니다.
복수의 텍스처 맵(또는 채널)을 조합해, 예를 들면 피부 렌더링을 위한 정준성, 노멀, 변위 또는 지표면 산란을 제어할 수 있습니다.
텍스처 아틀라스 또는 어레이 텍스처로 여러 텍스처 이미지를 조합하여 최신 하드웨어 상태 변화를 줄일 수 있습니다.(타일 맵그래픽의 현대적 진화로 간주될 수 있습니다).최신 하드웨어는 환경 매핑을 위해 여러 면이 있는 큐브 맵 텍스처를 지원하는 경우가 많습니다.
창조.
텍스처 맵은 스캔/디지털 사진, GIMP, Photoshop과 같은 이미지 조작 소프트웨어로 설계되거나 Mudbox나 zbrush와 같은 3D 페인트 도구로 직접 3D 표면에 칠할 수 있습니다.
텍스처 어플리케이션
이 과정은 무늬가 있는 종이를 일반 흰색 상자에 붙이는 것과 비슷합니다.폴리곤의 모든 정점에는 텍스처 좌표(2d의 경우 UV [8]좌표라고도 함)가 할당됩니다.이는 UV 포장 해제 도구를 통해 3D 모델링 패키지에서 수동으로 편집한 정점 속성의 명시적 할당을 통해 수행될 수 있다.또한 3d 공간에서 텍스처 공간으로 절차적 변환을 재료와 연결할 수도 있습니다.이는 평면 투영 또는 원통형 또는 구면 매핑을 통해 수행될 수 있습니다.보다 복잡한 매핑에서는 왜곡을 최소화하기 위해 표면을 따라 거리를 고려할 수 있습니다.이러한 좌표는 렌더링 중에 텍스처 맵을 샘플링하기 위해 폴리곤 면에 걸쳐 보간됩니다.텍스처는 반복되거나 대칭되어 한정된 직사각형 비트맵을 더 큰 면적으로 확장할 수 있으며 표면의 모든 조각에서 1:1로 고유한 "주입" 매핑을 가질 수 있습니다(이것은 렌더링 매핑 및 라이트 매핑에 중요하며 베이킹이라고도 합니다).
텍스처 공간
텍스처 매핑은 모델 표면(또는 래스터라이제이션 중 화면 공간)을 텍스처 공간에 매핑합니다.이 공간에서는 텍스처 맵이 왜곡되지 않은 형태로 표시됩니다.UV 래핑 해제 도구는 일반적으로 텍스처 좌표를 수동으로 편집할 수 있는 텍스처 공간의 뷰를 제공합니다.지표면 산란과 같은 일부 렌더링 기술은 텍스처 공간 연산에 의해 대략적으로 수행될 수 있습니다.
멀티텍스트화
다중 확장이란 [9]폴리곤에서 한 번에 두 개 이상의 텍스처를 사용하는 것입니다.예를 들어 표면이 렌더링될 때마다 해당 조명을 재계산하는 대안으로 표면을 조명하기 위해 라이트 맵 텍스처를 사용할 수 있다.마이크로 텍스처 또는 상세 텍스처를 사용하여 더 높은 빈도의 디테일을 추가합니다.더스트 맵은 풍화 및 변화를 추가할 수 있습니다.이것에 의해, 반복 텍스처의 외관상의 주기성을 큰폭으로 저감 할 수 있습니다.최신 그래픽스에서는 10개 이상의 레이어를 사용하여 셰이더를 조합하여 충실도를 높일 수 있습니다.또 다른 멀티 텍스처 기법은 범프 매핑으로, 텍스처가 조명 계산을 위해 표면의 면 방향을 직접 제어할 수 있습니다.또한 통상적인 상세 색상에 더해 조명 디테일을 취하는 복잡한 표면(나무 껍질이나 거친 콘크리트 등)의 외관을 매우 좋게 할 수 있습니다.그래픽 하드웨어가 실시간으로 [10]범프 매핑을 수용할 수 있을 만큼 강력해졌기 때문에 범프 매핑은 최근 비디오 게임에서 인기를 끌고 있습니다.
텍스처 필터링
예를 들어 화면에서 픽셀로 볼 때 샘플이 텍스처(텍스트 픽셀)에서 계산되는 방법은 텍스처 필터링에 의해 제어됩니다.가장 저렴한 방법은 가장 가까운 이웃 보간법을 사용하는 것이지만, 밉맵 사이의 쌍선형 보간법 또는 삼선형 보간법은 앨리어싱 또는 재기(jaggies)를 줄이는 두 가지 일반적으로 사용되는 대안이다.텍스처 좌표가 텍스처 외부에 있는 경우 클램프 또는 랩됩니다.이방성 필터링은 비스듬한 시야각에서 텍스처를 볼 때 방향성 아티팩트를 더 잘 제거합니다.
텍스처 스트리밍
텍스처 스트리밍은 텍스처에 데이터 스트림을 사용하는 수단입니다.각 텍스처는 2개 이상의 다른 해상도로 사용할 수 있으며, 뷰어로부터의 그리기 거리 및 텍스처에 사용 가능한 메모리 양에 따라 메모리에 로드하여 사용할 텍스처를 결정합니다.텍스처 스트리밍을 통해 렌더링 엔진은 뷰어의 카메라에서 멀리 떨어진 객체에 대해 저해상도 텍스처를 사용할 수 있으며, 시점이 객체에 가까울 때 데이터 소스에서 읽어낸 보다 상세한 텍스처로 해결할 수 있습니다.
베이킹
최적화로서 복잡한 고해상도 모델 또는 고가의 프로세스(글로벌 조명 등)에서 표면 텍스처(저해상도 모델일 가능성이 있음)로 디테일을 렌더링할 수 있습니다.베이킹은 렌더 매핑이라고도 합니다.이 기법은 라이트 맵에 가장 일반적으로 사용되지만 일반 맵과 변위 맵을 생성하는 데도 사용될 수 있습니다.일부 컴퓨터 게임(예: Messiah)은 이 기술을 사용했습니다.원래 Quake 소프트웨어 엔진은 라이트 맵과 컬러 맵("서피스 캐싱")을 결합하기 위해 즉각적인 베이킹을 사용했습니다.
베이킹은 상세 생성의 한 형태로 사용할 수 있으며, 여기서 많은 다른 요소 및 재료를 가진 복잡한 장면을 단일 텍스처를 가진 단일 요소로 근사할 수 있으며, 이는 낮은 렌더링 비용과 적은 드로우콜을 위해 알고리즘적으로 감소됩니다.또한 3D 조각 소프트웨어 및 포인트 클라우드 스캔에서 높은 디테일 모델을 가져와 실시간 렌더링에 더 적합한 메시로 근사하는 데 사용됩니다.
래스터라이제이션 알고리즘
소프트웨어 및 하드웨어 구현에서는 다양한 기술이 발전하고 있습니다.정밀도, 다기능성, 퍼포먼스에 있어서 각각 다른 트레이드오프를 제공합니다.
정방향 텍스처 매핑
일부 하드웨어 시스템(예:Sega Saturn과 NV1은 텍스처 좌표를 직접 통과하여 텍스처 공간을 통해 화면 공간의 투영 위치를 보간하고 텍셀을 프레임 버퍼에 스플래팅합니다.(NV1의 경우 2차 보간법을 사용하여 곡면 렌더링을 가능하게 했습니다).Sega는 UV 지도 모델에서 쿼드당 적절한 텍스처 타일을 굽기 위한 도구를 제공했습니다.
텍스처 맵을 심플한 선형으로 읽을 수 있는 장점이 있습니다.
또한 원형이 눈에 띄는 텍스처 방향(예: 도로 표시 또는 벽돌 층)에 맞춰 정렬된 경우 전방 텍스처 매핑은 아핀 텍스처 매핑보다 더 자연스러운 결과를 얻을 수 있습니다.이는 제한된 형태의 투시 보정 기능을 제공합니다.그러나 카메라 근처의 원근에 대해서는 원근 왜곡이 여전히 보인다(예: Sega Rally의 새턴 포트는 UV 좌표 없이 근처의 폴리곤이 거의 잘렸기 때문에 텍스처 스퀴싱 아티팩트를 나타냈다).
UV 좌표가 모델링에 더 다용도하고 클리핑에 더 일관성이 있다는 것이 입증되었기 때문에 이 기법은 현대 하드웨어에 사용되지 않는다.
역 텍스처 매핑
대부분의 접근법에서는 화면 공간의 렌더링 원본을 가로지르는 역 텍스처 매핑을 사용하고, 샘플링을 위해 텍스처 좌표를 보간합니다.이 보간은 아핀 또는 원근법이 정확할 수 있습니다.한 가지 장점은 각 출력 픽셀을 1회만 통과할 수 있다는 것입니다.일반적으로 소스 텍스처 맵 데이터는 낮은 비트 깊이 또는 압축 형식으로 저장되지만 프레임 버퍼는 높은 비트 깊이를 사용합니다.또 다른 하나는 UV 매핑의 범용성 향상입니다.텍스처 캐시는 텍스처 공간에서의 메모리 액세스 패턴이 더 복잡하기 때문에 읽기 버퍼링에 중요해진다.
아핀 텍스처 맵핑
아핀 텍스처 매핑은 표면에 걸쳐 텍스처 좌표를 선형으로 보간하므로 텍스처 매핑의 가장 빠른 형태입니다.일부 소프트웨어 및 하드웨어(예: 원래 PlayStation)는 렌더링 중에 3D 공간의 정점을 화면에 투영하고 그 사이의 화면 공간의 텍스처 좌표를 선형으로 보간합니다("역 텍스처 매핑").[citation needed]이는 고정점 UV 좌표를 증가시키거나 브레센햄의 선 알고리즘과 유사한 증분 오차 알고리즘을 통해 수행될 수 있습니다.
수직 폴리곤과는 대조적으로, 투시 변환에 의해 현저한 왜곡이 발생합니다(그림: 체커 박스 텍스처가 구부러져 보이는 것 참조). 특히 카메라 근처에서는 원형이 됩니다.이러한 왜곡은 폴리곤을 더 작은 폴리곤으로 세분화함으로써 감소될 수 있다.
투시적 정확성
투시 보정 텍스처링은 단순히 2D 화면 [11]공간에서 좌표를 보간하는 것이 아니라 3D 공간에서 정점의 위치를 설명합니다.이렇게 하면 정확한 시각 효과를 얻을 수 있지만 [11]계산 비용이 더 많이 듭니다.
z { z를 깊이 성분으로 텍스처 u {\ v와v {\ v의 투시 보정을 실시하기 위해 값 1 displaystyle z {}, u의 장점을 활용할 수 있습니다. z(\display{v}{z})는 텍스처링 대상 표면을 가로지르는 화면 공간에서 선형입니다.이와는 대조적으로 분할 전의 z(\ zu(\u) v v는 화면 공간에서 표면을 가로지르는 직선 형태가 아닙니다.따라서 이러한 상호 작용을 표면 전체에 선형으로 보간하여 각 픽셀에서 보정 값을 계산하여 원근법에 맞는 텍스처 매핑을 만들 수 있습니다.
이를 위해 먼저 기하학의 각 꼭지점(삼각형의 경우 3점)에서 왕복수를 계산합니다. nn})에는 z , z , z n { {\ { {\{1}{n}}}}}}, {\frac {1}{n이 있습니다.그런 다음 이러한 상호 정점 사이에 선형 보간하여(예: 중심 좌표 사용) 표면에 보간 값을 생성한다.이 경우 }, e c }=가 생성됩니다. ({u_i는 사용할 수 없습니다.바꿨습니다
로 수정하려면 먼저 e i { } =1 i { displaystyle z_{ correct } = 1 z frac { } { _ { 1} frcal _ { i } frcal } frac frac = frecal { 1 frcl } frac { 1 frcal} frac 다음 이를 사용하여 i i{ }, z { style _ { crect }= 및 t = ⋅ i ⋅ tyle v_cdisplay v_cdispr cr cr crect z_cdisterfr cdis
이것에 의해, 폴리곤의 뷰어에 가까운 부분에서는, 텍스쳐 좌표간의 픽셀간의 차이가 작아지고( 텍스쳐를 넓게 늘어뜨리고), 멀리 있는 부분에서는 이 차이가 커집니다( 텍스쳐를 압축).
- 아핀 텍스처 매핑은 2개의 0과 1({ 사이에 텍스처 α {\}^{}}를 직접 보간합니다.
- α ( - ) + 1 ( \ u _ { \ }^{ } ( - \ ) 1 \ \ }
- 투시적 매핑은 z{\로 나눈 후 보간된 역수를 사용하여 올바른 좌표를 복구합니다.
3D 그래픽스 하드웨어는 일반적으로 투시적인 올바른 텍스처링을 지원합니다.
텍스처 맵 지오메트리를 다른 품질/정밀 트레이드오프를 가진 이미지로 렌더링하기 위한 다양한 기술이 발전하여 소프트웨어와 하드웨어 모두에 적용할 수 있습니다.
기존의 소프트웨어 텍스처 매퍼는 일반적으로 최대 1개의 조명 효과(일반적으로 룩업 테이블을 통해 적용됨)로 간단한 매핑만 수행했으며 투시 정확도는 약 16배 더 비쌌습니다.
카메라 회전 제한
Doom 엔진은 수직 축을 중심으로만 회전할 수 있는 카메라로 세상을 수직 벽과 수평 바닥/천장으로 제한했습니다.즉, 벽은 수직선을 따라 일정한 깊이 좌표이며 바닥/천장은 수평선을 따라 일정한 깊이를 가집니다.고속 아핀 매핑은 정확하기 때문에 이러한 라인에서 사용할 수 있습니다.이 시대의 일부 렌더러는 동일한 렌더링 기술을 사용하면서 보다 자유로운 외관을 가능하게 하는 전단 가공으로 소량의 카메라 피치를 시뮬레이션했습니다.
일부 엔진은 브레센햄과 유사한 증분 알고리즘을 통해 텍스처 매핑된 높이 맵(예: Nova Logic의 Voxel Space 및 Outcast용 엔진)을 렌더링할 수 있었으며, 기존의 기하학적 [13]원본을 사용하지 않고도 텍스처 매핑된 풍경과 같은 모양을 만들어냈습니다.
투시교정분할
각 삼각형은 두 가지 목표를 달성하기 위해 약 16픽셀의 그룹으로 더 세분될 수 있습니다.첫째, 산수기를 항상 바쁘게 유지하는 것입니다.둘째, 더 빠른 연산 결과를 [vague]생성합니다.
세계 공간 구획
하드웨어가 지원되지 않는 투시 텍스처 매핑의 경우 삼각형을 렌더링하기 위해 더 작은 삼각형으로 분할하고 이 삼각형에 아핀 매핑을 사용합니다.이 기술이 작동하는 이유는 작은 폴리곤에서는 아핀 매핑의 왜곡이 훨씬 덜 눈에 띄기 때문입니다.Sony PlayStation은 하드웨어에서만 아핀 매핑을 지원하지만 다른 제품에 비해 상대적으로 삼각 스루풋이 높기 때문에 이를 광범위하게 활용했습니다.
화면 공간 분할
일반적으로 소프트웨어 렌더러에서는 오버헤드가 적기 때문에 화면 분할을 선호합니다.또, 픽셀의 라인을 따라서 선형 보간을 실시해, 셋업을 심플화(2d 아핀 보간과 비교)해 오버헤드를 심플화하려고 합니다(또한 아핀 텍스처 매핑은 x86 CPU의 레지스터 수가 적은 경우에는 적합하지 않습니다.68000 또는 RISC가 훨씬 적합합니다).
스캔라인의 16픽셀마다 한 번만 정확한 원근 좌표를 계산하고 그 사이에 선형 보간하는 퀘이크에는 다른 접근방식이 적용되었다. 원근 정확한 계산이 보조 [14]프로세서에서 병렬로 실행되기 때문에 선형 보간 속도로 효과적으로 실행된다.폴리곤은 독립적으로 렌더링되므로 폴리곤 법선 방향에 따라 스팬과 열 또는 대각선 방향으로 전환하여 보다 일정한 z를 얻을 수 있지만, 그 노력은 그럴 가치가 없는 것으로 보입니다.
기타 기술
또 다른 기술은 다항식과 같은 더 빠른 계산으로 원근법을 근사화하는 것이었습니다.또 다른 기법은 마지막 2개의 그리기 픽셀의 1/z 값을 사용하여 다음 값을 선형적으로 추정한다.그런 다음 이러한 값부터 나눗셈이 이루어지기 때문에 일부만 나눗셈하면[15] 되지만, 부기의 양으로 인해 대부분의 시스템에서 이 방법이 너무 느려집니다.
마지막으로 빌드 엔진은 임의 폴리곤에 대한 일정한 거리 선을 찾아 이를 따라 렌더링함으로써 Doom에 사용되는 일정한 거리 트릭을 확장했습니다.
하드웨어 구현
텍스처 매핑 하드웨어는 원래 시뮬레이션(예: Evans 및 Sutherland ESIG 이미지 생성기)을 위해 개발되었으며 실리콘 그래픽스, Ampex ADO와 같은 방송 디지털 비디오 효과 기계, 나중에 아케이드 캐비닛, 소비자 비디오 게임 콘솔 및 PC 비디오 CA에 등장했습니다.1990년대 중반의 RDS입니다.비행 시뮬레이션에서 텍스처 매핑은 중요한 모션 신호를 제공했습니다.
최신 GPU(그래픽 처리 장치)는 텍스처 샘플러( 텍스처 매핑 장치)라고 불리는 특수한 고정 기능 유닛을 제공하여 보통 3선 필터링 또는 더 나은 멀티탭 이방성 필터링과 DXTn 등의 특정 형식을 디코딩하기 위한 하드웨어를 사용하여 텍스처 매핑을 수행합니다.2016년 현재 텍스처 매핑 하드웨어는 대부분의 SOC에 적합한 GPU가 포함되어 있기 때문에 어디에나 있습니다.
일부 하드웨어는 텍스처 매핑을 타일 기반 지연 렌더링 또는 스캔 라인 렌더링의 숨겨진 표면 결정과 결합합니다. 이러한 시스템은 변환된 정점에 더 큰 작업 공간을 사용하는 대신 가시적인 텍스트만 가져옵니다.대부분의 시스템은 Z-버퍼링 방식을 채택하고 있으며, 전면에서 후면 정렬을 통해 텍스처 매핑 워크로드를 줄일 수 있습니다.
적용들
3D 렌더링 외에도 텍스처 매핑 하드웨어의 가용성은 다른 작업을 가속화하는 데 도움을 주었습니다.
단층 촬영
텍스처 매핑 하드웨어를 사용하여 단층 촬영 스캔에서 복셀 데이터 세트의 재구성을 가속화하고 결과를[16] 시각화할 수 있습니다.
사용자 인터페이스
많은 사용자 인터페이스는 텍스처 매핑을 사용하여 화면 요소의 애니메이션 전환을 가속화합니다(예: Mac OS X의 Exposé).
「 」를 참조해 주세요.
- 2.5D
- 3D 컴퓨터 그래픽스
- Mipmap
- 재료 시스템
- 파라미터화
- 텍스처 합성
- 텍스처 지도
- 텍스처 스플래팅– 텍스처를 조합하는 기술
- 셰이더(컴퓨터 그래픽스)
레퍼런스
- ^ Wang, Huamin. "Texture Mapping" (PDF). department of Computer Science and Engineering. Ohio State University. Retrieved 2016-01-15.
- ^ "Texture Mapping" (PDF). www.inf.pucrs.br. Retrieved September 15, 2019.
- ^ "CS 405 Texture Mapping". www.cs.uregina.ca. Retrieved 22 March 2018.
- ^ Catmull, E. (1974). A subdivision algorithm for computer display of curved surfaces (PDF) (PhD thesis). University of Utah.
- ^ Fosner, Ron (January 1999). "DirectX 6.0 Goes Ballistic With Multiple New Features And Much Faster Code". Microsoft.com. Archived from the original on October 31, 2016. Retrieved September 15, 2019.
- ^ Hvidsten, Mike (Spring 2004). "The OpenGL Texture Mapping Guide". homepages.gac.edu. Retrieved 22 March 2018.
- ^ 존 래도프, MMORPG 해부학
- ^ Roberts, Susan. "How to use textures". Retrieved 20 March 2021.
- ^ 블라이스, 데이비드OpenGL을 사용한 고도의 그래픽스 프로그래밍 기술.Siggraph 1999. (PDF)('멀티스튜어' 참조)
- ^ 실시간 범프 맵 합성, Jan Kautz1, Wolfgang Heidrichy2 및 Hans-Peter Seidel1,1 (Max-Planck-Institut für Informatik, 브리티시 컬럼비아 대학)
- ^ a b "The Next Generation 1996 Lexicon A to Z: Perspective Correction". Next Generation. No. 15. Imagine Media. March 1996. p. 38.
- ^ Kalms, Mikael (1997). "Perspective Texturemapping". www.lysator.liu.se. Retrieved 2020-03-27.
- ^ "복셀 지형 엔진", 소개코더의 생각으로는 2005년(2013년 아카이브 완료).
- ^ 에이브러쉬, 마이클마이클 애브러쉬의 그래픽 프로그래밍 블랙북 스페셜 에디션.코리올리 그룹, 스코츠데일 애리조나, 1997년ISBN 1-57610-174-6 (PDF 어카이브 2007-03-11 at the Wayback Machine) (70장, 1282페이지)
- ^ US 5739818, Spackman, John Neil, "컴퓨터 그래픽스에서 투시적으로 올바른 보간을 수행하기 위한 부속품 및 방법", 1998-04-14 발행
- ^ "texture mapping for tomography".
소프트웨어
- TexRecon - C++로 작성된 3D 모델을 텍스처링하기 위한 오픈 소스 소프트웨어
외부 링크
- C 및 SDL을 사용한 텍스처 매핑 소개(PDF)
- www.riemers.net에서 XNA/DirectX를 사용하여 텍스처 지형을 프로그래밍합니다.
- 투시 수정 텍스처링
- 베지어 라인을 사용한 시간 텍스처 매핑
- 사진을 위한 다항식 텍스처 매핑 대화형 재투입
- 3 Médos de interpacion a partir de puntos (스페인어) 다각형 정점의 텍스처 좌표를 알고 텍스처를 보간하기 위해 사용할 수 있는 방법
- 3D 텍스처링 도구