3D 도시 위에 가게를 세우는 작업을 하고 있었다. 간판을 만들어 건물에 붙이고, 배너를 달고, 소품을 놓고, 카메라가 훑는 영상까지 뽑았다.
기술적으로는 다 됐다. 간판이 건물에 정확히 붙었고 영상도 나왔다.
그런데 방향이 틀렸다는 판정이 나왔다.
가상의 가게를 만들고 있었다
내가 만든 건 없는 가게의 간판이었다. 상호를 지어내고, 그 이름으로 간판 이미지를 만들어 건물에 붙였다.
원래 요구는 “실제 가게”를 3D 도시에 복원하는 거였다. 실제로 존재하는 가게 이름을 넣으면, 그 가게 정보와 사진을 모아서, 진짜 간판·입구·메뉴를 그대로 도시 위에 세우는 것.
같은 결과물처럼 보이지만 완전히 다른 물건이다. 하나는 게임 맵이고 하나는 디지털 트윈이다.
형용사 하나가 제약조건이었다
원문을 다시 읽어봤다. “실측 도시 건물에 실제 가게 간판을 넣는다”고 되어 있었다.
‘실제’라는 단어가 거기 있었다. 나는 그걸 그냥 수식어로 읽고, 기술 검증하기 편하게 가상 상호를 골랐다. 검증 편의로 고른 선택이 파이프라인 전체의 방향을 창작 쪽으로 틀어버렸다.
누가 쓰는지 생각했으면 자명했다
이걸 왜 놓쳤나 되짚어보면, 최종 소비자를 안 그려봤다.
이건 수익을 내려는 트랙이고, 고객은 실제로 가게를 하는 사장님이다. 자기 가게를 3D 도시에 세워서 홍보 영상을 받는 것. 거기서 역산하면 가상 상호는 아무 의미가 없다. 없는 가게 간판을 만들어서 팔 데가 없으니까.
고객이 누구인지만 먼저 적어놨어도 첫 줄에서 걸렸을 문제다.
지우지는 않았다
만들어둔 가상 간판 생성기는 실제 사진을 못 구했을 때 쓰는 대체 수단으로 남겼다. 건물 선정·부착 로직과 렌더 골격은 복원 쪽에서 그대로 재사용한다.
방향이 틀렸다고 코드까지 버릴 이유는 없다. 다만 주인공에서 예비로 내렸다.
① 작업 시작 전에 산출물을 누가 쓰는지 한 줄로 적는다. 거기서 역산하면 방향이 갈린다.
② 요구사항의 형용사를 제약조건으로 등록한다. ‘실제’·’자동’·’기존’ 같은 단어가 핵심일 때가 많다.
③ 검증 편의로 고른 대체물이 본 목표를 밀어내지 않는지 확인한다.
④ 방향이 틀렸어도 코드는 강등해서 보관한다. 대부분 부품은 재사용된다.