청적 하프문
이머시브 베타
IMMERSIVE BETTA — 제작의 전 과정
의문에서 시작해 실시간 작품이 되기까지.
어항을 둘 수 없어서
물속을 만들기로 했다
- 베타를 키우고 싶었으나 집에 어항을 둘 수 없었다.
- 대안은 가상의 반려 동물이다. 다만 가상은 대체로 현실감이 부족하다.
- 물음은 하나로 좁혀진다 — 시각적 아름다움과 인터랙션만으로 정서적 교류가 성립하는가.
실감콘텐츠 Immersive Content

재보고 싶은 것이 세 가지 있었다
게임 엔진이 필요한가. 유니티·언리얼 없이, 설치도 빌드도 없이 브라우저 링크 하나로 성립하는가.
웹에서 몇 개까지 실시간인가. 간단한 3D를 움직이는 것은 가능하다. 한계선은 재봐야 안다.
천 시뮬레이션은 몇 개까지 가능한가. 지느러미가 흐르려면 매 프레임 물리 계산이 필요하다.
답을 아는 상태에서 시작한 것이 아니라, 재보려고 시작했다. 답은 종장에서 숫자로 제시한다.
시작 지시문의 다섯 조각이 그대로 다섯 막이 된다
"지느러미를 이미지가 아니라 천으로 계산해줘.
몸이 움직이면 그 힘이 천에 전달되게."
[② 물성] 핵심은 지느러미다. 눈속임 말고 진짜 천(cloth)으로 시뮬레이션해줘. 뿌리는 몸에 붙고, 끝으로 갈수록 부드럽게.
[③ 성격] 크고 우아하게, 천천히. 계속 헤엄치고, 추진할 땐 타탁-타탁, 사이엔 활강.
[④ 목표 화면] 참고 사진의 색과 비단결 광택이 목표. 파일 하나(HTML), 라이브러리 없이.
[⑤ 판정 기준] 화면 아래에 폴리곤 수·FPS·늘어남 최대치 계기판을 항상 띄워줘. "이상하다"는 그 수치로 함께 판정한다.
첫 문장이 작품의 정체성을 정한다 — 눈속임과 실제 계산을 가르는 문장이다. ⑤를 처음부터 요구하면 이후의 모든 반려가 재현 가능한 수치 문제가 된다.
모델을 주지 않으면
수식으로 몸을 만든다
- 몸은 부풀린 캡슐, 지느러미는 얇은 막이다. 비단이 아니다.
- 이 방식을 절차적 모델링이라 한다 — 형상을 데이터가 아니라 수식으로 생성한다.
- 계기판: 입자 1,856 · 삼각형 3,282.

결과는 못 쓰지만, 판독할 정보는 충분했다
뼈대(리깅)를 심지 않았고 애니메이션 데이터도 없는데 브라우저 안에서 헤엄쳤다. 움직임은 데이터가 아니라 계산으로 만들 수 있다.
① 이 계산량이면 천 시뮬레이션도 성립한다.
② 형상만 확보하면 움직임은 지시로 만들 수 있다.
부족한 것은 계산이 아니라 형상이었다. 다음 과제가 여기서 정해진다.

재료 —
형상을 확보한다
인공지능은 코드를 쓰기 전에 한 번 더 쓰인다.

정리는 필요하고, 손으로 하기는 번거롭다
사진 → 생성 → 축소 → 분할
- 분할 이유 — 지느러미마다 독립된 시뮬레이션 정점이 필요하다.
- 분할하면 경계 정점이 복제되므로 40,939 → 41,622로 늘어난다. 이 숫자가 이후 모든 계기판에 표시된다.
레퍼런스는 그림의 원본이 아니라 판정의 기준이다
청적 하프문
황금
라벤더
적염



"이렇게 그려줘"가 아니라 "이 색과 광택이 목표다"로 준다. 결과가 어긋났을 때 무엇과 어긋났는지 말할 수 있어야 한다.
이후의 모든 작업은 같은 궤도를 돈다
| "크고 우아하게 천천히" | 부가질량 — 감쇠 없이 속도를 낮추는 유일한 수단 |
| "타탁 타탁 하는 리듬" | 꼬리질 위상에 동기한 추진-활강 맥동 |
| "자꾸 옆으로 누워" | 기울기 상한 31°→11°, 적용 후 실측 중앙값 1.2° |
| "뒷면은 안 보이게 컬링하면" | 백페이스 컬링 적용 — 닫힌 표면이므로 유효 |

물성 —
천이 천답게
발산 · 겹침 · 늘어남을 차례로 잡는다.
시뮬레이션이 폭주한 네 가지 원인
렌더링으로 푸는 편이 정확한 경우가 있다
층 검증 — 46FPS, 최적화 이전
두께 부호 보존 + 백페이스 컬링겹의 앞뒤 관계를 물리로 강제하는 대신 보이지 않게 처리했다. 뒤집힘 724 → 7개, 늘어남은 변화 없음.


성격 —
물고기답게
감각어를 세 가지 구조로 나눠 구현한다.
"물고기답다"를 셋으로 나눈다
- 활동 영역이 몸길이보다 좁으면 벽만 만나 회전한다. 영역을 넓히고 카메라가 따라가도록 했다.
- 이 세 가지는 새 발명이 아니라 표준 어휘다 — Reynolds의 조향 행동(1999)에 대응한다.

웹캠 손 추적을
물리 입력으로 쓴다
- 30fps 검출을 100fps 렌더에 직접 쓰면 떨린다 → 매 프레임 저역통과 필터로 추종.
- 지속 시간은 영상 프레임 수가 아니라 실제 시각으로 잰다.
- 주먹을 쥔 좌표에 먹이가 생성되고, 하나씩 순서대로 섭취한다.
| 놀람 | 급격한 접근 |
| 호기심 | 느린 접근 |
| 쓰다듬기 | 저속 접촉 유지 |
| 따라오기 | 손 이동 추종 |
| 위협 반응 | 지느러미 전개 |
| 경계 | 거리 유지 |

화면 —
색과 빛
레퍼런스를 팔레트로 옮기는 방법.
어떤 색을 입혀도
회색이 되는 이유
- 원본 텍스처의 선형 휘도 중앙값이 0.0117이다. 원본이 어두우므로 흰색을 지정해도 회색으로 출력된다.
- 해법은 휘도 재사상 — 원본에서 명암의 순서만 가져오고, 밝기 범위는 팔레트마다 다시 정한다.
- 범위 상한을 1보다 크게 두면 블룸 문턱을 넘어 광채가 생긴다.
원본 텍스처의 선형 휘도 중앙값 (4096² 실측)
색상만 바꾸면 흰색 계열끼리 구별되지 않는다. 팔레트는 색상뿐 아니라 밝기 범위 · 감마 · 채도 · 광택을 함께 정의한다.
왼쪽이 레퍼런스, 오른쪽이 결과
청적
황금
라벤더
적염
황금은 재사상 상한을 1보다 크게 두어 블룸으로 광채를 만든 경우다.
레퍼런스 밖의 색은 별도로 설계한다
순백 — 밝기 범위 확장
백금 — 광택 폭 축소
청염 — 발광 계열
형광 분홍 — 채도 상한총 15종. 자연색에서 출발하되 자연에 없는 색까지 같은 구조로 정의한다.


판정 —
검증과 반려
무엇을 근거로 승인하고 무엇을 근거로 되돌리는가.
반려는 실패가 아니라 사양 확정 과정이다
| 조명 | "이전이 훨씬 나았다" → 직전 상태로 롤백. 되돌릴 수 있게 만들어 두는 것이 전제다. |
| 층 겹침 | "막 늘어난다" → 늘어남 최대 80배 확인, 해당 기능 전면 철거 |
| 검증 태도 | 지표 하나("층 넘음 0%")만 보고 배포한 결과 → 이후 배포 전 화면 확인을 절차에 포함 |
| 색 | "연분홍 느낌이 아니다" → 3회 조정 후 확정 |
| 리듬 | "끊기는 느낌" → 속도 맥동 변동계수 0.41 → 0.11 |
| 입 벌림 | "보이지 않는다" → 가정한 좌표 범위에 걸린 정점 0개. 실측 후 재작성 |
모델 교체는 눈으로
확인해서 끝나지 않는다
- 편집한 모델을 그대로 넣으면 실패한다. 실제로 발견된 결함 다섯 종:
- 새 면의 시뮬레이션 번호 미지정 · UV 좌표 (0,0) 붕괴 597개 · 미세 슬리버 면 9개 · 삼각형이 아닌 면 1개 · 고립 정점 2개.
- 번호 규칙을 전 정점 41,622개에서 검증한 뒤 결정론적으로 재생성했고, UV는 인접 면을 기준으로 복구했다.

조작 인터페이스와 성능은 작품의 일부다
초기 — 항목을 한 줄로 나열
최종 — 그룹 · 접기 · 프리셋- 연산 비중이 가장 큰 법선 재계산 주기를 4프레임에 1회로 조정 — 48 → 60 FPS.
- 파일 하나 · 라이브러리 없음이라는 초기 제약은 끝까지 유지했다.
처음의 세 의문에 답한다
필요한 게임 엔진의 수. HTML 파일 하나, 빌드 없음. 외부 라이브러리는 손 추적용 MediaPipe뿐.
60FPS로 렌더되는 삼각형 수. 초기 절차적 버전(3,282)의 25배.
매 프레임 10 서브스텝 × 3 반복으로 계산되는 천 시뮬레이션 정점 수.
네 번째 물음 — 정서적 교류가 가능한가. 손에 반응하고, 먹이를 먹고, 다가오거나 물러난다. 다만 기억하지는 못한다. 여기서부터가 다음 주제다.

인공지능 베타는
어떻게 만드나
이 분야에는 30년치 선행 연구가 있다. 무엇을 참고할 수 있는지 정리한다.
1994년에 이미 인공 물고기가 있었다
Artificial Fishes — 근육 액추에이터가 달린 3차원 몸, 환경을 보는 눈, 그리고 운동·지각·행동·학습 중추를 가진 뇌.
Tu & Terzopoulos, SIGGRAPH '94
Evolving Virtual Creatures — 형태와 신경 회로를 유전 알고리즘으로 동시에 진화시켜 헤엄·걷기·따라가기를 획득.
Karl Sims, SIGGRAPH '94
Creatures — 개체마다 순환 신경망과 호르몬 기반 "생화학"을 갖고, 헤브 학습으로 변하며 번식까지 한다.
Steve Grand · 오픈소스 재구현 openc2e
지금 만든 물고기는 이 계보에서 물성(몸)은 앞서 있고 지능(뇌)은 뒤에 있다. 남은 것은 뇌다.
관객이 직접
가르치는 캐릭터
- MIT 미디어랩 연구진은 클리커 트레이닝으로 훈련되는 가상의 개를 만들었다 — 실제 개 훈련 기법 그대로다.
- 강화학습에 기반하되 동물 훈련의 통찰을 설계에 반영했다. 소리 신호를 행동의 단서로 학습하고, 새로운 동작을 합성한다.
- 핵심은 성능이 아니라 관계다. 가르친 사람과 배운 캐릭터 사이에만 생기는 것이 있다.
Blumberg 외, Integrated Learning for Interactive Synthetic Characters, SIGGRAPH 2002
물개 로봇 PARO(1993~, 산업기술종합연구소 시바타 다카노리)를 돌봄 시설에 투입한 연구들에서 기분 개선·사회적 상호작용 증가가 보고됐다. 로봇 강아지 AIBO에 대한 아동의 정서적 애착도 관찰됐다.
즉 대상이 생물이 아니어도 교류는 발생한다. 관건은 사실성이 아니라 반응의 일관성과 지속성이다.
인공지능 베타 — 네 가지 경로
먼저 할 것은
학습이 아니라 기억이다
- 물음이 "똑똑한가"가 아니라 "교류가 되는가"였다. 교류의 최소 조건은 지난번을 기억하는 것이다.
- 습관화·연합 학습은 실제 동물 행동학의 기본 항목이고, 구현은 상태 값 몇 개와 감쇠식이면 된다.
- 강화학습은 그 다음이다. 잘못 쓰면 손으로 조율한 현재의 움직임보다 부자연스러워질 위험이 있다.
| 경로 | 난이도 | 체감 변화 |
|---|---|---|
| 1 기억 | 낮음 | 매우 큼 |
| 2 욕구 | 낮음 | 큼 |
| 3 강화학습 | 높음 | 불확실 |
| 4 언어 모델 | 중간 | 제한적 |
출처
| 인공 물고기 | Tu & Terzopoulos, Artificial Fishes: Physics, Locomotion, Perception, Behavior, SIGGRAPH '94, pp.43–50 · Artificial Life 1(4):327–351 |
| 진화하는 생명체 | Karl Sims, Evolving Virtual Creatures, SIGGRAPH '94, pp.15–22 · karlsims.com |
| 이동 규칙 | Craig Reynolds, Steering Behaviors For Autonomous Characters, GDC 1999 · red3d.com/cwr |
| 훈련되는 캐릭터 | Blumberg 외(MIT Media Lab), Integrated Learning for Interactive Synthetic Characters, SIGGRAPH 2002 |
| 욕구·생화학 생명 | Steve Grand, Creatures(1996) · 오픈소스 재구현 github.com/openc2e/openc2e |
| 기억 구조를 가진 에이전트 | Park 외, Generative Agents: Interactive Simulacra of Human Behavior, UIST 2023 · github.com/joonspk-research/generative_agents |
| 학습 도구 | Unity ML-Agents · github.com/Unity-Technologies/ml-agents |
| 브라우저 추론 | ONNX Runtime Web (WebGPU/WASM) · github.com/microsoft/onnxruntime |
| 로봇 반려동물 효과 | PARO(시바타 다카노리, AIST) 돌봄 시설 연구 · AIBO 애착 연구 |
이 작업에서 확인된 네 가지

가상은 왜
만들어지는가
이 작품 하나의 이야기에서 한 걸음 물러선다.
가상은 이루지 못한 것을 실현하는 자리다
이루지 못하는 꿈
- 날고 싶다 — 슈퍼맨이 되어 하늘을 난다.
- 다른 삶을 살고 싶다 — 외형을 빌려 아바타로 산다.
- 세계를 세우고 싶다 — 도시를 건설한다.
- 어항을 둘 수 없다 — 물속을 만든다.
결핍이 만든 공간
- 만나지 못하니 만날 곳을 새로 찾는다.
- 전시하지 못하니 전시할 곳을 찾는다.
- 땅이 부족하니 가상의 땅을 점유한다.
메타버스는 유행어이기 이전에 결핍의 목록이다. 공간이 먼저 있고 쓸모를 찾은 것이 아니라, 아쉬움이 먼저 있고 공간이 따라왔다.
가상공간은 욕망을 투영하는 공간이다.
네 가지가 동시에 움직이고 있다
- 이 작품은 그 흐름의 아주 작은 표본이다 — 어항 하나를 갖지 못한 사람이, 링크 하나로 열리는 물속을 만들었다.
- 세상이 변하는 중이고, 우리는 그 과정 안에 있다. 답이 정해진 국면이 아니라 질문이 열려 있는 국면이다.

질문을 던지는 것이
메시지를 던지는 것이다.
도구는 쉬워졌고 만드는 일의 문턱은 낮아졌다.
남는 것은 무엇을 물을 것인가다.
이 작품도 세 개의 의문에서 시작했다.