231107 Texture Mapping

aliceshard·2023년 11월 26일
0

  • 오렌지 모델링 하고 싶은데, 오돌토돌한 표면은 어떻게 표현할까? 폴리곤으로 하나하나 깎기는 너무 비싸다. 일단 구를 만들고, 오렌지 같은 텍스쳐를 갖고 와서 넣어보자.

  • 별로 오렌지 같지는 않다. 좀 더 잘할 수 있을까?

  • 텍스쳐 매핑의 목적: Geometric detail을 추가하는 일이 없이 visual detail을 추가하기

  • 2D texture mapping
    그냥 모델링에다가 사진 복붙하기. 제일 원시적인 방법이다.

    1) Planar Map

    2) Cylindrical Map

    3) Spherical Map

    4) Box Map

  • 텍스처 매핑은 Ray cast 과정에서 같이 연산된다. 따라서 Geometric processing과 Pixel operations가 끝난 Rasterization 프로세스에서 같이 연산된다.


    이 과정에서 텍스쳐 좌표계에서 월드 좌표계로 변환하는 방법은 여러 방법이 있다.
    1) 그냥 무식하게 매핑하기: 위에서 봐온 2D mapping 방법들이다.

    2) 매개체를 넣어서 두번 연산해오기: 2D Mapping 방법을 두번 하는 것.

    3) 매개변수화 된 평면에 매핑하기: 좀 더 스마트 한 방법. 곡면의 변수 u,vu, v를 그대로 텍스처 좌표계의 s,ts, t로 사용하는 것.

    4) Non-linear Mapping: 그냥 맘대로 매핑하는 것. 잘 안 쓴다.

  • 그런데 그냥 텍스쳐 공간 (s,t)(s, t)를 막 (u,v)(u, v)로 가져오는 것은 앨리어싱 문제를 일으킬 수 있다. 그림자의 경우와 마찬가지로 시작 공간의 정보량은 적은데, 목표 공간에서 요구되는 정보량이 많을 경우 발생하게 된다.

 공교롭게도 텍스처 이미지 크기와 월드 이미지 크기가 비슷하면 앨리어싱은 발생하지 않는다. 텍셀이 픽셀보다 크거나, 혹은 작은 경우 둘 다 허용되지 않는다는 것이다.

  • Mip-mapping

    위와 같은 특성을 대응하기 위해 그냥 텍스처 사이즈를 여러개 만들어 놓고, 사용자가 물체로부터 가까워지거나 멀어질 때마다 적절한 텍스처를 사용하는 방법이 활용된다.

  • Bump Mapping (by Jim Blinn)

    다시 오돌토돌 오렌지 얘기로 돌아오자면, 결국 표면의 법선 벡터에 왜곡을 주는 것으로 해결된다. 하지만 Phong shading(픽셀 단위)를 해야한다는 단점이 있지만, 디테일 측면에서는 가치 있는 희생이다.

    단점이 있다면 오돌토돌하게 보일 뿐이고 실제 실루엣에는 반영이 되지 않는다.

  • Normal Mapping

    더 고해상도(고폴리곤) 모델로부터 매핑 정보만 뽑아내고, 실제 모델의 폴리곤 수는 낮춘 다음, 고해상도 매핑 정보를 이 낮은 폴리곤 모델에 적용하는 방법.

  • Displacement Mapping

    실제로 텍스처 맵에 따라서 해당 mesh를 위로 올리는 것.

  • Environment Mapping

    주변 환경 맵(Environment Map)으로부터 텍스처를 얻는 것. 반사/굴절을 할 때 유용하다.

  • Bump Mapping, Displacement Mapping의 수학적 상세

    이상의 환경에서 특정 조각 평면이 d(u,v)nd(u,v)\vec{n}만큼 들어올려 진다고 가정한다. 들어올려진 조각 평면에서 새로운 법선 벡터 nn'를 새롭게 연산한다.

    d(u,v)d(u,v)는 매우 작다고 가정했으므로, 무시가 된다. 이제 nn'을 구할 수 있다.

    또한 공간이 discrete하므로, 편미분 항들도 간단하게 근사된다.

profile
안녕하세요.

0개의 댓글