Widget Editor¶
Widget Editor는 Master Controller의 widget들을 캐릭터 위에 배치하는 곳입니다: 위치, 크기, handle 모양, 색상, 라벨.
모든 widget을 Harmony가 그리는 그대로 렌더링합니다 — 투명한 body, 검은 테두리, 흰 handle, 어두운 칩 위의 라벨. 여기서 배치한 대로 애니메이터가 받습니다.
여기서는 외관과 배치만 다룹니다. 포즈 작업은 계속 ORC에서 합니다.
여는 두 가지 방법¶
ORC 안에서 열면 에디터가 ORC 창을 뒤에서 잠급니다 — 이유를 참조하세요 — 하지만 Harmony는 절대 막지 않으므로, 열려 있는 동안에도 Node View에서 노드를 선택할 수 있습니다. Standalone에서는 잠글 ORC 창 자체가 없습니다: 에디터와 Harmony만 존재합니다.
툴바¶
MC 슬롯 (standalone 전용)¶
MC:는 로드된 것을 보여줍니다. Set은 Node View에서 선택된 Master Controller를 로드하고, ✕은 지웁니다.
Preview¶
▶ Preview는 Layout 모드(배치)와 Preview 모드(테스트) 사이를 전환합니다 — 버튼 클릭, 또는 그냥 Tab. Preview에서는 widget을 드래그하면 실제로 rig가 움직이고, visibility group 체크박스도 실제로 화면을 가리거나 보여줍니다 — compose하기 전에 rig가 실제로 동작하는 것입니다.
Preview를 나가면 모두 원래대로 돌아가므로, Harmony 씬이 변형된 채로 남지 않습니다.
Background¶
네 개의 스와치와, 커스텀 컬러 피커:
캔버스는 자기 선 색을 자동으로 뒤집습니다: 밝은 배경에서는 grid와 카메라 프레임이 흰색 대신 어두운 색으로 그려집니다.
Snap¶
| 항목 | 기본값 | 하는 일 |
|---|---|---|
Show grid |
Off | 애니메이션 field chart를 그립니다 — 고전적인 N/S/E/W 숫자 차트로, "Snap to grid"가 정렬하는 대상입니다 |
Snap to widgets |
On | Photoshop 스타일로 widget 간 정렬 |
Snap to grid |
Off | widget 중심 기준으로 snap합니다 |
Snap to guides |
On | 자신의 guide에 snap합니다 |
Add horizontal guide / Add vertical guide |
원점에 시안색 guide를 추가합니다 | |
Clear guides |
전부 제거합니다 |
guide를 캔버스 밖으로 드래그하면 삭제됩니다. guide는 rig와 함께 저장되므로, preset을 통해서도 이동합니다.
Snapping 중에는 분홍색 힌트 라인이 유지되는 동안 표시됩니다.
Snapshot¶
widget 뒤에 캐릭터를 두어 실제 아트에 맞춰 배치할 수 있습니다.
| 버튼 | 하는 일 |
|---|---|
| 📷 | 지정한 frame에서 캐릭터를 렌더링해 배경으로 씁니다 |
| 📂 | 대신 이미지 파일을 로드합니다 |
| ✕ | 지웁니다 |
Opacity는 배경을 흐리게 하며, 기본값은 55 %입니다.
렌더가 비어서 돌아오면, 조용히 실패하는 대신 상태 표시줄이 이유를 말해줍니다: Display 노드가 없는 씬(또는 직접 연 .tpl)에는 렌더러가 닿을 것이 없고 — 하나 추가하거나 template을 씬으로 임포트하면 됩니다 — Harmony 세션이 없으면 렌더링할 원본 자체가 없습니다. Load…는 어느 쪽 경우든 동작합니다.
배경(backdrop)은 이동도 크기 조절도 되지 않습니다 — 의도된 것입니다
카메라 프레임에 고정되어 1:1 기준을 유지합니다. 이동이 가능하다면 더 이상 기준이 될 수 없습니다. 조절 가능한 것은 opacity뿐입니다.
⚙ 와 ? (standalone 전용)¶
Preferences와 Help입니다. 임베드된 에디터는 이를 반복하지 않습니다 — 그것들은 ORC의 것이며 한 창 위에 있고, 한 창 안에 톱니바퀴가 두 개면 두 개의 설정 저장소로 읽히기 때문입니다.
캔버스¶
이동하기¶
| 제스처 | 효과 |
|---|---|
| Wheel | 커서 쪽으로 줌 |
| 2 / 1 | 줌인 / 줌아웃 (Toon Boom 자체 바인딩) |
| Ctrl+= / Ctrl+- | 줌인 / 줌아웃 (재바인딩 가능) |
| Space 누른 채 드래그 | Pan |
| Shift+M | 뷰 리셋 |
카메라 프레임은 원점을 둘러싼 사각형으로 그려지며, 0,0에는 작은 십자선이 있습니다.
선택하기¶
| 제스처 | 효과 |
|---|---|
| widget 클릭 | 선택합니다 — 연결된 L/R pair라면 짝도 함께 선택됩니다. pair는 하나처럼 동작하기 때문입니다 |
| Ctrl+클릭 | 짝을 끌어들이지 않고 항목 하나만 토글합니다 |
| Shift+클릭 | 선택에 추가합니다 |
| 빈 공간에서 마퀴 | 밴드가 실제로 닿은 모든 것을 선택합니다 |
| Ctrl+A / Ctrl+Shift+A | 전체 선택 / 해제 |
여러 개를 선택한 상태에서 그중 하나를 드래그하면 그룹 전체가 이동합니다 — 그리고 inspector는 일괄 편집기(batch editor)가 됩니다: 선택된 항목들이 공통으로 가진 외관 필드만 보여주고, 하나를 편집하면 현재 값이 서로 다르더라도 선택된 모든 widget에 기록됩니다. Mirror 전용 항목은 건너뜁니다(L 짝을 편집하세요), 그리고 Preview 모드에서는 Visibility Layer만 제공됩니다.
이동과 크기 조절¶
| 제스처 | 효과 |
|---|---|
| body 드래그 | 이동 |
| 화살표 | 미세 이동(nudge) |
| Shift+화살표 | 더 미세한 이동 |
| 드래그 중 Shift 누름 | 축 잠금(axis lock) |
| 가운데 버튼 드래그 | 어디를 잡든 선택 전체를 이동 |
grid를 선택하면 노란색 handle 8개짜리 박스 gizmo와, 이동 가능한 주황색 pivot 링이 나타납니다 — Alt는 pivot 기준 대칭 크기 조절, Shift는 비율 잠금입니다. slider는 긴 축 방향의 handle만 제공합니다. 두께를 조절하는 것은 의미가 없기 때문입니다.
Slider의 방향, 그리고 그것을 읽는 법¶
slider의 authoring 축과 화면상의 표시는 서로 별개입니다. layer는 위치 목록을 authoring하고, 여기서는 그 목록을 가로 또는 세로로 그릴지, 그리고 어느 방향으로 진행할지를 결정합니다.
그 자유는 하나의 질문을 만듭니다 — 어느 쪽 끝이 state 1인가? — 그리고 두 개의 end anchor가 답합니다:
| 기호 | 표시하는 것 |
|---|---|
| travel의 시작 — state 1 | |
| 끝 — 마지막 state |
slider를 회전시키거나 뒤집어도 anchor는 따라옵니다: 사각형은 항상 카운트가 시작되는 곳입니다. 이것이 뒤집힌 세로 slider도 한눈에 읽히는 이유입니다. 여기서도, ORC의 navigator에서도 마찬가지입니다.
handle 기호는 자체 작은 시안색 gizmo를 가지므로, 애니메이터가 잡는 부분의 크기를 그것이 움직이는 박스와 독립적으로 조절할 수 있습니다.
격자(lattice) 다듬기¶
grid를 선택하면 노란색으로 바뀝니다 — 에디터가 "지금 다듬고 있는 대상"에 쓰는 색입니다 — 그리고 박스 바로 바깥에 작은 파란색 삼각형들이 나타납니다. 내부 선마다 하나씩, 각각 grid 안쪽을 가리킵니다: column 위에는 ▼, row 옆에는 ▶. 하나를 드래그하면 그 선을 이동시킵니다 — 이렇게 균일한 mesh가 아니라 캐릭터에 맞는 격자를 만들 수 있고, row나 column이 각자 다른 너비나 높이를 가질 수 있습니다.
| 보조키 | 효과 |
|---|---|
| Shift | 미세(Fine) — 4분의 1 속도 |
| Ctrl | 전체 구간에서 20개의 논리적 정지점에 snap |
| Alt | 대칭(Symmetric) — 미러링된 선이 함께 움직입니다 |
네 개의 가장자리는 grid 테두리이며 절대 움직이지 않고, 내부 선은 이웃 사이에서 clamp됩니다. 드래그하는 동안 캔버스 위에 작은 필(pill)이 각 이웃까지의 간격을 표시합니다 — Ctrl의 snap과 함께 쓰면 정확한 증분값을 그 자리에서 읽을 수 있고, Alt를 쓰면 미러링된 선도 자신의 짝 값을 보여주어 좌우 간격 불일치를 발견할 수 있습니다. 같은 값이 inspector의 Grid Spacing 카드에 spin box로 표시되며, 캔버스 드래그는 그 값들에도 반영됩니다.
L/R 간격¶
선택된 linked pair는 두 grid 사이에 빨간 bracket을 보여줍니다 — 의도적으로 파란색 선 grip과 구분되는 모습입니다. 이를 드래그하면 pair의 중심을 유지한 채 대칭적으로 간격이 바뀝니다. Shift는 미세 조정이며, 최소 간격은 0.05입니다.
Widgets 패널¶
오른쪽 트리는 모든 widget을 나열하며, 직접 만드는 폴더로 정리됩니다. 폴더는 에디터를 정리하는 용도이고, 어떤 폴더든 드래그할 수 있습니다 — 하지만 일회성이 아닙니다: 폴더 트리는 rig와 함께 저장되고, MC로 compose되며, compose된 그 MC를 standalone 에디터가 다시 열 때도 다시 나타납니다. standalone은 이미 있는 폴더를 이동시킬 수 있을 뿐, 새 폴더를 만드는 것은 authoring 시점에서만 가능합니다.
각 행에는 잠금(lock)이 있습니다: 잠긴 widget은 여전히 그려지지만 선택도 드래그도 되지 않고, 클릭이 그대로 통과합니다. 완성된 구역을 고정해두고 그 주변에서 작업할 때 씁니다.
visibility group이 Hidden인 widget은 목록에는 있지만 그려지지 않습니다: "Drag it out of Hidden to bring it back."
트리 아래의 inspector는 선택된 widget의 속성을 카드 단위로 보여줍니다:
| 카드 | 담고 있는 것 |
|---|---|
| Settings | kind별 옵션 |
| Transform | Offset X/Y와 Scale X/Y |
| Handle | handle 종류 — Circle, Square, Diamond, Triangle — 와 그 크기 |
| Colours | handle, handle 테두리, inline, outline, 라벨, 라벨 배경 |
| Label | 텍스트, 폰트, 크기, 정렬, offset |
| Behavior | visibility group과 kind별 동작 |
| Grid Spacing | 내부 row/column 위치, 기본은 접힌 상태 |
T는 선택된 grid의 handle 모양을 순환시킵니다.
Inline에는 outline이 필요합니다
Show outlines가 켜져 있지 않으면 Show inlines는 비활성화됩니다: "Inner grid lines need the outer border. Turn Show outlines on to enable this." Toon Boom은 테두리 없이는 내부 선을 그리지 않습니다.
pair의 mirror 짝을 선택하면 "Mirror of the L widget — edit its twin."이 표시됩니다 — 한쪽을 authoring하면 다른 쪽이 따라옵니다.
Applying¶
| 버튼 | 하는 일 |
|---|---|
Apply |
배치를 확정합니다. 임베드 상태에서는 세션을 다시 baseline으로 잡고, standalone에서는 style 속성을 살아 있는 MC 노드에 그 자리에서 직접 씁니다 — recompose 없이, 노드 identity를 유지한 채로. |
Cancel |
열거나 마지막으로 apply한 이후의 모든 것을 버립니다. 두 번 클릭해서 확인합니다. |
apply되지 않은 변경 사항이 있는 채로 창을 닫으면 먼저 묻습니다: "You have unapplied changes. Discard them and close?"
Discard는 rig를 연 순간으로 되돌립니다
Cancel — 그리고 close prompt의 Discard — 은 history를 하나씩 거슬러 올라가며 배치 편집만 걷어내는 지우개가 아닙니다. ORC에 임베드된 경우, 에디터는 열릴 때 rig 전체를 스냅샷하고, discard는 그 스냅샷을 복원합니다: rig는 그 순간의 상태로 정확히 돌아가는데, 공유된 history에서 그 순간은 에디터를 열기 직전에 마지막으로 한 작업입니다.
목표는 "연 순간"이지, "내가 기억하는 편집들"이 아닙니다. Apply는 그 목표 지점을 옮깁니다 — apply한 뒤에 discard하면 원래의 open이 아니라 그 apply로 돌아갑니다.
이것이 임베드된 에디터가 ORC 창을 뒤에서 잠그는 이유입니다. rig 전체의 스냅샷을 유지하는 것은 그 아래에서 rig가 바뀌지 않을 때만 성립합니다: 에디터가 편집 전 baseline을 들고 있는 동안 ORC를 편집하면, Cancel은 잃을 의도가 없었던 상태까지 복원해버립니다. Harmony 자체는 완전히 사용 가능한 상태로 남습니다 — 그룹의 Hide Nodes 목록에 넣을 노드를 고르려면 Harmony가 필요하기 때문입니다 — 잠금은 ORC 자체 창에만 미치고, 호스트에는 미치지 않습니다.
Undo는 Ctrl+Z입니다. 연속된 편집은 ORC 자체의 history 안에서 하나의 undo 지점으로 합쳐집니다 — 임베드된 상태에서는 에디터가 별도의 스택을 갖지 않습니다. undo는 무관한 ORC 동작까지 거슬러 올라가지 않고 에디터를 연 순간에서 멈춥니다: "Nothing to undo (widget editor)."
Compose 이후에도 바뀔 수 있는 것¶
standalone 에디터는 완성된(delivered) MC를 그 자리에서 재스타일링하며, 이는 inspector에 뚜렷한 경계선을 만듭니다: 일부는 compose된 MC가 실시간으로 다시 읽고, 일부는 이미 구워져(baked) 들어갔습니다:
Apply에 반영됨, recompose 불필요 |
ORC에서 recompose할 때까지 잠김 |
|---|---|
| 시각적인 모든 것 — 위치, 크기, 색상, 라벨, handle 모양 | widget의 Visibility Layer — 어느 group에 속하는지 |
| group의 Hide Nodes 목록 — 자유롭게 추가/제거 가능; 목록은 그저 평평하게 존재합니다(경로당 한 행, sub-node 자식이나 Skip 없음) | Layer parenting |
| group의 cascade / override Mode |
이 경계는 정책이 아니라 MC가 작동하는 방식 그 자체입니다. Hide nodes와 cascade mode는 compose된 MC의 스크립트가 매 frame 다시 읽는 속성(attribute)이므로, 속성을 쓰는 것만으로 충분합니다. group membership과 parenting은 생성된 스크립트 자체에 구워져 있어서, 어떤 속성 쓰기로도 옮길 수 없습니다. 잠긴 콤보는 계속 보이지만 회색으로 표시되고, 이유를 말해줍니다: "Set at compose time — change it in ORC and recompose. The Widget Editor only edits what the live MC re-reads (style, hide nodes, cascade mode)."
같은 경계선의 두 측면:
- compose에서 제외된 widget은 standalone 목록에 아예 나타나지 않습니다 — compose된 적이 없으므로 재스타일링할 대상이 노드 위에 없습니다. 임베드된 에디터는 트리에 그대로 남겨둡니다. 그곳에서는 제외 여부가 아직 결정 중인 사항이기 때문입니다.
- hidden visibility group에 속한 widget은 compose 되었습니다 — MC 안에 실려 있고, 그저 보이지 않고 선택할 수 없을 뿐입니다 — 그래서 standalone은 다른 것과 마찬가지로 이를 나열합니다.
순정 Toon Boom MC 재스타일링¶
standalone 에디터는 ORC가 compose한 적 없는, Toon Boom이 만든 native Master Controller도 엽니다.
작동 방식이 다르며, 그 차이는 숨김이 없습니다:
| ORC MC | native MC | |
|---|---|---|
| 캔버스 | 전체 배치 편집 가능 | 읽기 전용 미리보기 — 드래그도 gizmo도 없음 |
| 바꿀 수 있는 것 | 전부 | 그 MC가 실제로 선언한 style 속성만 |
| Apply 시 | Style과 배치 | Style 속성만 |
native MC에는 배치나 라벨 위치 속성이 전혀 없습니다 — 둘 다 자체 스크립트에 구워져 있기 때문입니다 — 그래서 캔버스에서 드래그할 것이 없습니다. 대신 가지고 있는 것은 색상과 크기 속성 세트이며, ORC는 목록을 미리 가정하지 않고 MC 자체에서 실시간으로 알아냅니다. Toon Boom이 widget 종류와 버전 사이에서 그 세트를 바꾸기 때문입니다.
Apply는 그 속성들을 undo 한 스텝에 쓰며 ORC의 데이터를 노드에 쓰지 않습니다. native MC는 native로 남습니다.
ORC가 native MC로 할 수 있는 세 가지
관련 항목¶
- Visibility Groups — 어떤 widget에 도달할 수 있는지
- Drivers — 지금 배치하고 있는 widget들
- Look-At — 조이스틱과 오버레이 slider
- Preferences — 에디터의 기본값
- Compose



