콘텐츠로 이동

구조 노드와 The Wide Bus

비디오 튜토리얼 — 준비 중

슬롯은 자기 드로잉 주위에 네 개의 계층 노드를 세울 수 있다. 이 페이지는 각각이 무엇을 하는지, 어떻게 정렬되는지, 그리고 — Node View가 읽을 만한지를 결정하는 부분 — OSA가 그것들을 어디에 두는지에 대한 것이다.

Inspector의 Hierarchy Nodes

네 개의 컴포넌트

  • PegP


    트랜스폼. 이름은 <name>-P. Position(Separate / 3D Path), Scale(Separate / Locked), Enable 3D, Exclude AutoPivot을 지닌다.

  • GroupG


    스코프. 이름은 <name>-G. 그룹이 슬롯을 자족적인 유닛으로 만든다 — 그 안에 있는 모든 것은 그 안에 있다.

  • CompositeC


    집계 지점. 이름은 <name>-C. composite mode와 그 Order를 지닌다.

  • BackdropBD


    가지를 둘러싸는 Node View의 사각형, 색과 메모를 지닌다. 순전히 정리용이며 — 레이아웃 엔진이 안쪽에서 바깥으로 크기를 재는 대상이다.

Peg Order: 부모냐 자식이냐

Peg와 Group은 자리를 바꿀 수 있고, Peg 블록의 Order 콤보가 어느 쪽인지 정한다:

Order 결과 이렇게 읽는다
Outside Group Peg → Group → 내용 peg가 그룹 전체를 움직인다
Inside Group Group → Peg → 내용 peg가 그룹 스코프 안에서 내용을 움직인다

Details 열은 언제나 당신이 한 선택을 반영한다: (Peg > Group > Read) 또는 (Group > Peg > Read).

Composite Order와 모드

Composite 블록도 같은 Order 선택(Inside Group / Outside Group)을 지니고, 더 중요하게는 composite mode를 지닌다:

모드 하는 일
As Bitmap 입력들을 비트맵으로 평탄화한다
As Seamless Bitmap 같지만, 인접한 아트에 이음매 아티팩트가 생기지 않는다
As Vector 컴포지트를 지나도 벡터 데이터를 유지한다
Pass Through 합성하지 않는다 — 입력을 위로 넘긴다

이것들은 인덱스가 아니라 키워드를 쓴다

이 레이블들과 Harmony의 저장 값 사이의 대응은 추측이 아니라 Harmony 24 설치본에서 측정한 것이다 — 모든 도구가 지니고 다니던 그 맵의 네 항목 중 셋이 틀려 있었다(As Vector가 Seamless의 값을 쓰고 있었고, Pass Through가 Vector의 값을 쓰고 있었다). 컴포지트가 자기 레이블과 다른 모드처럼 굴면 그것이 의심할 부류의 버그이고, OSA는 측정된 쪽에 서 있다.

두 개의 계층, 나란히

Node View는 개의 그래프를 동시에 담고, OSA도 그것을 둘로 배치한다:

계층 연결 규칙
Input / Transform 🟢 초록 Peg → 자식들 들여쓰기가 자식을 뜻한다
Output / Composite 🔵 파랑 Comp → 아래 형제들 컴프는 자기 아래의 형제들을 집계한다

둘이 분리된 이유는 하나의 peg가 여러 개의 서로 다른 합성을 구동할 수 있기 때문이다. 변형과 합성은 같은 트리가 아니고, 그것을 하나로 그리는 것이 손으로 만든 그래프를 읽을 수 없게 만드는 원인이다.

컴포지트가 집계하는 것

컴프가 자식들을 모으느냐 형제들을 모으느냐는 오직 한 가지에 달려 있다: 그 슬롯에 스코프를 만드는 그린 컨테이너가 있느냐.

슬롯이 가진 것 컴프가 집계하는 것
C 단독 아래 형제들
D-C 아래 형제들
BD-C, BD-D-C 아래 형제들 — 백드롭은 시각적이다
P-C, G-C, P-D-C, BD-P-C 자식들

그린 컨테이너는 PG뿐이다. 백드롭은 상자를 그릴 뿐 어떤 연결도 소유하지 않으므로, 누가 무엇을 집계하는지를 절대 바꾸지 않는다.

컴프가 같은 레벨에서 다른 컴프를 만나면 현재 블록이 flush된다 — 그것이 블록 경계다.

흐름과 포트 순서를 포함한 전체 규칙: 집계와 sibling aggregator.

The Wide Bus

OSA는 Harmony가 내키는 곳에 노드를 떨어뜨리지 않는다. Node View를 논리적 행렬로 다루고 공간을 미리 할당하므로, 그래프가 쌓이는 대신 왼쪽에서 오른쪽으로 흐른다.

차지하는 것
맨 윗줄 마스터 peg / 마스터 group / 마스터 드로잉 — 슈퍼 노드가 가진 것
가운뎃줄 작업 현장: 드로잉, 그룹, 미니 노드가 나란히
아래 컴포지트, 자기가 집계하는 것 아래로 오프셋
FX 띠 백드롭이나 슈퍼 노드 자신의 직계 자식인 컴포지트 아래의 다섯 예약 슬롯(OP, CUT, BLD, GLW, BLR)

FX 띠는 필요할 때 할당되는 것이 아니라 예약되어 있으므로, 나중에 이펙트를 추가해도 나머지 그래프가 옆으로 밀리지 않는다.

늘어나는 백드롭

백드롭은 최소 너비 세 노드 열로 태어나고, 마지막 콘텐츠 노드와 최종 컴포지트 사이에 전술적 빈 공간을 의도적으로 남긴다. 그 틈은 부주의가 아니다 — 나중에 레이아웃을 깨지 않고 새 노드를 끌어다 넣는 자리다.

마트료시카: 중첩된 백드롭

백드롭은 백드롭을 담을 수 있고, 크기는 아래에서 위로, 안쪽에서 바깥으로 계산된다.

상수 무엇인가
COL_WIDTH 200 px 한 열
ROW_HEIGHT 80 px 한 행
PAD_SIDE 50 px 백드롭 좌우 여백, 양쪽 각각
PAD_TOP 100 px 백드롭 헤더 공간
PAD_BOTTOM 150 px 컴프와 FX 영역 공간
GAP 20 px 형제들 사이 간격

너비

  • 잎(드로잉, 또는 백드롭 없는 peg)은 1열;
  • 중첩된 백드롭은 sum(children) + gaps + 2 × PAD_SIDE를 정수 열로 올림;
  • 부모 백드롭은 자식들의 계산된 너비에 같은 공식을 쓴다.

높이

  • 잎은 2행(peg 행 + 드로잉 행);
  • 백드롭은 PAD_TOP + max(children heights) + PAD_BOTTOM.

근본 규칙: 중첩된 백드롭은 절대 부모에게서 너비를 물려받지 않는다. 각자가 자기 내용을 재고, 부모가 자식들에 맞춘다. 그것이 깊게 중첩된 장면이 잘리거나 겹치는 대신 전부 보이는 상태로 나오는 이유다.

Root-BD  (computed last)
├── Nested-BD-A  (4 cols)
│   ├── D1  (1 col)
│   └── D2  (1 col)          → inner 2 cols + gap → 4 with padding
├── Nested-BD-B  (6 cols)
│   ├── Sub-BD  (3 cols)
│   │   └── D3  (1 col)
│   └── D4  (1 col)          → inner 5 cols + gap → 6 with padding
└── Sibling-Peg (2 cols)

Root inner = 4 + 6 + 2 + gaps = 14 cols
Root total = max(14, MIN_WIDTH) + padding

백드롭 색과 메모

Backdrop 블록

Backdrop 블록은 이름, 견본, 메모를 지닌다. 색은 Node View에서 다시 열어도, 남에게 넘겨도 살아남는 유일한 것이다 — 처음 보는 사람이 3초 안에 얻길 바라는 읽음에 쓰라.