| name | vtuber-promo |
| description | AUTORIG 캐릭터의 "버튜버가 만들어지는 과정"을 홍보 쇼츠로 만든다 — 백지→파츠함 생성→무대 조립→초록 리깅 순차 등장→웹캠으로 직접 구동까지. 캐릭터 무관(character.json 일반 파싱). 트리거 — "홍보 영상/쇼츠 만들기", "제작 과정 녹화", "버튜버 만들어지는 영상", "유튜브 홍보 영상", "조립 영상", "리깅 과정 보여주는 영상". 빌드는 vtuber-autorig, 배포·방송은 vtuber-deploy. 2026-06-18 007 나비로 실증. |
VTuber 제작과정 홍보 쇼츠 (ASSEMBLY-SHOWREEL-001)
완성된 rig(rig_v0_project)를 "무에서 만들어지는 과정" 영상으로 보여주는 경로. 파이프라인 자동 단계가 아니라 on-demand 스킬(deploy의 형제) — 웹캠 피날레는 사람이 직접 해야 하기 때문.
서사 4단계(?assembly=1, 결정론 타임라인 ~16초 + 웹캠):
- 백지 → 왼쪽 파츠함에 파츠가 스태거로 생성
- 파츠가 오른쪽 무대로 날아가 부착(조립)
- 초록 리깅(메시+디포머)이 순차적으로 "입혀짐" (한 번에 안 뜸)
- 중앙 풀바디 클로즈업 → 웹캠으로 직접 구동(초록 리깅 OFF, 우측 파라미터 패널이 얼굴 따라 실시간 반응)
핵심 사실(2026-06-18 007 실증):
- 캐릭터 무관 —
character.json의 parts·meshes·deformers를 일반 파싱. 005/006/007/미래 누구나.
- pixi(GPU) 필수 — canvas(CPU 2D)는 웹캠 트래킹과 겹쳐 뚝뚝 끊김. assembly 드라이브는 pixi 유지.
- 캡처 해상도 중요 — 헤드리스 프레임 캡처는 viewport scale 2(2160²) 로. scale 1(1080²)은 2048 캔버스 다운스케일로 얼굴 뭉개짐.
⚠️ parts PNG는 gitignore라 풀런 재실행이 덮음([[autorig-rerun-overwrites-textures]]) — 작업 전 rig_v0_project/ 백업.
0. 텍스처 백업
cp -r experiments/<id>/rig_v0_project experiments/<id>/rig_v0_project.bak_promo_$(date +%Y%m%d_%H%M%S)
1. 두 가지 녹화 경로
쇼츠 = (A) 결정론 빌드 쇼츠 + (B) 웹캠 피날레를 편집에서 이어붙임. A는 자동·재현 가능, B는 사람이 연기.
A. 결정론 빌드 쇼츠 (웹캠 없음 — 자동/헤드리스 가능)
빌드→조립→리깅 리빌까지. 결정론이라 같은 명령이면 매번 동일 영상.
python3 scripts/mini_cubism_preview_server.py --project experiments/<id>/rig_v0_project --port 8050
헤드리스 결정론 MP4 레시피(agent-browser + ffmpeg, 1080² 24fps ~24초):
agent-browser --session cap set viewport 1080 1080 2
agent-browser --session cap open "http://127.0.0.1:8050/?clean=1&assembly=1"
agent-browser --session cap eval '(async()=>{await window.__miniProbe.waitReady(8000); window.__assembly.stop(); return 1})()'
agent-browser --session cap batch --json < /tmp/cap.json
ffmpeg -y -framerate 24 -i /tmp/frames/f%04d.png -c:v libx264 -pix_fmt yuv420p -crf 18 \
-preset slow -vf scale=1080:1080:flags=lanczos -movflags +faststart out.mp4
또는 그냥 Cmd+Shift+5(macOS)로 위 URL 창을 화면 녹화 — 더 빠르고 화면 픽셀 그대로라 선명.
B. 웹캠 피날레 (사람이 직접 — "이게 진짜 리깅 작업"임을 보여줌)
python3 scripts/run_mini_cubism_webcam_drive.py \
--project experiments/<id>/rig_v0_project --port 8060 --assembly
흐름: 카메라 허용 → 빌드 자동 재생(~16초, 백지→조립→리깅 입혀짐→중앙 클로즈업) → 얼굴 움직이면 캐릭터가 따라 움직임. Cmd+Shift+5로 녹화. 처음부터 다시 = 새로고침.
웹캠 시작 시 자동 처리(__assembly.showRig(false)): 초록 리깅 OFF(성능) + 모든 파츠 완전 조립 + FOCUS 정중앙 스냅 + 줌/팬 리셋(휠 조정 불필요) + 우측 파라미터 패널 복귀. → 언제 켜든 패널 정중앙·동일 크기.
2. 편집
테이크 A(빌드)+B(웹캠) 스티칭 + 음악. 자막 없이 비주얼로(주인님 선호). 세로 쇼츠는 9:16 크롭 — 단 빌드 단계는 2분할(파츠함 좌)이라 가로가 넓으니 크롭 시 유의(클로즈업 구간만 9:16로 따로 뽑거나 1:1 유지).
튜닝 노브 (모두 mini_cubism_app/src/assembly.js)
| 대상 | 위치 | 기본 |
|---|
| 단계 타이밍 | const T (blank/spawnSpan/flyStart/flySpan/camStart~End/rigIn/rigRevealDur/end) | end 16.6 |
| 빌드 무대(우측) | STAGE_BUILD {cx,cy,s} | 1440,1044,0.62 |
| 최종 크기·중앙 | STAGE_FOCUS {cx,cy,s} | 1024,1003,0.82 |
| 파츠함 레이아웃 | BIN {x0,y0,w,h,cols} | 좌측 4열 |
| 리깅 등장 속도 | T.rigRevealDur | 2.8초 |
크기를 키우려면 STAGE_FOCUS.s만 올리면 됨. 드라이브 패널 폭은 scripts/templates/mini_cubism_drive.html .layout grid 첫 컬럼(300px).
트러블슈팅 (실제 겪은 것)
| 증상 | 원인 | 해결 |
|---|
| 웹캠 켜자마자 뚝뚝 끊김 | 렌더러가 canvas(CPU 2D) | pixi(GPU) — --assembly는 pixi 유지. canvas 강제 금지 |
| MP4에서 얼굴 뭉개짐(라이브는 멀쩡) | 캡처 viewport scale 1(1080²) → 2048 다운스케일 | scale 2(2160²) 캡처 후 1080 lanczos |
| 초록 리깅이 한 번에 뿅(기괴) | 구버전 | overlayReveal 순차 등장(rigRevealDur) |
| 다시 시작하면 캐릭터 우측 치우침/휠 조정 필요 | 구코드 캐시 / 빌드 중 웹캠 시작 | 하드리프레시(⌘+Shift+R). showRig가 FOCUS 정중앙+줌/팬 리셋 |
| pixi인데 초록 리깅 안 보임 | clean/obs가 #overlay-canvas 숨김 | body.rig-overlay로 빌드 단계만 표시(자동) |
| 빌드 중 우측 패널이 캐릭터 가림 | iframe이 clean 아님(에디터 UI) | 패널 모드 iframe에 clean 자동 부여(템플릿) |
| 디포머 박스가 왼쪽으로 새어나감 | bounds [x,y,w,h]를 [l,t,r,b]로 오독 | draw.js 수정됨(에디터 공통). 전체캔버스 워프는 쇼츠서 생략 |
| 파츠가 공중에 멈춤 | 빌드 완료 전 웹캠 시작 | showRig가 t=999로 완전 조립 강제 |
한계 / 다음
- 웹캠 피날레는 자동화 불가(사람·카메라 필요) → 파이프라인 자동 단계 부적합. 결정론 빌드 쇼츠(A)만 헤드리스 자동화 가능.
- 증거:
experiments/<id>/reports/assembly_showreel/. 엔진 커밋 a6807bd(+032411a).
- 9:16 세로 전용 레이아웃(파츠함 세로 재배치)은 미구현 — 필요 시 후속.