Skip to main content

Hierarchical Film Data Model

1. 구조와 소유 관계

Project, Sequence, Scene은 상위에서 하위로 이어지는 구조다. Beat와 Shot은 모두 Scene에 속하지만 서로를 포함하지 않는다. BeatShotMapping은 별도 관계 엔티티여야 하며, Beat ID나 Shot ID 배열만으로 관계를 암묵적으로 표현하지 않는다.

2. 엔티티별 책임

엔티티책임핵심 필드하위 엔티티
Project영화 전체의 정체성과 기준 설정title, logline, script, theme, genre, visualStyle, aspectRatio, targetRuntime, defaultsSequence, Project Asset Usage
Sequence하나의 서사 목적을 가진 이야기 구간title, scriptRange, narrativePurpose, startState, endState, emotionalArc, visualDefaults, soundDirectionScene, Sequence Asset Usage
Scene동일한 장소와 시간에서 진행되는 제작 단위title, scriptRange, location, time, weather, lighting, environment, layoutBeat, Shot, Mapping, Scene Asset Usage
Beat사건·변화·의도·행동·연기의 단위narrativeEvent, startState, endState, characterIntent, emotionalChange, action, performance, blocking, timingBeat Reference, Asset State
Shot카메라가 포착하는 화면 단위shotPurpose, camera, lens, composition, duration, frameDesign, motionDesignGeneration Attempt, Selected Clip
BeatShotMappingBeat와 Shot의 시간·표현 관계beatId, shotId, coverageRange, role, notes없음
EditRelationShot 연결이 만드는 의미·감정·연속성·정보 공개previousShotId, nextShotId, transitionType, intendedViewerInference, continuityRequirements없음

3. 상속과 Override

상속은 Project -> Sequence -> Scene까지의 기본값 해결 규칙이다. 이를 데이터 복사로 구현하지 않는다. 하위 엔티티가 요청될 때 상위 값을 해석해 resolved context를 만든다.

Resolved Scene Context
= Project defaults
+ Sequence overrides
+ Scene overrides

Beat와 Shot은 같은 Scene의 resolved context를 기반으로 한다. 그러나 다음 규칙을 유지한다.

  • Beat는 Shot 값을 상속하지 않는다.
  • Shot은 Beat 값을 상속하지 않는다.
  • Shot은 Mapping으로 연결된 Beat의 정보를 생성 문맥에서 참조할 수 있다.
  • 개별 필드의 unset은 상위 값을 사용한다. 상위 값을 의도적으로 비워야 하는 경우를 위한 명시적 제거 표현은 API/DB 계약에서 별도로 정의해야 한다.

권장 우선순위는 다음과 같다.

Project default < Sequence override < Scene override < entity-specific override

Shot 생성 전 Context Director가 판단하는 전체 문맥은 아래를 합성한다.

Project + Sequence + Scene + mapped Beats + Shot
+ neighboring Shots + Edit Relations
+ effective Asset State + continuity state

이 resolved context는 생성 모델의 프롬프트가 아니다. Context Director 전용 입력이며, Renderer에는 Field Routing과 Brief Compiler를 거친 부분집합만 전달한다. 데이터 상속과 생성 프롬프트 주입을 동일한 연산으로 취급하지 않는다.

4. Beat의 구조

Beat는 "무슨 일이 일어나며 무엇이 달라지는가"를 정의한다. 하나의 Beat는 카메라 수나 생성 클립 길이에 종속되지 않는다.

영역예시 필드역할
NarrativenarrativeEvent, narrativeGoal사건과 서사적 의미
State changestartState, endState, emotionalChangeBeat 전후의 차이
Character intentintention, obstacle, relationshipState인물의 목적과 관계
ActionprimaryAction, reaction화면에서 일어나는 행동
Performancegaze, expression, posture, gesture, tempo, intensity행동이 연기로 드러나는 방식
Blockingpositions, movement, interaction targets공간에서의 동선과 배치
Timingduration, internal cuesBeat 내부 변화의 시간 정보
Referencesreference assets or media연기·행동·분위기 참조

Performance는 Beat의 하위 영역으로 독립 보존한다. 예를 들어 "A가 거짓말을 알아챈다"는 Narrative Event이고, "0.7초간 응시한 뒤 천천히 시선을 내린다"는 Performance다. 두 정보를 분리해야 서로 다른 모델·Shot에서 적절히 조합할 수 있다.

5. Shot의 구조

Shot은 서사의 단위가 아니라 화면과 카메라의 단위다.

영역예시 필드
목적shotPurpose, viewerInformation, emphasis
카메라cameraType, position, height, angle
광학lens, focalLength, depthOfField
구도framing, subjectPlacement, lookDirection
움직임motionType, path, speed, stabilization
시간duration, inPoint, outPoint
시작 프레임frameDesign: startingMoment, startState, placement, pose, expression, lighting, visibleProps
시간적 전개motionDesign: actionFlow, cameraFlow, performanceFlow, gazeFlow, emotionalProgression, temporalRhythm
생성 제어promptOverrides, referenceOverrides, modelProfile
결과attempts, selectedClip

frameDesign은 시작 이미지 생성의 입력이고, motionDesign은 시작 이미지로부터 전개되는 영상 생성의 입력이다. startImagePromptvideoPrompt는 편집 가능한 원천 데이터가 아니라, 해당 구조와 Context Director 결과에서 컴파일된 실행 산출물로 취급하는 것이 원칙이다.

6. Beat-Shot Mapping 계약

단순한 shot.beatIds는 Shot 안에서 Beat가 어떻게 표현되는지 기록하지 못한다. Mapping은 최소한 다음을 가져야 한다.

필드설명
beatId연결할 Beat
shotId연결할 Shot
coverageStartMs, coverageEndMsShot 내부에서 Beat가 표현되는 시간 범위. 초기에는 선택값일 수 있음
rolePRIMARY, SECONDARY, TRANSITION, CONTEXT 등 표현 목적
notesShot에서 강조하거나 생략해야 할 요소
sortOrder같은 Shot에서 Beat 문맥을 합성하는 순서

예시: Shot 3이 Beat 2의 발견과 Beat 3의 망설임을 모두 다룰 수 있다.

ShotBeatcoverageRangerole
Shot 3Beat 2: B를 발견0-2.5sPRIMARY
Shot 3Beat 3: 망설임2.5-5.0sTRANSITION

반대로 하나의 Beat가 와이드 샷, 리액션 클로즈업 등 여러 Shot에 매핑될 수 있다. Beat의 자체 타이밍과 Shot 안의 coverage 범위는 서로 다른 정보이므로 모두 보존한다.

7. Edit Relation 요약

Beat-Shot Mapping은 "어떤 Shot이 어떤 Beat를 표현하는가"를 기록한다. Edit Relation은 "한 Shot 다음에 다른 Shot이 올 때 무엇을 의미하는가"를 기록한다. 두 관계는 서로 대체할 수 없다.

필드설명
previousShotId, nextShotId의미를 생성하는 방향성 있는 Shot 쌍
transitionTypecut, dissolve 등 편집 연결 방식
intendedViewerInference연결을 통해 관객이 추론해야 하는 의미
emotionalEffect의도한 감정 효과
continuityRequirements시선, 동작, 위치, 소품 등 유지 조건
contrastOrMatch시각·행동·의미의 대비 또는 일치
informationRevealed이 연결에서 새롭게 공개되는 정보

상세 계약은 Edit Relation 문서를 따른다.

8. 데이터 무결성 규칙

  1. Sequence, Scene, Beat, Shot의 순서는 별도 정렬 키로 관리한다.
  2. Mapping의 양 끝점은 같은 Scene에 속해야 한다.
  3. 삭제된 Beat 또는 Shot의 Mapping은 함께 정리하거나 복구 가능한 상태로 보존하는 정책이 필요하다.
  4. Selected Clip은 하나의 Shot에서 여러 개가 될 수 없도록 기본 제약을 둔다. 대체 선택본이 필요하면 명시적 버전 또는 alternate 역할을 둔다.
  5. 생성 Attempt는 변경 가능한 현재 상태가 아니라 실행 시점의 입력 스냅샷을 참조한다.
  6. 인접 Shot용 Edit Relation은 현재 Shot 순서와 일치해야 하며, 순서 변경 시 자동 갱신하지 말고 검토 필요 상태로 표시한다.
  7. Renderer Prompt에는 director_private 또는 validator_only 정보가 포함되지 않아야 한다.
  8. 현재 범위에서 Edit Relation의 두 Shot은 같은 Scene에 속해야 한다. Scene 경계를 넘는 관계는 편집 타임라인 모델에서 별도로 결정한다.