1. 개요
Utah teapot / Newell teapot3D 그래픽을 공부하는 사람이라면 반드시 봤을 그 찻주전자. 한마디로 3D 그래픽스 계의 Hello, world! 포지션이라 할 수 있다. 3ds Max에는 기본 오브젝트로 포함되어 있어 더욱 친숙할 것이다.
이름의 유래는 이 모델을 만든 인물의 이름인 컴퓨터 그래픽스 연구자 마틴 뉴웰(Martin Newell)과 그가 소속되어 있던 유타 대학교에서 따온 것이다.
2. 역사
당시 뉴웰이 참고했던 실제 주전자[1] |
모델링을 위해 모눈종이에 그린 주전자 |
이런 기계에 일일이 수치를 입력해서 모델링을 하는 것이다(...). 지금은 상상도 못할 일. 보면 알겠지만, 와이어프레임으로 매우 간단한 그림을 뿌리는데도 상당히 오랜 시간이 걸린다. 특히 GUI 가 아닌 CLI 로 해서 더 힘들다.
잘 알려지지 않았지만, 뉴웰은 이 때 찻주전자를 만들면서 찻잔, 컵과 컵받침, 스푼까지 포함한 티세트 하나를 모두 모델링했다. #
사진을 보면 마크 뉴웰이 만든 모델보다 실제 1.4리터 주전자가 위아래로 더 길쭉한 걸 알 수 있다.[4] 이는 당시 마크 뉴웰이 사용하던 컴퓨터 환경에 기인한다. 당시의 컴퓨터는 현대의 LCD 모니터가 아니라 CRT 모니터였다. CRT는 구조상 픽셀이 정사각형이 아니라 세로로 좀더 긴 직사각형 형태였으므로 그렇기에 당시 그래픽 카드부터 그래픽 S/W, 프레임 버퍼까지[5] 모두 이에 맞추어 세로로 길어질 것을 가정하고 일부러 위아래로 좀 찌그러뜨려 놓은 것이다. 당시의 CRT 모니터에 출력하면 상하좌우 비율이 맞는 모습이 나온다.
3. 왜 이렇게 유명한가?
뉴웰은 곧 이 주전자의 지오메트리(일련의 3차원 좌표들)를 다른 연구원들에게 공개하였고, 다른 연구원들이 너도나도 이 주전자 데이터를 쓰기 시작했다. 당시는 딱히 지금처럼 모델링 자료가 많았던 것도 아니고, 뭔가 하나 만들려 해도 지금과는 차원이 다른 노가다를 해야 하던 시절이었기 때문에, 공짜로 제공된 이 모델이 인기가 있었던 것은 당연했다.게다가 이 간단한 주전자 모델에 당시 3D 그래픽스 연구자들이 실험에 필요로 했던 수많은 요소들이 담겨져 있다는 사실도 드러나게 되었다. 그 요소들은 대충 다음과 같다.
- 주전자는 매우 단순하고 친숙한 물건이라 한눈에 알아볼 수 있다.
- 뻥 뚫려있는 손잡이 등 위상수학적으로 복잡한 형상을 하고 있다.
- 손잡이와 주둥이 등의 요소들이 모델에 스스로 그림자를 드리운다.(Self Shadowing, Self Cast)
- 볼록하고 오목한 표면 모두를 갖고있다.
- 용량이 작다. 전설에 의하면 초창기 CG 연구가들 중 몇몇은 주전자의 수치 데이터를 모조리 외워버려서(...) 책이나 메모 없이 주전자를 만들어내는게 가능했다고 한다.
자유롭게 공개 되었다는 점과 여러 장점들 덕분에 유타 주전자는 3D 그래픽스 전반에 널리널리 퍼져 나가게 되었고, 어느새 업계의 레퍼런스로 자리잡게 되었다.
4. 실제 주전자 데이터 세트
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 },
{ 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 },
눈치 챈 사람도 있겠지만 오리지널 유타 주전자 모델은 바닥이 없다. Body에 보면 수치항목이 2개밖에 없는데, 뚜껑과 손잡이에만 해당되는 데이터는 있지만 바닥에 해당하는 수치는 찾아 볼 수 없다. 만약 바닥까지 있었다면 수치항목이 3개가 되었어야 했다. 밑에서 보는 것이 아니니 어떻게 보면 바닥을 모델링하지 않은 것은 당연한 일이다.
5. 매체
그 역사성과 명성 덕분에 3D 애니메이션에도 이스터 에그로 자주 출현한다.- 2D OR NOT 2D: 일본의 아티스트 히라사와 스스무가 리더로 있었던 밴드 P-MODEL의 곡으로 MV에서 유타 주전자가 등장한다.
- 심슨 가족: 시즌7 에피소드6 'Treehouse of Horror VI'에서 호머 심슨이 3차원 세계에 들어가는 장면에서 등장.
- 어메이징 디지털 서커스: 에피소드 2에서 폼니와 거미구가 테스트 공간으로 들어가고 나오는 장면에서 공중에 잔뜩 떠 있다.
- 워 썬더: 전함 하루나 내부 모듈 모델링에 이스터 에그로 들어있다.
- 토이 스토리: 우디가 탈출을 위해 버즈 라이트이어를 찾았을 때 버즈가 시드의 여동생 한나가 갖고 노는 인형 소꿉세트에 앉혀진 상태에서 정신줄마저 놓아버린 처참한 모습으로 전락해 있었는데 이때 유타 주전자가 나왔다.
바닥이 있다
6. 여담
- 3ds Max의 경우 기본 오브젝트에 포함되어 있어서 마우스로 클릭하고 쭉 그으면 바로 만들 수 있다. 렌더링과 관련된 튜토리얼 영상을 보면 이 유타 주전자를 가지고 가르치는 경우가 많다. 아마 지금 이 순간에도 3D 그래픽스를 배우는 수많은 학생들이 이 주전자에다 일반적인 스테인리스 재질부터 핑크색 호피무늬(...)까지 다양한 재질을 입혀보면서 매핑과 라이팅, 렌더링을 연습하고 있을 것이다.
- 마틴 뉴웰은 1980년대 후반의 SIGGRAPH 프레젠테이션에서 "여태껏 내가 3D 그래픽스의 세계에 기여를 해 왔지만, 그놈의 망할 찻주전자(That Damned Teapot) 말고는 후대 사람들이 기억하지 못할 것.' 이라는 우스개 소리를 했다고 한다.
7. 유사 사례
"좋아, 나 왔어. 내게 뭘 보라고 하는..."[6] | "...건지?" | (레나 포르센 사진) | "저것들 낯이 익은데?" |
관련 만화 |
- Bad Apple!!: 영상업계의 유타 주전자. 둠과 마찬가지로 영상을 출력할 수 있으면 Bad Apple!!을 출력한다는 밈이다.
- 둠 시리즈: PC 게임 포팅계의 유타 주전자. 'it runs doom'이라는 밈이 있을 정도다.
- 레나 포르센: 이쪽은 2D 그래픽스 계의 유타 주전자라고 할 수 있지만, 유타 주전자보다 좀 더 빠르다.
- 로렘 입숨: 출판&디자인 계열의 유타 주전자. 의미 없지만 심미적으로 보기 좋은 글귀들을 모아놓은 것이다.
- 스탠퍼드 토끼: 유타 주전자와 비슷한 포지션의 모델. 시기상으로는 유타 주전자가 훨씬 빠르다.
8. 관련 문서
[1] 미국 캘리포니아주의 컴퓨터 역사 박물관이 소장한다.[2] 드립 커피의 창시자인 멜리타 벤츠가 세운 독일의 회사.[3] 오리지날은 1.4리터 흰색 주전자였고 Friesland Porzellan에서 1.4리터, 850밀리, 350밀리 세 가지 용량으로 여러 색으로 만들고 있었으나, 2023년 6월 공장 화재 이후 생산이 안 되고 있다.[4] 350밀리 주전자는 좀 통통하다.[5] Evans and Sutherland의 프레임 버퍼로 추정.[6] 코넬 박스. 보통 좌우 벽이 원색으로 되어 있고 상단에서 빛이 내려오는 구조로 되어 있는데 3D 레이트레이서의 라디오서티 구현에 자주 사용되는 씬이다.