과제(숙제)

2022.07.18 정리

디지털 블리자드 2022. 7. 18. 15:38

텍스처 매핑(texture mapping)

텍스처 매핑(texture mapping)은 컴퓨터 그래픽스 분야에서 가상의 3차원 물체의 표면에 세부적인 질감의 묘사를 하거나 색을 칠하는 기법입니다.
일반적으로는 수식이나 2차원의 그림을 3차원 물체의 표면에 여러 가지 방법을 통하여 적용하고 이에 따라 컴퓨터 그래픽 화면을 만들어 나갈 때 마치 실제의 물체처럼 느껴지게 끔 그 세부 묘사를 하는 것입니다.
이는 사실적인 3D 장면을 구성하는 데 필요한 다각형 및 조명 계산의 수를 대폭 줄이게 해줍니다.
예를 들면, 2차원 지도를 제작할 때 입체인 지구표면을 평면으로 바꾸는 방법을 쓰지만, 텍스처 매핑의 경우에는 그 반대로 2차원 지도를 3차원 구에 적용하면, 지구본을 그린 영상을 얻을 수 있습니다.
텍스쳐 매핑의 기법에는 높이 매핑, 범프 매핑, 노멀 매핑, 변위 매핑(displacement mapping), 환경 매핑(reflection mapping), 반사 매핑(specular mapping), 밉맵, 폐쇄 매핑(occlusion mapping) 등이 있습니다.
택스처 맵
텍스처 맵(texture map)은 2차원의 컴퓨터 그래픽 그림으로 도형 또는 면의 단위인 폴리곤의 겉에 적용된다.
이 과정은 마치 아무 색이 없는 상자에 무늬가 그려진 종이를 붙이는 것과 비슷합니다.
범프 매핑은 2차원의 컴퓨터 그래픽 그림의 내용을 표면의 질감을 묘사하기 위해 그림의 내용을 직접적으로 적용하는 대신 표면의 올록볼록한 정도를 나타내는 데 쓰입니다.
이를 사용하면 오렌지 표면과 같은 질감을 쉽게 표현할 수 있습니다.

 

UV 매핑(UV mapping)은 2차원 그림을 3차원 모델로 만드는 3차원 모델링 프로세스입니다.
가장 단순한 UV 매핑은 세 개의 단계를 요구합니다.
메시(mesh) 해체, 텍스처 만들기, 텍스처 적용

구체에서 UV 좌표는 다음과 같습니다.

출처 - https://ko.wikipedia.org/wiki/UV_%EB%A7%A4%ED%95%91



부피와 모양이있는 3D 표면을 평평한 2D 텍스처 이미지로 변환할 수 있습니다.
그것이 어떻게 작동하는지 시각화하는 방법은 선물로 싸인 물건을 고려하는 것입니다.
UV 맵은 오브젝트를 조심스럽게 펼치고 포장지를 평평하게 누르는 것과 비슷합니다.
UV 맵과 동일한 조건은 지구의 맵과 유사하다고 보면 됩니다.

UV 맵 값은 관련 정점 내에 저장된 2D 텍스처의 위치 좌표입니다.
이 좌표는 부동 소수점 값 (소수점의 숫자)로 표시할 수 있습니다.
일반적으로 이러한 숫자를 텍스처의 일반 공간 위치로 그리드의 0-1 영역으로 제한합니다.
UV 맵을 사용하여 적용된 텍스처는 항상 전체 0-1 공간을 채 웁니다.
이 영역 밖의 모든 부분은 단순히 텍스처를 반복합니다.

UV 매핑 된 이미지는 정사각형이어야한다고 가정 할 수 있습니다.
이미지를 UV 그리드의 0-1 공간에 매핑합니다.
매우 넓거나 큰 이미지의 경우 텍스처에 비례하여 값을 배치합니다.
따라서 값을 백분율로 생각할 수 있습니다.
예를 들어, 부동 소수점 값 0.5는 실제로 50 % 위치이며 이미지의 크기나 모양에 관계없이 이미지 중심에 정점을 배치합니다.
그렇게하면 UV 매핑이 정확하고 가치있게됩니다.
UV 뷰포트에 사각형이 아닌 이미지를 표시 할 때 0-1 공간을 채우기 위해 이미지를 왜곡시킵니다.

 

텍스처 샘플링(texture sampling)

렌더링의 단계 중 투영, 클리핑 등을 모두 거치고 나면 셰이딩/매핑을 처리해야 하는데, 이때 모델의 세부 사항(디테일, 즉 텍스처)를 알아야 하므로 텍스처의 정보를 읽어야 합니다.
그러려면 투영 단계에서 화면 픽셀/프래그먼트(fragment)마다 해당하는 텍스처에서의 좌표값을 계산해 둘 필요가 있고, 이것은 모델에 텍스처 매핑을 해둔 정보를 바탕으로 투영을 거쳐서 이루어집니다.
이 좌표값에 해당하는 텍셀의 정보를 읽어오는 과정을 텍스처 샘플링이라고 한다.

텍스처 필터링(texture filtering)

컴퓨터 그래픽의 렌더링 단계에서 화면의 픽셀에, 해당하는 텍스처의 텍셀을 대응시키는 과정과 사용되는 기법입니다.
프래그먼트가 가지고 있는 텍스처의 좌표값은 픽셀의 중심점을 가지고 계산한, 넓이가 없이 위치만 있는 수학적 점입니다.
보통의 경우 정수가 아닌 소수의 형태로 표현되어 있을 것입니다.
반면 픽셀과 텍셀은 각각 넓이와 형태를 가지고 있고, 정수 좌표로 되어있기 때문에, 좌표값에 해당하는 텍셀을 곧바로 가져다 사용한다는 것은 불가능합니다.
어떻게든 정수 좌표로 변환하거나, 아니면 보간을 통해 좌표값에 걸맞는 적절한 데이터를 만들어내서 프래그먼트 셰이더로 건네줄 필요가 있습니다.
이 방법들을 바로 텍스처 필터링이라고 부릅니다.
여러 보간법이 있으며 성능과 품질에 장단점이 있지만 요즘에는 대부분 품질이 좋은 비등방성 필터링을 사용합니다.
필터링의 경우를 간단히 나누면 텍셀이 픽셀보다 큰 경우 (모델이 카메라에 가까운 경우)와 텍셀이 픽셀보다 작은 경우가 있는데, 전자의 경우 필터링을 잘 해주지 않으면 텍셀 가장자리가 두드러지게 보일 것이고, 후자의 경우 텍스처가 띄엄띄엄 샘플링 되기 때문에 보기에 아주 안 좋습니다.
따라서 이러한 에일리어싱 현상을 최소화하는 필터링이 좋은 필터링입니다.

 

 

참고자료 (출처)

https://ko.wikipedia.org/wiki/%ED%85%8D%EC%8A%A4%EC%B2%98_%EB%A7%A4%ED%95%91
https://learn.foundry.com/ko/modo/content/help/pages/uving/working_with_uvmaps.html
https://namu.wiki/w/%ED%85%8D%EC%8A%A4%EC%B2%98%20%ED%95%84%ED%84%B0%EB%A7%81