포스트

뮤직비디오 주인공을 나로 바꾸기 - Genjutsu로 하회탈 군무 영상 만들며 아홉 번 다시 돌린 기록

뮤직비디오 주인공을 나로 바꾸기 - Genjutsu로 하회탈 군무 영상 만들며 아홉 번 다시 돌린 기록

뮤직비디오 한 장면(28초)의 주인공을 한복 입은 저로, 뒤에 선 학생 수백 명을 하회탈을 쓴 탈춤꾼으로 바꿨습니다. 원본은 GENER8ION과 Yung Lean의 「STORM」 뮤직비디오로, 주인공이 담배를 피우다 고개를 숙이면 교복 입은 군중이 일제히 절하고 하늘을 올려다보는 장면입니다. Higgsfield의 영상 변환 모델 Genjutsu motion-transfer를 API로 돌렸습니다.

최종본(9회차). 담배는 바나나로, 교복 군중은 앞이 열린 흰 겉옷의 탈춤꾼으로 바뀌었습니다.

한 번에 되지는 않았습니다. 최종본까지 motion-transfer 9번, 원본 정리용 object-swap 2번을 돌렸습니다. 회차마다 하나가 고쳐지면 다른 하나가 틀어졌고, 그 과정에서 이 모델이 어떻게 움직이는지 감이 왔습니다. 한 줄로 줄이면 이렇습니다.

원본에 있는 「모양」은 남고, 레퍼런스는 그 위에 색과 질감만 입힌다.

원본과 모양이 부딪히는 걸 요구하면 매번 원본이 이겼습니다. 거꾸로 레퍼런스를 원본 모양에 맞춰 주니 풀렸습니다. 이 글은 회차별로 무엇을 넣었고 무엇이 틀어졌는지, 그리고 무엇이 실제로 도움이 됐는지를 정리한 기록입니다.

2026-10 기준, Apple M5 Max 맥북에서 API로 실행했습니다. 모든 판단은 회차당 한 번 돌린 결과입니다. Genjutsu는 seed를 지정할 수 없어서 같은 설정으로 다시 돌려도 결과가 달라집니다.

이것만 기억하면 됩니다

  1. 군중 옷은 원본 옷 모양에 맞춘다. 원본이 앞이 열린 블레이저면 레퍼런스도 앞이 열린 옷이어야 한다. 여민 한복에 허리띠를 그리면 흰 블레이저로 돌아간다
  2. 소품은 원본 동작과 어울리는 것으로 고른다. 담배 자리에 가는 막대(빼빼로)를 넣으면 모양은 맞아도 담배처럼 물고 내뿜는다. 「베어 물고 씹는」 바나나가 동작을 바꿔 놓았다
  3. 원본부터 확인한다. 첫 0.3초에 YouTube 앱 화면이 찍혀 있었고, 주인공 목에는 문신이 있었다. 둘 다 결과물에 흔적을 남겼다
  4. 금지어를 나열하지 않는다. 「NO smoke」 대신 「입 앞에 뒤의 탈춤꾼들이 또렷하게 보인다」처럼 보여야 할 것을 쓴다
  5. 첫 1초는 한 프레임씩 본다. 1초 간격으로 보면 첫 5프레임의 담배를 놓친다

준비물

준비물 내용
Higgsfield API 키와 크레딧 open.higgsfield.ai에서 발급. 잔액 조회 API는 없다
원본 영상 28초, 2340×1080. 휴대폰 화면 녹화본이었다
주인공 사진 한복 입은 제 전신 사진 1장 (june.png)
탈춤꾼 레퍼런스 Codex CLI의 이미지 생성으로 자세별 5장을 만들었다
스크립트 업로드, 제출, 상태 확인, 다운로드를 묶은 파이썬 스크립트 (higgsfield-client 0.2.0)

비용(1회 기준): motion-transfer 480p는 입력 영상 1초당 $0.318이고, 28초 영상 한 번에 $8.90입니다. 모델 페이지에 50% 할인이 표시되어 있어 실제로는 그 절반일 수 있습니다. 원본 정리에 쓴 object-swap 720p는 1초당 $0.681로, 한 번에 $19~20입니다. 생성에는 회당 8~14분 걸렸습니다.

API 호출 자체는 단순합니다. 영상과 레퍼런스 이미지를 업로드하고, URL을 넣어 제출한 뒤 끝날 때까지 상태를 확인합니다.

1
2
3
4
5
6
{
  "video_url": "https://.../original-clean-trim.mp4",
  "image_urls": ["주인공.png", "탈춤꾼_정면.png", "...최대 8장"],
  "prompt": "Use the uploaded reference video as the exact motion ...",
  "resolution": "480p"
}

프롬프트에서는 업로드 순서대로 @Image 1, @Image 2처럼 이미지를 가리킵니다.

처음 쓴 레퍼런스

주인공 사진 1장과 탈춤꾼 자세별 레퍼런스 5장 왼쪽부터 주인공(@Image 1), 탈춤꾼 정면, 뒤, 카메라 쪽 인사, 옆 인사, 하늘 보기. 탈춤꾼은 고름으로 여민 흰 저고리에 남색 허리띠를 맸다. 이 옷이 나중에 문제가 된다

탈춤꾼 이미지는 원본 장면에 나오는 동작(정면으로 서기, 돌아서기, 절하기, 하늘 보기)에 맞춰 자세별로 만들었습니다. 앞서 같은 영상의 군중을 라이언으로 바꿨을 때 절하는 장면에서 몸통에 얼굴이 그려졌는데, 그때는 자세별 레퍼런스만으로는 안 됐고 라이언에게 원본 교복을 입힌 레퍼런스로 풀었습니다. 이번에는 그 교훈을 옷이 아니라 자세에만 적용한 셈이었고, 이게 뒤에서 발목을 잡습니다.

프롬프트는 역할별 문단으로 나눴습니다. 뼈대는 끝까지 같습니다.

1
2
3
4
5
6
7
8
REFERENCE IMAGES (in upload order):
@Image 1: the main character, a real Korean man ... navy-gray hanbok vest ...
@Image 2: the surrounding dancer: a Korean mask dancer wearing a pale wooden Hahoe Yangban mask ...
...
MAIN CHARACTER:      주인공 한 명만 @Image 1로 바꾼다
PROP REPLACEMENT:    손에 든 것을 무엇으로 바꿀지
SURROUNDING CHARACTERS: 군중 전원을 탈춤꾼으로, 동작별로 어느 이미지를 따를지
ACTION / CAMERA / TEMPORAL CONSISTENCY: 원본 동작과 카메라를 그대로

회차별 기록

1회차. 담배 대신 부채

  • 이미지: 주인공 1장 + 탈춤꾼 5장
  • 프롬프트: 담배를 합죽선(접부채)으로 바꾼다

1회차 첫 프레임. 주인공이 담배를 물고 있고 부채가 아래에 있다 0.0초. 부채는 올라오는 중이고 입에는 아직 담배가 있다. 0.2초부터 부채로 바뀐다

얼굴과 한복은 사진과 똑같이 나왔고, 군중도 전원 하회탈을 썼습니다. 문제는 두 가지였습니다.

  • 첫 5프레임(0.0~0.2초)에 담배가 남았다. 1초 간격으로 훑어봐서 저는 놓쳤고, 재생해 본 뒤에야 알았습니다
  • 군중 옷이 한복이 아니라 흰 블레이저로 나왔다. 원본 교복 재킷의 깃과 엠블럼 자리는 그대로이고, 레퍼런스의 흰색과 남색만 입혀졌습니다

2회차. 초코바 + 궁궐 배경

  • 이미지: 1회차 6장 + 궁궐 배경 2장(근정전풍 정전, 박석과 단청)
  • 프롬프트: 소품을 초코바로, 「첫 프레임부터 초코바를 물고 있다」 명시, 배경을 궁궐로

2회차. 왼쪽은 첫 프레임의 담배, 오른쪽은 목 앞의 솟은 자국 왼쪽 0.0초, 오른쪽 2.0초. 목 앞쪽에 솟은 자국은 원본 인물의 목 문신 자리와 겹친다

  • 「첫 프레임부터」라고 써도 첫 0.5초는 담배였다. 앞 0.6초를 잘라내 봤지만, 잘라낸 영상에서도 초코바 옆에 흰 담배가 함께 들려 있었습니다
  • 목에 문신 모양대로 요철이 생겼다. 색은 빠지고 윤곽만 피부 위에 남은 모양입니다
  • 궁궐은 색만 바뀌었다. 벽돌 건물이 붉은 벽과 단청 무늬로 바뀌었지만, 아치 문과 창문 배치는 원본 그대로였습니다

춘식이로 바꿀 때는 담배가 고구마로 깔끔하게 바뀌었는데 이번에는 왜 안 되는지가 궁금했습니다. 제 추정은 이렇습니다. 춘식이는 사람과 생김새가 전혀 달라서 모델이 손과 몸을 처음부터 다시 그립니다. 사람을 사람으로 바꾸면 얼굴 교체에 가까워져서 손가락 사이의 담배나 목 문신 윤곽 같은 원본 세부가 그대로 남습니다.

3회차. 담배와 같은 모양의 빼빼로

  • 이미지: 주인공 1장 + 탈춤꾼 5장 + 궁궐 1장 + 빼빼로를 손가락에 끼운 손 1장
  • 프롬프트: 소품을 빼빼로로, 「담배, 연기 없음」 한 줄

원본 모양을 이길 수 없다면 원본 모양에 맞추자는 생각으로, 담배와 같은 가는 막대인 빼빼로를 골랐습니다.

빼빼로 레퍼런스와 바나나 레퍼런스 왼쪽이 3~5회차에 쓴 빼빼로, 오른쪽이 6회차부터 쓴 바나나. 둘 다 Codex로 만들었다

3회차. 왼쪽은 흰 화면으로 시작하는 첫 프레임, 오른쪽은 근정전 앞 원경으로 바뀐 와이드 장면 왼쪽 0.0초, 오른쪽 22.5초. 원본은 군중을 가까이서 잡은 장면인데, 궁궐 사진의 구도를 그대로 가져와 군중이 작게 일렬로 섰다

  • 첫 프레임의 담배는 사라졌습니다. 대신 흰 화면에서 서서히 밝아지는 0.2초가 새로 생겼습니다
  • 군중이 처음으로 한복으로 나왔습니다. 바꾼 건 소품뿐이라 이유는 모릅니다
  • 와이드 장면이 궁궐 사진의 구도를 따라갔습니다. 배경 이미지가 배경뿐 아니라 카메라 위치까지 바꿔 버렸습니다

원본을 다시 보다 - 화면 녹화의 함정

흰 화면과 첫 몇 프레임의 담배가 계속 나와서 원본을 한 프레임씩 열어 봤습니다. 원본 첫 0.3초(12프레임)에 YouTube 앱 화면이 덮여 있었습니다. 원본이 휴대폰 화면 녹화본이라 영상 제목, 일시정지 버튼, 재생 막대가 찍혀 있었던 겁니다. 모델은 이 프레임들을 제대로 바꾸지 못했고, 1~3회차 첫 프레임 문제는 이 구간 때문인 것으로 보입니다.

그래서 순서를 바꿨습니다. object-swap으로 원본부터 정리한 뒤 motion-transfer를 돌리기로 했습니다.

  • object-swap(720p) 프롬프트: 담배를 빼빼로로 바꾸고, 목과 손의 문신을 지우고, 나머지는 그대로
  • 결과: 문신은 깨끗하게 지워졌습니다. 담배는 입에 물고 있는 0~0.7초만 바뀌고, 손을 내린 0.8~1.0초에는 흰 담배가 그대로 남았습니다. 연기도 남았습니다
  • 정리본의 앞 0.5초를 잘라 YouTube 화면 구간을 없앴습니다. 이후 회차는 모두 이 영상(27.22초)을 입력으로 씁니다

4회차. 정리한 원본 + 카메라 고정 문장

  • 입력: 정리한 원본
  • 이미지: 3회차와 같은 8장
  • 프롬프트: 「궁궐 사진의 구도는 쓰지 않는다. 모든 장면은 원본의 카메라 위치와 크기를 유지하고, 궁궐은 군중 뒤와 위에만 보인다」

4회차. 빼빼로를 물고 있는 장면과 입에서 연기가 나오는 장면 왼쪽 0.4초, 오른쪽 1.3초. 빼빼로를 담배처럼 물었다 떼고, 입에서 흰 연기를 내뿜는다

  • 첫 프레임 담배, 목, 와이드 장면 구도는 모두 해결됐습니다
  • 빼빼로를 담배처럼 피웠습니다. 물고, 떼고, 입을 오므려 내뿜는 원본 동작을 그대로 따릅니다
  • 정리본에 남아 있던 연기가 그대로 옮겨졌습니다

5회차. 배경은 원본 그대로

  • 이미지: 궁궐을 빼고 7장
  • 프롬프트: 궁궐 문단을 지우고 「원본 배경, 건물, 바닥을 그대로 둔다」 한 줄

배경까지 바꾸라고 하니 다른 게 흐트러지는 것 같아서 배경 지시를 뺐습니다.

5회차. 빼빼로를 입에 문 채 연기가 나는 장면, 4회차 얼굴, 5회차 얼굴 왼쪽 5회차 1.3초, 가운데 4회차 1.0초, 오른쪽 5회차 1.0초. 5회차는 막대를 계속 입에 물고 있고 얼굴도 달라졌다

  • 군중이 처음부터 끝까지 한복으로 맞춰졌습니다
  • 빼빼로를 아예 입에 문 채로 다녔습니다. 초콜릿 색도 안 보여서 빼빼로로 읽히지 않습니다
  • 주인공 얼굴이 눈이 가늘고 둥글게 바뀌었습니다

object-swap으로 담배만 지우기

빼빼로를 포기하고, 정리본에서 담배만 지워 빈손으로 만들어 보기로 했습니다. 빈손 레퍼런스는 원본 0.85초 프레임을 Codex에 주고 손가락 사이만 비워서 만들었습니다.

  • 첫 클로즈업의 담배와 머리 옆 연기 덩어리는 지워졌습니다
  • 두 번째 흡연 장면(14.5~16.3초)은 그대로였습니다. 군중 사이에서 주인공이 작게 잡히는 장면인데, 인물이 작으면 object-swap이 손을 대지 않는 것으로 보입니다
  • 구간을 잘라 다시 돌리고 이어 붙이는 방법도 있었지만, 이음매가 거슬려서 쓰지 않았습니다

6회차. 담배 대신 바나나

  • 입력: 문신만 지운 정리본
  • 이미지: 주인공 1장 + 탈춤꾼 5장 + 반쯤 깐 바나나를 든 손 1장
  • 프롬프트: 「손에 들고 입에 가져가는 것은 반쯤 깐 바나나다. 입에 가져갈 때마다 한 입 베어 물고 씹어서 조금씩 짧아진다」. 담배, 연기, 빼빼로라는 단어는 넣지 않았다

모양이 전혀 다른 소품이라 원본 모양에 밀릴까 걱정했는데, 반대였습니다.

  • 첫 프레임부터 바나나를 먹었습니다. 떼고 나면 볼이 부풀어 씹는 모양이 되고, 연기 장면이 씹는 입 모양으로 바뀌었습니다
  • object-swap이 못 지운 두 번째 흡연 장면도 바나나를 먹는 장면이 됐습니다

6회차. 10초의 한복 군중과 21초 군무 장면의 손 왼쪽 10초, 오른쪽 21초 확대. 군무 구간에서 옷 모양이 달라지고, 옷깃을 쥔 주먹마다 주황색과 빨간색 덩어리가 붙었다

  • 군무 구간에서 옷이 갑자기 바뀌고, 군중의 손에 주황색 덩어리가 생겼습니다. 바나나 지시가 군중에게 번진 것으로 보입니다

7회차. 군중은 맨손

  • 프롬프트: 6회차 + 「바나나는 주인공만 든다」, 「탈춤꾼들은 아무것도 들지 않은 맨손이다. 옷깃(jacket collar)을 쥘 때도」

7회차. 입 앞의 큰 흰 김과 흰 블레이저로 돌아간 군중 왼쪽 1.3초, 오른쪽 10초. 손은 고쳐졌지만 입김과 블레이저가 돌아왔다

두 줄을 더했을 뿐인데 손 말고 다른 것까지 달라졌습니다. 손은 맨손이 됐지만, 군중은 다시 흰 블레이저가 됐고 입 앞에 큰 흰 김이 나왔습니다. 주인공 얼굴도 갸름해졌습니다. 추가한 문장의 「jacket」이 블레이저를 끌어왔을 수도 있지만 확인하지 못했습니다.

8회차. 얼굴 클로즈업 + 「보여야 할 것」을 쓰기

  • 이미지: 7회차 7장 + 제 사진에서 얼굴만 잘라 키운 1장(@Image 8)
  • 프롬프트:
    • 「클로즈업에서는 @Image 8과 같은 얼굴」
    • 「클로즈업 동안 입을 다물고 씹는다. 숨을 내쉴 때도 입과 얼굴 바로 앞에 뒤의 탈춤꾼들이 또렷하게 보인다」
    • 뒤의 사람들을 students 대신 masked dancers로 부름. 「학생」이라는 단어가 교복을 끌어올까 봐서다

8회차. 입김 없이 씹는 얼굴과 여전히 블레이저인 군중 왼쪽 1.3초, 오른쪽 10초. 입김은 사라졌지만 군중은 회청색 속옷에 가슴 배지가 달린 흰 블레이저다

  • 입김이 사라졌고, 제 눈에는 얼굴도 7회차보다 원래 얼굴에 가까워졌습니다
  • 군중은 여전히 흰 블레이저였습니다

9회차. 앞이 열린 옷 - 최종본

여기서 결정적인 걸 알아챘습니다. 원본 군중은 블레이저 앞이 열려 있고, 군무에서 그 옷깃을 움켜쥡니다. 그런데 제 탈춤꾼 레퍼런스는 고름으로 여민 저고리에 허리띠를 맨 옷이었습니다. 춘식이와 라이언 때 「라이언에게 원본 교복을 입혀서」 몸통 얼굴 문제를 풀었던 것과 같은 상황이었습니다.

앞이 열린 흰 겉옷을 입은 탈춤꾼 레퍼런스 5장과 얼굴 클로즈업 왼쪽부터 얼굴 클로즈업(@Image 8), 탈춤꾼 정면, 뒤, 카메라 쪽 인사, 옆 인사, 하늘 보기. 고름과 허리띠를 없애고 앞을 열었다. 양쪽 깃이 라펠처럼 내려오고, 안의 남색 속옷이 원본의 셔츠와 넥타이 자리에 온다

  • 이미지: 주인공 1장 + 앞이 열린 탈춤꾼 5장 + 바나나 1장 + 얼굴 1장
  • 프롬프트: 탈춤꾼 옷 설명을 「무릎 길이 흰 모시 겉옷을 앞을 열어 입고, 고름과 허리띠는 없다. 깃이 라펠처럼 내려오고 안에 남색 속옷이 보인다」로, 옷깃 쥐는 동작은 「겉옷의 열린 앞자락을 잡는다」로 바꿨다
1
2
3
4
5
6
@Image 2: the surrounding dancer: ... a knee-length white ramie hanbok outer coat
worn open at the front with no ties and no sash, its two white collar bands running
down the open front edges like lapels, a plain dark navy inner shirt showing as a
vertical strip down the chest ...
@Image 6: ... head tilted back looking up at the sky,
both hands grabbing the two open front edges of the coat.

군중 옷이 처음부터 끝까지 레퍼런스대로 나왔고, 군무 구간에서도 바뀌지 않았습니다. 큰 입김이 없는 것, 바나나, 맨손도 그대로 유지됐습니다. 이 회차를 최종본으로 정했습니다.

최종본에 남은 문제

9회차 남은 문제. 군중 가슴의 흰 동그라미, 24초에 손이 보이지 않는 주인공 왼쪽 10초, 오른쪽 24.2초 확대. 가슴의 흰 동그라미는 원본 교복의 학교 배지 자리다

  • 가슴 장식: 군중 겉옷 가슴에 흰 동그라미가 남았습니다. 원본 블레이저의 배지 자리입니다. 이것도 「원본 모양이 남는다」의 한 예입니다
  • 24초 손: 주인공이 손을 옷 속으로 집어넣은 것처럼 손이 보이지 않습니다
  • 2초 입김: 숨을 내쉬는 순간 짧게 김이 나갑니다. 8회차의 「입 앞이 또렷하게 보인다」 문장으로도 완전히 막지는 못했습니다

다시 돌리면 고칠 수도 있지만, 7회차처럼 다른 곳이 틀어질 수 있어서 여기서 멈췄습니다.

무엇이 도움이 됐나

시도 결과 효과
군중 레퍼런스를 원본 옷 모양(앞이 열린 옷)에 맞춤 9회차에서 옷이 처음부터 끝까지 일관됨 ✅ 가장 컸다
소품을 「먹는 것」(바나나)으로 바꾸고 베어 무는 동작을 씀 흡연 동작이 먹는 동작으로 바뀜, 연기 장면도 씹는 입으로 ✅
object-swap으로 원본 문신 지우기 목 요철 사라짐 ✅
원본 앞 0.5초(YouTube 화면) 잘라내기 4회차부터 첫 프레임 담배와 흰 화면이 사라짐 (원본 정리와 함께 적용) ✅
「원본 카메라 위치와 크기를 유지한다」 문장 4회차에 와이드 장면 구도가 원본으로 돌아옴 ✅
배경 지시를 빼고 원본 배경 유지 5회차에 처음으로 군중이 처음부터 끝까지 한복 △ 한 번 관찰
얼굴 클로즈업 레퍼런스 추가 얼굴이 원래 얼굴에 가까워짐 △ 한 번 관찰
「보여야 할 것」을 쓴 입김 문장 8, 9회차에 큰 김은 사라짐, 짧은 김은 남음 △
담배와 같은 모양의 소품(빼빼로) 모양은 맞지만 담배처럼 피움 ❌
「NO smoke」, 「첫 프레임부터」 같은 지시 바뀌지 않음 ❌
궁궐 배경 이미지 색만 바뀌거나, 구도까지 사진을 따라감 ❌
object-swap으로 담배 지우기 클로즈업만 일부 지워지고 작게 잡힌 장면은 그대로 ❌

정리하면 프롬프트 문장을 다듬는 것보다 레퍼런스 이미지를 원본에 맞추는 것과 원본을 미리 정리하는 것이 효과가 컸습니다. 문장 한두 줄을 바꾸면 의도하지 않은 곳까지 달라졌습니다.

잘 안 될 때

군중 옷이 레퍼런스대로 안 나온다

원본 옷의 실루엣(앞이 열렸는지, 깃이 어디 있는지, 배지가 어디 있는지)을 먼저 봅니다. 레퍼런스를 그 실루엣에 맞춰 다시 만듭니다. 특히 군무에서 손으로 잡는 부분(옷깃)이 레퍼런스에도 있어야 합니다.

첫 몇 프레임에 원본이 남는다

원본 첫 프레임에 앱 화면, 자막, 페이드가 있는지 한 프레임씩 확인합니다. 화면 녹화본이면 UI가 찍힌 구간을 잘라내고 넣습니다.

사람을 사람으로 바꾸면 원본 세부가 남는다

담배, 문신 같은 원본 세부가 새 얼굴과 옷 아래에 남습니다. 문신처럼 지워야 할 것은 object-swap으로 원본에서 먼저 지우는 편이 나았습니다. 다만 화면에서 작게 잡힌 인물에는 object-swap이 잘 듣지 않았습니다.

한 줄 고쳤는데 다른 곳이 틀어진다

seed가 없어서 생기는 무작위성과, 새 문장의 단어가 다른 곳으로 번지는 것이 섞여 있습니다. jacket, students처럼 원본 옷을 떠올리게 하는 단어는 피했습니다. 고친 뒤에는 이전 회차에서 잘 나온 항목도 다시 확인합니다.

결과를 1초 간격으로만 보면 놓친다

첫 1초는 프레임 단위로, 담배나 연기처럼 짧게 나오는 건 확대해서 봅니다. 저는 1초 간격으로 보고 「담배 없음」이라고 했다가 첫 5프레임을 놓쳤습니다.

참고 자료