Unity, 널 사랑하지만 너의 UV만은 용납할 수 없다

김포프 2012-06-11

요즘, 사랑에 빠졌습니다. 이름도 깔삼한 Unity입니다. 처음으로 '아~ 이것보다 뛰어난 놈은 못만들겠구나'라고 생각이 든 엔진이라죠. 물론 이유는 에디터가 너무 좋아서입니다. 그 전에 섹시한 언리얼 양을 볼때도 '뭐, 이정도 쯤이야 나도 언제나 만들 수 있지' 하고 생각했었는데 유니티양 앞에선 무릎을 꿇었답니다.

근데 며칠전에 은근 짜증나는 면을 발견했죠.. 바로 유니티의 UV좌표계.

보통 전(그리고 다른 그래픽 프로그래머들도 아마..?) 텍스쳐에 UV 좌표계를 다음과 같이 입힙니다. 왼쪽위(0,0), 오른쪽아래(1,1)로요.

(0,0)        (1,0)                 
  +-----+-----+
  |     |     |
  |     |     |
  +-----+-----+
  |     |     |
  |     |     |
  +-----+-----+
(0,1)        (1,1)

이렇게 좌표계를 대입하면 UV 좌표계가 텍스처 메모리 레이아웃과 일치한다는 장점이 있지요. 따라서 UV좌표를 기반으로 텍스처 조작(texture manipulation)을 하면 매우 직관적이고 쉽습니다. UV좌표를 써서 텍스처의 일부를 복사해내는 게 그 좋은 예겠죠.

근데, 유니티 양은 뭔 이유에선가 UV좌표를 좀 다르게 매핑합니다. 왼쪽아래(0,0) 오른쪽위(1,1)로요.. 즉 위아래가 뒤집힌 현상.. -_-

(0,1)        (1,1)
  +-----+-----+
  |     |     |
  |     |     |
  +-----+-----+
  |     |     |
  |     |     |
  +-----+-----+
(0,0)        (1,0)

무엇이라!? 왜 이따위로 사는거야!? 철썩~ -_-;;; 이 따위로 UV좌표를 매핑해놓은 수학책이 분명 있습니다. 하지만 이렇게 해서 얻는 실용적인 이익을 도무지 떠올릴 수가 없네요. 때로는 저희 렌더링 프로그래머들이 그냥 특정한 표기법에 익숙하다는 이유로 잘못된 결정을 내리는 경우가 있습니다. 이것도 그런 경우라고 생각합니다.

만약 제가 간과한 장점이 있다면 제발 알려주세요. 제가 사랑하는 유니티 양을 매도하고 싶진 않습니다. 하지만… '전통적으로 그래왔으니 이 방법이 맞아.' 따위의 논의는 삼가해주시기 바랍니다.