유타 주전자
1. 개요
Utah teapot / Newell teapot
3D 그래픽을 공부하는 사람이라면 반드시 봤을 그 찻주전자. 한마디로 3D 그래픽스 계의 Hello, world! 포지션이라 할 수 있다. 3ds Max에는 기본 오브젝트로 포함되어 있어 더욱 친숙할 것이다.
이름의 유래는 이 모델을 만든 인물의 이름인 컴퓨터 그래픽스 연구자 마틴 뉴웰(Martin Newell) 과 그가 소속되어 있던 유타 대학교에서 따온 것이다.
2. 역사
1975년, 마크 뉴웰은 자기 작업에 쓸 '간단하고도 수식으로 구현 할 수 있는 친숙한 물건의 모델'이 필요했다. 마땅히 쓸만한 모델을 갖고 있지 않은터라 어떤 모델을 새로 만드는게 좋을까 고민하다가, 마침 함께 티타임을 갖고 있던 그의 아내 산드라 뉴웰이 그럼 이 찻주전자를 모델링 하는게 어떠냐고 제안을 한다. 이 찻주전자는 부부가 솔트레이크 시티의 한 백화점에서 구입한 물건으로, 멜리타[2] 라는 회사에서 1974년 제조했다.
뉴웰은 곧바로 모눈종이와 연필을 가지고 와서 찻잔의 모습을 눈대중으로 수치화 시켰고, 연구실로 돌아가 Tektronix라는 초창기 그래픽 터미널을 이용해 일일이 손으로 베지어 값을 입력하며 주전자를 완성시켰다.
이런 기계에 일일이 수치를 입력해서 모델링을 하는것이다(...) 지금은 상상도 못할 일. 보면 알겠지만, 와이어프레임으로 매우 간단한 그림을 뿌리는데도 상당히 오랜 시간이 걸린다. 특히 GUI 가 아닌 CUI 로 해서 더 힘들다.
잘 알려지지 않았지만, 뉴웰은 이 때 찻주전자를 만들면서 찻잔, 컵과 컵받침, 스푼까지 포함한 티세트 하나를 모두 모델링했다. #
사진을 보면 마크 뉴웰이 만든 모델보다 실제 주전자가 위아래로 더 길쭉한 걸 알 수 있다. 이는 당시 마크 뉴웰이 사용하던 컴퓨터 환경에 기인한다. 당시의 컴퓨터는 현대의 LCD 모니터가 아니라 CRT 모니터 였다. CRT는 구조상 픽셀이 정사각형이 아니라 세로로 좀더 긴 직사각형 형태였으므로 그렇기에 당시 그래픽 카드부터 그래픽 S/W, 프레임 버퍼까지[3] 모두 이에 맞추어 세로로 길어질 것을 가정하고 일부러 위아래로 좀 찌그러뜨려 놓은 것이다. 당시의 CRT 모니터에 출력하면 상하좌우 비율이 맞는 모습이 나온다.
3. 왜 이렇게 유명한가?
뉴웰은 곧 이 주전자의 지오메트리(일련의 3차원 좌표들)를 다른 연구원들에게 공개하였고, 다른 연구원들이 너도나도 이 주전자 데이터를 쓰기 시작했다. 당시는 딱히 지금처럼 모델링 자료가 많았던 것도 아니고, 뭔가 하나 만들려 해도 지금과는 차원이 다른 노가다를 해야 하던 시절이었기 때문에, 공짜로 제공된 이 모델이 인기가 있었던 것은 당연했다.
게다가 이 간단한 주전자 모델에 당시 3D 그래픽스 연구자들이 실험에 필요로 했던 수많은 요소들이 담겨져 있다는 사실도 드러나게 되었다. 그 요소들은 대충 다음과 같다.
- 주전자는 매우 단순하고 친숙한 물건이라 한눈에 알아볼 수 있다.
- 뻥 뚫려있는 손잡이 등 위상수학적으로 복잡한 형상을 하고 있다.
- 손잡이와 주둥이 등의 요소들이 모델에 스스로 그림자를 드리운다(Self shadowing).
- 볼록하고 오목한 표면 모두를 갖고있다.
- 용량이 작다. 전설에 의하면 초창기 CG 연구가들 중 몇몇은 주전자의 수치 데이터를 모조리 외워버려서(...) 책이나 메모 없이 주전자를 만들어내는게 가능했다고 한다.
4. 실제 주전자 데이터 세트
눈치 챈 사람도 있겠지만 '''오리지널 유타 주전자 모델은 바닥이 없다.''' Body에 보면 수치항목이 2개밖에 없는데, 뚜껑과 손잡이에만 해당되는 데이터는 있지만 바닥에 해당하는 수치는 찾아 볼 수 없다. 만약 바닥까지 있었다면 수치항목이 3개가 되었어야 했다. 밑에서 보는 것이 아니니 어떻게 보면 바닥을 모델링하지 않은 것은 당연한 일이다.Rim:
{ 102, 103, 104, 105, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15 }
Body:
{ 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27 }
{ 24, 25, 26, 27, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40 }
Lid:
{ 96, 96, 96, 96, 97, 98, 99, 100,
101, 101, 101, 101, 0, 1, 2, 3 }
{ 0, 1, 2, 3, 106, 107, 108, 109,
110, 111, 112, 113, 114, 115, 116, 117 }
Handle:
{ 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51, 52, 53, 54, 55, 56 }
{ 53, 54, 55, 56, 57, 58, 59, 60,
61, 62, 63, 64, 28, 65, 66, 67 }
Spout:
{ 68, 69, 70, 71, 72, 73, 74, 75,
76, 77, 78, 79, 80, 81, 82, 83 }
{ 80, 81, 82, 83, 84, 85, 86, 87,
88, 89, 90, 91, 92, 93, 94, 95 }
Vertices:
{ 0.2000, 0.0000, 2.70000 }, { 0.2000, -0.1120, 2.70000 },
{ 0.1120, -0.2000, 2.70000 }, { 0.0000, -0.2000, 2.70000 },
{ 1.3375, 0.0000, 2.53125 }, { 1.3375, -0.7490, 2.53125 },
{ 0.7490, -1.3375, 2.53125 }, { 0.0000, -1.3375, 2.53125 },
{ 1.4375, 0.0000, 2.53125 }, { 1.4375, -0.8050, 2.53125 },
{ 0.8050, -1.4375, 2.53125 }, { 0.0000, -1.4375, 2.53125 },
{ 1.5000, 0.0000, 2.40000 }, { 1.5000, -0.8400, 2.40000 },
{ 0.8400, -1.5000, 2.40000 }, { 0.0000, -1.5000, 2.40000 },
{ 1.7500, 0.0000, 1.87500 }, { 1.7500, -0.9800, 1.87500 },
{ 0.9800, -1.7500, 1.87500 }, { 0.0000, -1.7500, 1.87500 },
{ 2.0000, 0.0000, 1.35000 }, { 2.0000, -1.1200, 1.35000 },
{ 1.1200, -2.0000, 1.35000 }, { 0.0000, -2.0000, 1.35000 },
{ 2.0000, 0.0000, 0.90000 }, { 2.0000, -1.1200, 0.90000 },
{ 1.1200, -2.0000, 0.90000 }, { 0.0000, -2.0000, 0.90000 },
{ -2.0000, 0.0000, 0.90000 }, { 2.0000, 0.0000, 0.45000 },
{ 2.0000, -1.1200, 0.45000 }, { 1.1200, -2.0000, 0.45000 },
{ 0.0000, -2.0000, 0.45000 }, { 1.5000, 0.0000, 0.22500 },
{ 1.5000, -0.8400, 0.22500 }, { 0.8400, -1.5000, 0.22500 },
{ 0.0000, -1.5000, 0.22500 }, { 1.5000, 0.0000, 0.15000 },
{ 1.5000, -0.8400, 0.15000 }, { 0.8400, -1.5000, 0.15000 },
{ 0.0000, -1.5000, 0.15000 }, { -1.6000, 0.0000, 2.02500 },
{ -1.6000, -0.3000, 2.02500 }, { -1.5000, -0.3000, 2.25000 },
{ -1.5000, 0.0000, 2.25000 }, { -2.3000, 0.0000, 2.02500 },
{ -2.3000, -0.3000, 2.02500 }, { -2.5000, -0.3000, 2.25000 },
{ -2.5000, 0.0000, 2.25000 }, { -2.7000, 0.0000, 2.02500 },
{ -2.7000, -0.3000, 2.02500 }, { -3.0000, -0.3000, 2.25000 },
{ -3.0000, 0.0000, 2.25000 }, { -2.7000, 0.0000, 1.80000 },
{ -2.7000, -0.3000, 1.80000 }, { -3.0000, -0.3000, 1.80000 },
{ -3.0000, 0.0000, 1.80000 }, { -2.7000, 0.0000, 1.57500 },
{ -2.7000, -0.3000, 1.57500 }, { -3.0000, -0.3000, 1.35000 },
{ -3.0000, 0.0000, 1.35000 }, { -2.5000, 0.0000, 1.12500 },
{ -2.5000, -0.3000, 1.12500 }, { -2.6500, -0.3000, 0.93750 },
{ -2.6500, 0.0000, 0.93750 }, { -2.0000, -0.3000, 0.90000 },
{ -1.9000, -0.3000, 0.60000 }, { -1.9000, 0.0000, 0.60000 },
{ 1.7000, 0.0000, 1.42500 }, { 1.7000, -0.6600, 1.42500 },
{ 1.7000, -0.6600, 0.60000 }, { 1.7000, 0.0000, 0.60000 },
{ 2.6000, 0.0000, 1.42500 }, { 2.6000, -0.6600, 1.42500 },
{ 3.1000, -0.6600, 0.82500 }, { 3.1000, 0.0000, 0.82500 },
{ 2.3000, 0.0000, 2.10000 }, { 2.3000, -0.2500, 2.10000 },
{ 2.4000, -0.2500, 2.02500 }, { 2.4000, 0.0000, 2.02500 },
{ 2.7000, 0.0000, 2.40000 }, { 2.7000, -0.2500, 2.40000 },
{ 3.3000, -0.2500, 2.40000 }, { 3.3000, 0.0000, 2.40000 },
{ 2.8000, 0.0000, 2.47500 }, { 2.8000, -0.2500, 2.47500 },
{ 3.5250, -0.2500, 2.49375 }, { 3.5250, 0.0000, 2.49375 },
{ 2.9000, 0.0000, 2.47500 }, { 2.9000, -0.1500, 2.47500 },
{ 3.4500, -0.1500, 2.51250 }, { 3.4500, 0.0000, 2.51250 },
{ 2.8000, 0.0000, 2.40000 }, { 2.8000, -0.1500, 2.40000 },
{ 3.2000, -0.1500, 2.40000 }, { 3.2000, 0.0000, 2.40000 },
{ 0.0000, 0.0000, 3.15000 }, { 0.8000, 0.0000, 3.15000 },
{ 0.8000, -0.4500, 3.15000 }, { 0.4500, -0.8000, 3.15000 },
{ 0.0000, -0.8000, 3.15000 }, { 0.0000, 0.0000, 2.85000 },
{ 1.4000, 0.0000, 2.40000 }, { 1.4000, -0.7840, 2.40000 },
{ 0.7840, -1.4000, 2.40000 }, { 0.0000, -1.4000, 2.40000 },
{ 0.4000, 0.0000, 2.55000 }, { 0.4000, -0.2240, 2.55000 },
{ 0.2240, -0.4000, 2.55000 }, { 0.0000, -0.4000, 2.55000 },
{ 1.3000, 0.0000, 2.55000 }, { 1.3000, -0.7280, 2.55000 },
{ 0.7280, -1.3000, 2.55000 }, { 0.0000, -1.3000, 2.55000 },
{ 1.3000, 0.0000, 2.40000 }, { 1.3000, -0.7280, 2.40000 },
{ 0.7280, -1.3000, 2.40000 }, { 0.0000, -1.3000, 2.40000 },
5. 여담
3ds Max의 경우 기본 오브젝트에 포함되어 있어서 마우스로 클릭하고 쭉 그으면 바로 만들 수 있다. 렌더링과 관련된 튜토리얼 영상을 보면 이 유타 주전자를 가지고 가르치는 경우가 많다. 아마 지금 이 순간에도 3D 그래픽스를 배우는 수많은 학생들이 이 주전자에다 일반적인 스테인리스 재질부터 핑크색 호피무늬(...)까지 다양한 재질을 입혀보면서 매핑과 라이팅, 렌더링을 연습하고 있을 것이다.
마틴 뉴웰은 80년대 후반의 SIGGRAPH 프레젠테이션에서 "여태껏 내가 3D 그래픽스의 세계에 기여를 해 왔지만, '''그놈의 망할 찻주전자'''(That Damned Teapot) 말고는 후대 사람들이 기억하지 못할 것.' 이라는 우스개 소리를 했다고 한다.
그 역사성과 유명세 덕분에 3D 애니메이션에도 이스터 에그로 자주 출현한다.
일본의 아티스트 히라사와 스스무의 그룹 P-MODEL의 1992년 뮤비인 '2D or not 2D'에서도 간간히 등장한다.
6. 유사 사례
- 로렘 입숨 - 출판&디자인 계열의 유타 주전자. 별 의미없는 글귀들을 모아놓은 것이다.
- 둠 시리즈 - PC게임 포팅계의 유타 주전자. it runs doom이라는 밈이 돌아다니는걸로도 말 다했다.
- 스탠포드 토끼 - 유타 주전자와 비슷한 포지션의 모델. 시기상으론 유타 주전자가 훨씬 빠르다.
- 레나 포르센 - 이쪽은 2D 그래픽스 계의 유타 주전자라고 할 수 있지만, 유타 주전자보다 좀 더 빠르다.
- 엔론 코퍼스 - 엔론의 분식회계 감사 과정에서 공개된 사내 이메일을 데이터베이스화한 것으로, 자연언어처리 분야에서 트레이닝 샘플로 사용된다.