인간의 피부상의 주름, 벽돌의 연결 부분, 무기나 장식품에 새겨진 부조 등의 세세한 요철은 폴리곤으로 모델링을 세세하게 하기도 힘들 뿐만 아니라, 렌더링에서 큰 과부하를 주며, 또한 그마저도 제대로 표현되지 않는 경우가 많다. 이 문제를 우회하기 위하여 실제 폴리곤은 간략하게 하고, 그 위에 올리는 재질에 여러가지 기교를 부려 세세한 요철을 만드는 여러가지 방법을 사용하고 있다.
미세한 요철의 판별은 보통 다음과 같은 요소로 판별된다:
- 그늘(陰)
- 그림자(影)
- 차폐(Occlusion)
- 경계의 요철(凹凸)
Bump Mapping
이 방법은 위의 판별 항목 중 그늘 항목을 그럴 듯하게 변형시켜 준다. 물체에 법선 맵(Normal Map)을 붙여서 실제 폴리곤의 법선을 왜곡시킨 채로 반사 방정식을 푼다. 법선 맵 대신 흑백의 그레이스케일 텍스쳐를 사용하는 높이 맵(Height Map or Displacement Map)을 사용하는 경우도 있는데, 이러한 경우는 맵 제작자에게 직관적이라는 장점이 있지만, 각 텍셀마다 인접한 텍셀과의 높낮이를 구해 법선을 찾아내는 방식으로 법선 맵을 구해내야 한다는 단점이 있다. 이는 픽셀셰이더를 통해 실시간으로 처리하거나, 오프라인으로 사전에 생성해 두기도 한다. 하지만 동적으로 법선이 움직이는 경우에는 높이 맵을 애니메이트 시켜서 픽셀셰이더를 통해 실시간으로 법선 맵으로 변환하는 방법이 널리 사용되고 있으며, 수면의 실시간 물결 애니메이션등의 표현에 사용되고 있다.
이러한 법선 맵을 만드는 툴 중은 여러 가지가 있지만, 그 중 상용 툴로는 Pixologic 사의 ZBrush가 가장 유명하다. 아울러 ZBrush에는 하이폴리곤으로 모델링 한 미세요철의 디테일을 로우폴리곤 모델 + 법선 맵, 로우폴리곤 모델 + 높이 맵으로 변환시키는 기능도 갖추고 있다.
Bump Mapping은 요철의 판별 항목 중 그림자, 차폐, 요철 경계를 표현하지 못하기 때문에 폴리곤이 시점에 가까워지면 심한 이질감을 느끼게 된다. Crytek에서는 가까운 거리에서는 하이폴리곤을 사용하고 먼 거리에서는 Bump Mapping을 사용하는 PolyBump라고 명명한 방법으로 이 문제를 해결하고 있다. 어떤 의미에선 Bump Mapping을 LOD 시스템에 짜넣은 좋은 예라고 할 수 있을 것이다.
Parallax Mapping
References
- Nishikawa, 3Dグラフィックス・マニアックス : 微細凹凸表現の基本形「法線マップ, 알로샤 역