관측 가능한 우주 끝에서 플랑크 길이까지, 스케일 사다리 하나로 쭉 이어서 보여달라고 했다. 그냥 자릿수만 나열하는 표가 아니라 실제 위치·비율 정보까지 정확하게 넣으라는 조건이었다. 1차로 26단계짜리를 받았는데, 훑어보고 나니 "잘 만들긴 했는데" 수준이었다. 결국 처음부터 좌표계를 다시 짜는 2차 작업으로 이어졌다.
1차본에서 세 가지가 걸렸다
디테일이 부족한 건 둘째 치고, 실제 스케일과 맞는지부터 확인이 필요했다. 태양계 쪽 디테일이 특히 떨어졌고, 지구에서 줄어들며 다음 단계로 넘어가는 흐름이 자연스럽지 않고 억지로 이어붙인 티가 났다. 사람 → 세포로 좁혀 들어가는 구간은 표면·각도·시선이 부자연스러우면 바로 티가 나는 구간이라 특히 신경 쓰라고 했다. 마지막으로 마우스로 줌인·줌아웃할 때 동일한 로그/지수 스케일로 움직이고, 그에 맞춰 화면 위 크기 표시가 정확해야 한다는 조건을 걸었다. "이번엔 최종으로 완성해보자"고 했고, 그 말대로 좌표계부터 다시 짜는 재작업이 됐다.
줌 축을 진짜 로그 스케일로 바꿨다
1차본은 단계 간격을 1.2~3.2 자릿수 사이로 눌러 담은 가짜 축이었다. 2차본은 축 자체를 L = log10(화면 가로 폭[m])으로 정의하고, 각 단계 크기는 scale = W · 10^(log10(대표크기) − L)로 직접 계산한다. 압축도 보정도 없다. 휠 한 노치는 화면 어디서든 정확히 같은 자릿수만큼 움직이고, 화면에 표시되는 크기 게이지는 실제 화면 가로폭의 비율과 그대로 일치한다. 관측 가능한 우주(약 930억 광년)부터 플랑크 길이(1.616×10⁻³⁵ m)까지 총 61.7 자릿수를 46단계로 나눴다. 단계 사이 최대 공백은 3.0 자릿수인데, 한 화면에 담기는 폭이 4.2 자릿수라 화면이 완전히 비는 구간은 없다.
지구부터 세포까지, 앵커 하나로 꿰었다
이어지는 게 억지스러웠던 이유는 단계마다 원점이 제각각이었기 때문이었다. 그래서 "광화문광장 한복판에 선 사람의 손등 표면, 지면 위 0.9 m" 라는 점 하나를 정하고, 지구부터 세포까지 전 단계가 이 한 점을 원점으로 공유하게 했다. 지구 단계에서는 서울이 천정(+Y) 방향을 향하도록 구를 회전시킨 뒤, 지표면이 정확히 원점에 오도록 구 전체를 반지름만큼 밀어냈다. 동아시아·한반도·수도권은 평면이 아니라 지구 실제 반지름(6,371 km)으로 휘어진 구면 패치라서, 확대해 들어가는 동안 곡률이 끊기지 않고 이어진다. 서울(화면 폭 30 km)부터는 가장자리가 휘어 내려가는 높이가 18 m 남짓이라 평면으로 바꿨다.
카메라 고도각도 단계마다 따로 정해서 보간한다. 지구 20° → 동아시아 30° → 서울 46° → 광화문광장 50° → 광장의 사람들 66° → 사람 76°(거의 눈높이)로 올라갔다가, 손 52°로 다시 내려다보고, 세포 72°로 이어진다. 줄어들면서 부감에서 눈높이로, 다시 내려다보는 각도로 자연스럽게 눕도록 만든 값들이다. 같은 대상을 해상도만 바꿔 반복해서 보여주는 구간(태양계 3종, 지표에서 손까지 12종)은 배타 그룹으로 묶어 중간 지점에서 서로 교대시켰다 — 안 그러면 지형이 두 겹으로 겹쳐 보이는 유령 현상이 났다.
태양계는 정직하게 속였다
아홉 천체 전부 실제 궤도요소(장반경·이심률·궤도경사·승교점경도·근일점경도)를 넣었다. 그래서 명왕성 궤도는 17° 기울어 찌그러진 채로 해왕성 궤도를 파고들고, 토성 고리도 실제 범위인 74,500~140,180 km로 그렸다. 크기도 전부 실제 비율인데, 화면 폭 60 AU 기준으로 계산하면 태양 지름이 0.2픽셀밖에 안 된다 — 그대로 두면 아무것도 안 보인다. 그래서 화면 고정 크기의 점 표식을 겹쳐 놓고, 줌인하면 그 표식을 밀어내며 실제 비율의 원반이 드러나게 했다. 크기를 과장하는 대신, 실제로도 먼 거리에서 행성은 점광원으로 보인다는 사실 자체를 표현 방식으로 삼은 셈이다. 계 전체는 지구가 원점에 오도록 옮겨서, 지구 궤도 단계에 들어서면 태양이 옆으로 비껴 있는 게 보인다.
숫자를 하나씩 검산했다
다 만들고 나서 눈대중이 아니라 계산으로 맞는지 확인했다. 지구 반지름을 지구 단계 화면 폭으로 나누면 정확히 0.50000이 나와야 하고, 실제로 그렇게 나왔다. 달까지의 거리는 지구 지름의 30.2배, 원자핵과 원자 크기의 비는 1/25,926, 오르트 구름 바깥 반지름은 1.59광년, 우리은하 지름은 10.04만 광년, 관측 가능한 우주는 지름 930억 광년 — 전부 이 값대로 화면 크기를 계산해서 넣었다.
3차: 지구에서 손바닥까지는 실측 데이터로 다시 그렸다
2차본을 띄워 놓고 보니 지구에서 손까지 구간이 여전히 약했다. 한반도가 대륙과 떨어진 섬처럼 보였고, 서울은 원뿔 모양 산과 흩뿌린 상자였고, 광장 주변 빌딩은 크기만 큰 회색 기둥이었다. 사람들은 마네킹처럼 서 있었고, 손등에는 힘줄과 정맥이라고 넣은 튜브가 털처럼 보였다. 휴대폰에서는 설명이 장면을 가렸고, 설명도 척도 숫자만 있고 그게 어느 정도 크기인지는 없었다. 이 목록을 그대로 고치는 3차 작업을 했다.
한반도가 섬처럼 보인 원인은 해안선 모양이 아니었다. 산맥 능선에서 멀어질수록 높이를 낮추는 식으로 지형을 만들었더니 서해안 평야와 압록강·두만강 쪽 낮은 땅이 해수면 높이와 거의 같아졌고, 그 위를 반투명한 바다 면이 덮어 버렸다. 산만 물 위로 솟아 섬처럼 보였던 것이다. 노이즈로 지형을 흉내 내는 대신 실제 자료를 넣었다. 지구는 NASA Blue Marble(2004년 7월) 위성 사진, 동아시아·한반도·수도권은 같은 영상의 고해상도 조각에 Mapzen Terrain Tiles의 실측 표고를 입혔고, 해안선은 Natural Earth 1:1000만 자료로 그렸다. 산 높이는 그대로 두면 거의 보이지 않아서 동아시아 14배, 한반도 8배, 수도권 3배, 서울 1.6배로 과장했고, 각 단계 설명에 그 배율을 적었다.
서울·종로·광화문광장은 오픈스트리트맵 자료로 만들었다. 한강과 녹지, 간선도로를 지면 영상으로 그리고, 종로 일대 건물 1만 3,507동을 실제 윤곽대로 세웠다. 높이나 층수가 기록된 건물은 1,300여 동뿐이라, 나머지는 바닥 면적과 도심과의 거리로 층수를 짐작했다. 교보생명빌딩·정부서울청사·세종문화회관처럼 광장에서 눈에 띄는 건물은 실제 높이를 따로 넣었다. 광화문과 월대, 근정전, 세종대왕상과 이순신 장군상은 OSM에 적힌 좌표에 직접 모형을 만들어 세웠다. 앵커도 원래 좌표(북위 37.566°)가 서울광장 쪽이라, 두 동상 사이 광장 한가운데(37.5720°, 126.9766°)로 옮겼다.
사람은 걷는 보폭과 팔 흔들림이 있는 모형으로 바꾸고, 걷는 무리와 마주 보고 선 무리를 섞어 서로 겹치지 않게 놓았다. 손 단계에서 몸이 사라지고 손만 공중에 뜨는 문제도 있었다. 사람 장면이 먼저 투명해지면서 사라졌기 때문이라, 손 단계도 같은 사람을 그대로 두고 왼손만 정밀하게 만든 장면으로 바꿨다. 손가락은 마디마다 조금씩 굽은 힘을 뺀 자세로 다시 잡았다. 모든 단계에는 "지구를 농구공으로 줄이면 달은 테니스공 크기로 7.2 m 떨어져 있다" 같은 비교 문장을 하나씩 붙였다.
사용법: 스크롤 대신 로그 줄자
드래그로 회전하고, 휠이나 핀치로 확대·축소한다 — 이때 축이 로그 등속이라 어디서 조작하든 체감 속도가 같다. ↑↓로 단계를 하나씩 건너뛸 수 있고, 오른쪽 세로 눈금(자)을 직접 클릭해서 원하는 크기로 점프할 수도 있다. space를 누르면 약 150초짜리 자동 여행이 시작되고, L로 이름표를 켜고 끌 수 있다. 휴대폰에서는 설명이 아래쪽 시트로 들어가고, 화면 버튼으로 단계 이동·자동 여행·이름표를 조작한다. 위성 영상과 지형, 건물 윤곽을 모두 HTML 파일 하나에 담아서 파일이 약 5 MB이고, 처음 열 때 지형과 건물을 만드는 데 몇 초 걸린다.
이 버전, 그리고 다른 버전
이 버전은 Claude Opus 5로 만들었다. 같은 스케일 사다리를 GPT Astra로 만든 SCALE ASTRA, Gemini로 만든 스케일 Gemini 3.6과 스케일 Gemini 3.8, 그리고 Claude Opus 5.5로 실제 위성사진·건물 데이터 위에 다시 만든 스케일 오디세이 Opus 5.5도 있다. 같은 문제를 AI마다 어떻게 다르게 푸는지 나란히 놓고 보면 재미있다.