Communitygithub.com

Daham0/blender-previs-one-take

用户给一张参考图或一句描述,技能直接产出 3D 白模运镜预演视频;与用户逐版用大白话修改确认后,再按白模实测的相机运动写详细视频提示词;最终交付「白模视频(运动参考)+ 提示词」,一起交给 Seedance 2.5 等视频模型出成片。

blender-previs-one-take란 무엇인가요?

이 스킬은 '원테이크(One-Take) 화이트모델 프리비즈(Previsualization) 워크플로우'를 제공합니다. 사용자가 참고 이미지나 한 줄의 설명을 입력하면, 스킬이 자동으로 3D 화이트모델(White-Model) 카메라 움직임 프리비즈 영상을 생성합니다. 이후 사용자가 일상적인 언어('더 높게', '의자가 다리에 부딪혔어')로 수정을 요청하면, 스킬은 이를 기술 파라미터로 변환하여 반복적으로 수정합니다. 최종 확정 후에는 화이트모델에서 측정된 실제 카메라 좌표를 기반으로 상세한 비디오 생성 프롬프트를 작성하고, '화이트모델 영상(움직임 참고) + 프롬프트'를 함께 Seedance 2.5와 같은 비디오 생성 모델에 전달하여 최종 영상을 제작합니다. 이 스킬은 Claude Code, Cursor, Codex 등 AI 에이전트 플랫폼에서 실행되며, Blender(고정밀) 또는 Three.js(웹 기반) 환경을 자동 탐지하여 적응합니다. 또한 단조로운 움직임, 피사체 이탈, 관통, 천장 관통 등 4가지 자동 검증을 수행하여, 사용자가 프롬프트 엔지니어링 없이도 부드럽고 안정적인 롱 테이크(Long Take) 영상을 얻을 수 있도록 합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Daham0/blender-previs-one-take/tree/HEAD

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

원테이크 화이트모델 프리비즈 Skill

한 줄 요약: 사용자가 그림이나 말을 주면, 이 스킬이 화이트모델 영상을 제작합니다. 화이트모델이 확정된 후에 프롬프트를 작성하고, 화이트모델 영상을 모션 참고 자료로 함께 비디오 모델에 전달합니다. 롱 테이크는 운에 맡기는 프롬프트가 아닌, 카메라가 어떻게 움직일지 먼저 계산하고 사용자가 직접 확인하는 방식으로 완성됩니다.

0. 실행 방식 (외부에는 항상 이 세 단계만 설명)

  1. 사용자가 참고 이미지 또는 한 줄 설명("10초, 내 뒤에서 측면 전방으로 돌아, 테이블 위 물건들이 먼저 떠올라")을 제공합니다.
  2. 스킬이 3D 화이트모델 카메라 움직임 프리비즈 영상을 생성하고, 함께 수정하여 사용자가 "이 느낌이야"라고 말할 때까지 반복합니다.
  3. 확정 후 두 가지를 전달합니다: 화이트모델 프리비즈 영상 + 상세 비디오 프롬프트. 이 두 가지를 함께 Seedance 2.5에 넣어 최종 영상을 제작합니다.

내부적으로 어떻게 계산하는지(씬, 좌표, 검증)는 스킬의 몫이며, 기술적 세부 사항을 사용자에게 요구하지 마십시오. 전체 진입 규칙, 필수 질문 항목, 일상 언어 변환표는 references/00-flow-intake-iteration.md를 참조하십시오. 이것이 이 스킬의 프로세스 총론이며, 트리거될 때마다 먼저 읽어야 합니다.

1. 6단계 메인 프로세스 (순서 변경 불가)

단계사용자 역할당신이 전달해야 할 것통과 조건
① 요청 접수참고 이미지 / 한 줄 설명 제공3문장으로 "내가 이해한 장면"을 요약. 피사체, 카메라 방향, 부유/무중력 여부 포함사용자가 "맞아" 또는 한 문장 수정; 화면비 및 길이 확인
② 환경 탐지둘 중 하나 선택 (설치 / 미설치)check_blender.py 탐지 결과 + 한 줄 경로 설명경로가 명확하고 분기 A 또는 B로 진입
③ 첫 번째 화이트모델 영상영상 시청재생 가능한 mp4/webm + 3–4장 키프레임 + "어디가 이상한지 바로 말씀해주세요"실제 영상이 생성되어 전달됨. 좌표표만 전달 = 위반
④ 대화형 반복일상 언어로 의견 제시v2/v3… 새 버전 영상 + 1줄 변경 설명매 라운드 한 가지만 수정; 사용자가 명확히 승인
⑤ 확정 및 프롬프트 작성느낌이 맞는지 확인4가지 검증 RESULT: PASS + 6개 카테고리 프롬프트검증이 PASS되지 않으면 프롬프트 작성 불가
⑥ 최종 결과물 전달자료를 가져가 영상 제작화이트모델 영상 + 프롬프트 + 업로드 규격 (영상1=모션 참조, 이미지1=화면 참조)프롬프트 좌표가 모두 실측 JSON에서 가져와야 함

단계 ③④는 여러 번 반복될 수 있습니다. 이것이 이 스킬의 핵심 가치입니다: 카메라 움직임 문제를 3D에서 해결하고, 비디오 모델에서 뽑기(gacha)로 해결하지 않는 것입니다.

2. 6가지 철칙

  1. 순서 철칙: 씬 구축 → 화이트모델 영상 → 사용자 확인 → 프롬프트 작성. 사용자가 영상을 보기 전에 프롬프트를 작성하면 폐기됩니다.
  2. 프롬프트는 사용자의 참고 이미지만 화면 기준으로 삼습니다. 화이트모델은 화면 참조가 아닙니다. 움직임, 타이밍, 좌표만 고정합니다. 화질, 형태, 조명, 색상은 모두 참고 이미지로 돌아갑니다.
  3. 카메라 움직임은 단방향 연속적이어야 합니다. 회전 각도는 단조 증가 또는 감소해야 하며, 좌우로 왕복하는 것은 금지됩니다. 왕복 시 실패로 간주하고 곡선을 다시 조정합니다.
  4. 피사체는 절대 화면 밖으로 나가지 않습니다. 프레임별 투영 검증을 통해 피사체 NDC가 안전 프레임 내에 있어야 합니다. 피사체가 상승할 때 카메라가 동시에 위로 올라갑니다.
  5. 관통(穿模) 제로. 임의의 두 움직이는 물체가 임의의 프레임에서 간격이 임계값보다 작으면 실패입니다. "먼저 비켜난 다음 상승" "가벼운 물체 먼저, 무거운 물체 나중에" 순서로 해결하며, 밀도로 억지로 채우지 않습니다.
  6. 사용자는 사람 말만 합니다. 사용자가 "더 높게" "의자가 다리에 부딪혔어"라고 말하면, 당신이 파라미터로 번역하고 해당 항목만 수정합니다. 사용자에게 극각, NDC, AABB를 설명하지 마십시오.

3. 환경 탐지 및 경로 선택 (Tip 1: 탐지 및 모델링)

check_blender.py
  ├─ 설치됨 → 분기 A (Blender, 정밀도 최고, 프레임별 실측 데이터 내보내기 가능)
  ├─ 미설치
  │    ├─ 사용자 설치 동의 → 포터블 버전 안내 (05-blender-setup.md) → 분기 A
  │    ├─ 사용자가 다른 버전/경로 있음 → 경로 입력 → 분기 A
  │    └─ 사용자 설치 거부 (또는 환경 권한 없음, 시간 부족) → 분기 B (Three.js 웹 화이트모델)
  └─ 분기 B도 동일한 6단계 전체 프로세스 진행. "모션 참조"만 얻고, 검증 및 프롬프트 작성 규격은 완전히 동일

설치 안내 대화 방식 – 한 번에 하나의 결정 포인트만 제시하고, 긴 글을 쓰지 마십시오:

현재 Blender가 없습니다. 두 가지 방법이 있습니다:

  1. 포터블 버전을 설치합니다 (약 300MB, 시스템 드라이브가 아닌 곳에 설치, 레지스트리 미기록, C 드라이브 미점유, 전체 삭제 가능) – 정밀도 최고, 프레임별 실측 좌표 내보내기 가능;
  2. 설치하지 않고 Three.js로 브라우저에서 화이트모델 카메라 움직임 영상을 생성합니다 – 몇 분 안에 카메라 움직임 확인 가능, 좌표 정밀도는 약간 낮습니다. 어느 것을 선택하시겠습니까?

사용자가 1 선택 → references/05-blender-setup.md 참조; 2 선택 → references/06-threejs-fallback.md 참조.

4. 단계별 세부 사항

① 요청 접수

references/00-flow-intake-iteration.md §1–§3 읽기: 입력이 이미지인지, 설명인지, 둘 다인지 판단. 필수 질문은 세 가지만 (길이/화면비, 피사체 방향, 카메라 움직임 의도). 추론 가능하면 추론하고, 나머지는 knowledge/kb-levitation-office.md의 템플릿 값으로 기본값 설정. 사용자가 "아무거나"라고 하면 기본값으로 첫 번째 버전을 만들어 영상을 보여주고 문제점을 지적하게 함.

③ 첫 번째 화이트모델 영상 (Tip 3: 먼저 화이트모델 프리비즈 출력)

먼저 정적 화이트모델을 구축하고 월드 좌표를 설정 (1 단위 = 1 미터, 원점은 바닥) → 파라미터화된 카메라 궤적 → 480P 저샘플링 렌더링 → 영상 출력 + 키프레임. 이 단계에서는 프롬프트를 작성하지 않습니다. 검수: 재생 가능, 검은 프레임 없음, 피사체가 프레임 내에 있음, 방 벽/바닥 정지.

④ 대화형 반복

00 §4의 변환표에 따라 사용자의 말을 파라미터로 번역, 한 번에 한 가지만 수정, 새 버전을 만들고 1줄 변경 설명 작성 (v2: 반경 3.45→2.95, 마지막 프레임에서 피사체가 더 채워짐). 버전 명명 규칙은 00 §5 참조.

⑤ 확정 검증 및 프롬프트 작성 (Tip 2 자동 검사 + Tip 4 화이트모델 보며 프롬프트 작성)

4가지 검증 (극각 단조 / 피사체 이탈 / 그룹 간 관통 / 천장 관통)이 모두 RESULT: PASS여야 함. 그런 다음 프레임별 실측 JSON을 내보내고, 6개 카테고리에 따라 프롬프트 작성. 프롬프트의 모든 좌표는 이 JSON에서만 가져와야 하며, 수동 입력 추정은 금지. 작성 규칙은 references/04-prompt-format.md 참조.

⑥ 최종 결과물 전달 (Seedance 2.5 연동)

00 §6의 규격에 따라 전달: 화이트모델 영상은 움직임/카메라 위치/타이밍 참조로 표시, 참고 이미지는 유일한 화면 참조로 표시, 프롬프트 첫 문장은 "참조 영상의 카메라 움직임과 이륙 순서를 엄격히 복제"를 강조, 길이는 화이트모델과 일치, 카메라 움직임은 2~3초 단위로 분할.

5. 분기 A: Blender 실행 매뉴얼

  • 씬 및 좌표 규격: references/01-scene-spec.md
  • 카메라 움직임 디자인 규격: references/02-camera-motion.md
  • 계층적 무중력 및 관통 방지 타이밍: references/03-levitation-timing.md
  • 설치 및 연결: references/05-blender-setup.md
  • 스크립트:
    • scripts/build_scene_template.py — 화이트모델 씬 뼈대 생성 (방, 테이블, 듀얼 모니터, 의자, 인물 블록)
    • scripts/render_previs.py — 저샘플링 480P 프리비즈 렌더링 (EEVEE, 무재질)
    • scripts/export_cam_data.py — 프레임별 cam/시선/앙각/물체 z를 JSON으로 내보내기
    • scripts/validate_trajectory.py — 4가지 검증 (단조/이탈/관통/천장 관통)

명령줄 시퀀스 (로컬에서 테스트 완료, $BLENDER는 blender.exe 절대 경로, 경로는 프로젝트에 맞게 변경):

# 1 탐지
python scripts/check_blender.py --json

# 2 씬 생성 + 궤적 및 계층적 무중력 애니메이션 작성 (--orbit 1), 좌표 목록 내보내기
"$BLENDER" -b --python scripts/build_scene_template.py -- \
  --orbit 1 --center 0.0 0.15 --dur 10 --fps 24 \
  --a0 186 --a1 300 --r0 3.45 --r1 2.45 --z0 0.78 --z1 1.20 --l0 1.05 --l1 1.45 \
  --out "Z:/project/scene.blend" --csv "Z:/project/coords.csv"

# 3 4가지 검증 (확정 전 필수 실행), 반드시 RESULT: PASS
"$BLENDER" -b "Z:/project/scene.blend" --python scripts/validate_trajectory.py -- \
  --center 0.0 0.15 --ceiling 2.75 \
  --keys Person_Head,Person_Torso,Desk_Top,Monitor_H_Body \
  --moving Minion_,Monitor,PC_Case,Keyboard,Mouse,Person_,Desk_,Chair_

# 4 프레임별 실측 데이터 내보내기 (프롬프트 작성 시 이 데이터만 사용)
"$BLENDER" -b "Z:/project/scene.blend" --python scripts/export_cam_data.py -- \
  --out "Z:/project/cam.json" --center 0.0 0.15 --keys Person_Head,Desk_Top,Chair_Seat

# 5 프리비즈 렌더링: 먼저 16프레임 샘플로 파이프라인 검증, 그 후 전체 영상 렌더링
"$BLENDER" -b "Z:/project/scene.blend" --python scripts/render_previs.py -- \
  --out "Z:/project/previs.mp4" --res 960x540 --samples 4 --start 1 --end 240

반복 수정은 2단계 (파라미터 변경) → 5단계 (영상 출력)만 재실행하면 됩니다. 확정 후 3, 4단계를 추가 실행합니다. --keys에는 피사체 핵심 포인트 (머리, 몸통, 책상 상판, 메인 모니터)만 입력합니다. 피사체 아래 1m에 있는 부속물 (의자 좌석 등)을 포함하면 필연적으로 화면 밖으로 나가며, 이는 카메라 물리 결과입니다. --moving에는 이동하는 객체의 접두사만 입력합니다. 입력하지 않으면 관통 검사를 수행하지 않습니다. 객체는 이름의 첫 부분으로 그룹화되며, 동일 그룹 내 접촉은 계산하지 않습니다.

6. 분기 B: Three.js 웹 화이트모델

  • 방식 및 제한 사항: references/06-threejs-fallback.md
  • 직접 실행 가능: scripts/threejs_previs.html (단일 파일, CDN에서 three.js 로드, 궤적 재생, 원근/상단 뷰 전환, JSON 내보내기, webm 녹화 포함)
  • 제한 사항: 인물은 블록 근사, 재질은 모두 흰색. 움직임 방향, 구도 관계, 타이밍만 검증 가능. 조명과 질감은 검증 불가.
  • 출력: webm + 키프레임 스크린샷. 좌표는 페이지의 동일한 파라미터 세트로 내보냄.

7. 프롬프트 전달 규격 (Tip 4)

고정 6개 카테고리, 하나라도 빠지면 안 됨: 【Generation Unit】 【참고】 【연속성】 【내레이션 및 사운드】 【타임라인·좌표 포함】 【네거티브 프롬프트】.

세 가지 엄격 요구 사항:

  1. 화이트모델 보며 작성, 추측 금지: 모든 카메라 움직임 문장이 화이트모델 타임코드를 참조할 수 있어야 함. 예: "0–2.5s 피사체 등 뒤 왼쪽에서 시작, 카메라 높이 0.78m, 반경 3.45m, 극각 186°, 앙각 3.7°".
  2. 참조 역할 구분: 화이트모델 영상은 움직임만 고정, 참고 이미지는 화면 고정. 두 문장 모두 현실적으로 작성.
  3. 관통 방지는 인과 관계 순서 문장으로 작성, "관통하지 않도록 주의"가 아니라.

작성 팁, 문장 구조, 잘못된 예, 일반적인 실패 원인은 references/04-prompt-format.md 참조; 프로젝트 실측 파라미터는 knowledge/kb-levitation-office.md 참조 (템플릿 값으로 직접 재사용 가능).

8. 일반적인 오류 빠른 확인

현상근본 원인처리
카메라 좌우로 떨리거나 왕복극각 곡선 비단조 / 보간 반동단조 파라미터화 + 1차 차분 부호 검사 + LINEAR 보간
피사체 중간에 화면 밖으로피사체가 상승하지만 카메라가 따라가지 않음카메라 z와 시점 z를 추종 계수 0.8–0.95로 동기 K프레임
테이블/의자와 사람 관통사람과 의자가 동시에 이륙사람이 먼저 이륙, 의자는 0.4–0.7s 지연, 먼저 수평으로 비켜난 후 상승
장비와 테이블 충돌장비와 테이블이 동시에 이륙장비가 먼저 약 1.3m 상승 호버, 테이블은 2–3s 지연
방이 따라 떠오름시점 또는 부모 관계 오류피사체 그룹에만 z 변위 적용, 벽/바닥/창문은 정지
최종 영상 인물이 돌아서거나 정면이 깨짐방향 고정 안 됨【참고】에 등/측면 방향 고정; 네거티브에 회전, 뒤돌기, 얼굴 클로즈업 추가
최종 영상이 3D 회색 모형 같음화이트모델이 화면 참조로 사용됨【참고】에 "화이트모델은 움직임만 참조" 명시; 화풍은 실사 사진으로 고정
모델이 참조 영상을 완전히 무시첫 문장에 복제 강조 누락첫 문장에 "참조 영상의 카메라 움직임과 이륙 순서를 엄격히 복제", 카메라 움직임을 2–3s 단위로 분할
프롬프트 좌표가 화면과 일치하지 않음추정 좌표 사용⑤단계로 돌아가 실측 JSON에서 값 가져오기, 수동 입력 금지

9. 고품질 전달 체크리스트

  • 사용자가 참고 이미지 또는 설명을 제공했고, "이해한 장면"을 확인함
  • 첫 번째 화이트모델 영상이 실제로 생성되어 전달됨 (좌표만 전달한 것이 아님)
  • 반복 버전에 번호와 변경 설명이 있고, 최종 버전이 사용자의 명확한 승인을 받음
  • 4가지 검증 RESULT: PASS
  • 참고 이미지가 프롬프트에서 @이미지1로 지정되고, 화이트모델 영상은 움직임 참조로 지정됨
  • 타임라인이 초 단위로 분할되고, 각 구간에 "시작 카메라 위치 → 종료 카메라 위치 + 시점 + 앙각 + 반경" 포함
  • 계층 타이밍에 누가 먼저 이륙하는지, 누가 나중에 이륙하는지, 상승 높이, 최종 계층 높이 명시
  • 관통 방지 로직이 인과 관계 문장으로 작성됨
  • 네거티브 프롬프트 포함: 인물 방향 및 얼굴, 장비 증감 및 방향, 관통 및 낙하, 방 표류, 카메라 왕복, 스타일 변경, 자막 및 워터마크
  • 전달 시 "프리비즈는 움직임만 검증, 화면은 참고 이미지 기준"이라고 설명하고 업로드 규격 제공

10. 스크립트 파라미터 빠른 참조

스크립트주요 파라미터설명
check_blender.py--json읽기 전용 탐지; 출력 found/path/source/version
build_scene_template.py--orbit 1 --center cx cy --dur --fps --a0 --a1 --r0 --r1 --z0 --z1 --l0 --l1 --out --csv--orbit 없으면 정적 씬만 생성; 있으면 프레임별 카메라 및 무중력 키프레임 (LINEAR) 작성
validate_trajectory.py--center --ceiling --keys --moving --margin --tol종료 코드 0=PASS 1=FAIL; 4가지 검사
export_cam_data.py--out --center --keys출력 [{f,cam,rad,ang,pitch,객체:[x,y,z]}]
render_previs.py--out --res --samples --fps --start --end --engine먼저 16프레임 샘플, 그 후 전체 영상
install_blender.ps1-TargetDir -Version `-Mirror autoofficial

파라미터는 항상 -- 뒤에 Python 스크립트로 전달됩니다.

11. 외부 소개 규격 ("이 스킬이 뭘 할 수 있나요?"에 답할 때 사용)

참고 이미지 하나, 또는 한 줄의 설명을 주면, 먼저 당신의 카메라 움직임을 3D 화이트모델로 만들어 보여줍니다. 틀리면 수정하고, 만족할 때까지 수정한 후 프롬프트를 작성합니다. 화이트모델 영상과 프롬프트를 함께 Seedance 2.5에 넣어 최종 영상을 만듭니다. 탐지 모델링, 4가지 자동 검증, 화이트모델 프리비즈, 카메라 움직임에 맞춘 프롬프트 작성, 모든 것이 포함되어 있습니다. 서라운드, 상승, 무중력 무엇이든, 화면은 부드럽고 갑자기 관통하거나 변형되지 않습니다. 이 원테이크 Skill을 사용하면, 롱 테이크가 놀라울 정도로 안정적입니다. AI 영상을 만들면서, 이제 운에 맡기는 프롬프트를 배우는 데 많은 시간을 쓸 필요가 있을까요?

12. 이 스킬 자체 체크 상태

항목결과
Blender 탐지통과 (4.5.15 LTS 포터블 버전, D 드라이브)
씬 생성 + 궤적 + 무중력 애니메이션통과 (240프레임 @24fps, 좌표 CSV 저장)
4가지 검증PASS: 이탈 0 (960회 NDC 검사), 추가 관통 0, 천장 관통 0, 세 가지 단조 모두 True
프레임별 데이터 내보내기통과 (240프레임 JSON)
프리비즈 렌더링통과 (EEVEE_NEXT, 16프레임 샘플 mp4 정상)
설치 스크립트통과 (-DryRun 실측: 공식 403 → 알리클라우드 4.5.16, 약 380MB)

템플릿 기본 파라미터는 knowledge/kb-levitation-office.md를 참조하며, 새 프로젝트의 시작점으로 직접 사용할 수 있습니다.

관련 스킬