개념과 용어¶
ORC는 약 열 개의 단어로 이루어져 있습니다. 여기서 한 번만 익혀두면 이 문서의 나머지 모든 페이지가 짧아집니다.
도구 전체가 걸려 있는 한 문장입니다.
rig는 position으로 주소화된 pose들의 집합입니다.
아래 나오는 모든 것은 여러분이 이동할 수 있는 position이거나, 그런 position 중 하나에 저장된 pose이거나, 아니면 position을 읽고서 posing이 아닌 다른 일을 하는 무언가입니다.
구성 요소들¶
Snap¶
snap은 하나의 position입니다 — grid의 한 칸, slider의 한 정지점. 절대 변하지 않는 이름을 갖습니다: R0C0은 왼쪽 위 snap이고, R2C4는 행 2, 열 4입니다. 행과 열은 0부터 시작하며 R0이 맨 위 행입니다.
그 이름은 장식이 아닙니다. grid 자체의 눈금자, 로그, preset 파일 내부, 그리고 composed된 rig 안에 그대로 나타납니다. 무언가 잘못되었을 때, R1C3은 여러분이 어디를 말하는 방식입니다.
Pose Layer¶
pose layer는 snap들의 grid와, 그것이 움직여도 되는 대상 목록을 더한 것입니다. 정의는 그게 전부입니다.
눈썹, 눈꺼풀, 입꼬리, 손가락 하나의 curl — 이들 각각이 자신만의 grid와 자신만의 target을 가진 pose layer입니다.
layer는 snap마다 frame 번호 하나를 저장합니다. pose가 아니라 frame입니다. 아래 Frames-first를 보세요.
Control¶
control은 turnaround의 받침대입니다. Front face를 가지며, 선택적으로 Back face도 갖습니다 — 각 face는 하나의 pose layer이며 — 완성된 rig에는 Front ↔ Back 토글이 추가됩니다.
control의 요점은 다른 layer들이 그것을 가로질러 key를 넣는다는 것입니다. 여러분의 눈썹 layer는 열다섯 개의 pose를 갖는 것이 아니라, head의 열다섯 개 pose 각각에서 열다섯 개의 pose를 갖습니다. head control은 그 문장을 가능하게 만드는, 담아주는 부모입니다.
모든 rig는 Head라는 이름의 control 하나로 시작합니다. 이름을 바꾸거나 삭제할 수 있고, 더 추가할 수도 있습니다.
Target¶
target은 pose layer가 움직여도 되는 Harmony node 하나입니다 — peg, deformation group, drawing. target은 layer가 캐릭터의 어느 부분을 소유하는지를 아는 방법입니다.
두 layer가 같은 node를 지목할 수 있습니다. 그럴 경우 ORC는 그 둘의 write가 겹친다는 것과, 그 겹침이 합산되는지 아니면 대체되는지를 알려줍니다.
Knob¶
knob는 pose set이 아니라 axis로 쓰이고 있는 pose layer입니다.
layer의 Knob picker를 다른 layer에 향하게 하면, 여러분의 layer는 이제 그 layer의 position들도 가로질러 key를 넣게 됩니다. 13개 position을 가진 phoneme knob는 여러분의 mouth layer가 자신의 grid를 phoneme마다 한 번씩 authoring한다는 뜻입니다.
knob는 type이 아니라 role입니다 — 어떤 pose layer든 될 수 있고, 가지고 있던 모든 것을 그대로 유지합니다: 자신의 grid, 자신의 target, 그리고 자신이 직접 authoring한 frame. 다른 무언가의 axis가 된다고 해서 그중 어느 것도 빼앗기지 않습니다.
두 가지 종류가 있습니다.
| 무엇을 움직이는가 | |
|---|---|
| control의 knob | control 자신의 pose grid — turnaround 전체가 함께 움직입니다. |
| extra knob | 그것을 가리키는 layer만. |
Page, Pair와 Side¶
page는 layer grid의 번호가 매겨진 변형본입니다. page는 다음 중 하나를 담습니다.
- pair — 두 개의 grid,
Left-1과Right-1, 또는 - solo — 하나의 grid,
Solo-1.
각 target은 어느 grid가 그것을 구동하는지 말해주는 Side를 가집니다: Left-1, Right-2, Both-3, Solo-1. 이것이 하나의 layer가 서로를 mirror하는 두 grid로부터 왼쪽 눈썹과 오른쪽 눈썹을 구동하는 방법입니다.
page 번호는 고정 id입니다. page 2를 삭제해도 남은 page는 1과 3 그대로입니다 — 여러분의 snap 이름이 여전히 그것들을 가리키므로, 번호 사이의 빈틈이 옳은 상태입니다.
Driver¶
driver는 어딘가에 값을 쓰는 widget입니다 — slider, checkbox, combo slider, 또는 2-D pad.
pose layer가 "이 position에서는 frame 861을 노출하라"고 말하는 자리에서, driver는 "이 node의 OPACITY를 43.7로 설정하라", 또는 "이 drawing을 바꿔라", 또는 "이 node를 비활성화하라"고 말합니다.
driver는 global(어디서나 하나의 값)이거나 pose처럼 snap마다 key가 있을 수 있습니다. 다른 driver를 구동하거나, constraint를 gate할 수도 있습니다.
Constraint¶
constraint는 node 사이의 transform channel을 연결합니다: Copy는 target들이 source peg를 따르게 하고, Lock은 그것들을 제자리에 고정합니다. 순수한 on/off이며 항상 global이고, checkbox driver로 켜고 끌 수 있습니다.
Look-At¶
look-at은 시선 체계입니다: 조준하는 조이스틱 하나와, 그것에 응답하는 최대 두 가지 독립된 대상.
| 모드 | 움직이는 것 | 전형적인 용도 |
|---|---|---|
| Tracked Pegs | Peg transform | 홍채, 동공 — 눈을 가로질러 미끄러지는 무엇이든 |
| Deform Follow | Deform point | 눈꺼풀, 시선을 따라 끌려가야 하는 모든 것 |
둘은 완전히 독립적입니다. 하나만 쓰거나, 다른 하나만 쓰거나, 둘 다 쓸 수 있습니다.
Visibility Group¶
visibility group은 애니메이터가 캔버스에서 무엇을 보고 만질 수 있는지를 결정합니다. group은 중첩될 수 있고, 각각은 부모를 끄면 자식들의 checkbox만 숨기는지(Cascade), 아니면 widget까지 숨기는지(Override)를 선택합니다.
Hidden은 유일한 영구 group입니다: 그 안에 있는 것은 무엇이든 꺼져 있고 닿을 수 없습니다. 삭제하지 않고 무언가를 치워두는 방법입니다.
Frames-first¶
ORC에 관해 이해해야 할 가장 중요한 한 가지입니다.
pose layer는 pose가 아니라 frame 번호를 저장합니다.
여러분은 Harmony의 실제 도구를 써서 frame 861에서 캐릭터를 posing합니다. F6을 누릅니다. ORC는 "861"을 적어 둡니다. Compose 시점에 — 오직 그 시점에만 — ORC는 861에서 rig가 실제로 어떻게 생겼는지 읽어 그것을 Master Controller에 구워 넣습니다.
여기서 뒤따르는 것들입니다.
- 편집은 비파괴적입니다. 861로 돌아가 눈썹을 고치고 다시 compose하세요. 변화가 반영됩니다. ORC 안에 구워진 것은 아무것도 없었습니다.
- 여러분 자신의 도구를 씁니다. ORC에는 posing용 캔버스가 없습니다. Harmony가 이미 그것이기 때문입니다.
- 구성이 이식 가능합니다. ORC는 delta가 아니라 position과 frame 참조를 저장하므로, 같은 설정을 다른 캐릭터에 그대로 향하게 할 수 있습니다. 이것이 character preset을 가능하게 하는 이유입니다.
position이 쌓이는 방식: dimension¶
힘이 실려 있는 지점이며, 들리는 것보다 단순합니다.
pose layer는 다음을 가로질러 key를 넣습니다.
its own grid + its carrying control + its knob
각각이 자신의 axis를 기여하고, 이것들이 곱해져 하나의 주소가 됩니다.
| layer | Axis | 표시 |
|---|---|---|
| 3 × 3 grid를 가진 global layer, control 없음, knob 없음 | 2 | 2D |
| 같은 layer가 Head control 안에 있을 때 | 2 + 2 | 4D |
| …13-position phoneme knob를 가로질러 key가 있을 때 | 2 + 2 + 1 | 5D |
| …그 knob가 2-D grid였다면 | 2 + 2 + 2 | 6D |
pose layer의 실질적 상한은 6입니다 — 자신의 grid, 자신의 control, 그리고 knob 하나, 각각 최대 2차원까지. driver와 look-at 필드는 자신의 widget이 같은 스택 위에 자신의 dimension을 더하므로 8까지 갑니다.
Outliner는 모든 행에 이 숫자를 보여주고, 마우스를 올리면 합산 내역을 말로 풀어서 보여줍니다.
모든 dimension은 작업량을 곱합니다
3 × 3 layer를 가진 5 × 3 control은 135개의 pose입니다. 13-position knob를 더하면 1,755개가 됩니다. ORC는 숫자가 올라갈수록 경고하지만, 결코 막지는 않습니다 — 하지만 그 pose들은 여러분이 authoring해야 할 몫입니다.
Key domain¶
key domain은 무언가가 가로질러 key를 넣는 position들의 집합입니다. pose layer는 자신의 key domain을 트리 안에서 어디에 앉아 있는지에서 얻습니다. driver와 look-at은 자신의 key domain을 명시적으로 선택합니다.
| Domain | 의미 |
|---|---|
| Global | 어디서나 하나의 값. 전혀 key가 없습니다. |
| Control | control snap마다 하나의 값. |
| Pose Layer | layer snap마다 하나의 값 — 모든 control pose에서 동일합니다. |
| Control + Pose Layer | 둘의 곱. |
이것이 Outliner에서 node를 옮기면 동작이 바뀌는 이유입니다: 어디에 앉아 있는가가 곧 무엇을 가로질러 key를 넣는가입니다.
Interpolation¶
snap 사이에서 ORC는 blend합니다. 아래 handle을 드래그하며 주변 네 snap이 자기 몫을 가져가는 것을 지켜보세요 — 가중치의 합은 항상 1입니다.
Interpolation을 끄면 blending 없이 가장 가까운 snap이 그대로 승리합니다. 완성된 rig에서는 runtime toggle이므로, 애니메이터가 부드러운 control과 계단식(hard-stepped) control 사이를 오갈 수 있습니다.
Widget 모양¶
네 가지 모양, 두 개의 축 위에: dimension이 몇 개인지, 그리고 handle이 멈추는지 여부.
| Discrete (멈춘다) | Continuous (멈추지 않는다) | |
|---|---|---|
| 1-D | Combo Slider | Continuous Slider |
| 2-D | Combo Grid | Continuous Grid |
여기에 Checkbox가 더해지며, 이것은 두 상태뿐이고 그 사이는 없습니다.
아이콘 자체가 정의입니다
내부의 선들이 snap 정지점입니다. continuous type은 discrete 짝과 정확히 똑같이 그려지되, 선만 뺀 것입니다.
pose는 항상 discrete입니다 — pose layer는 pose의 집합이기 때문입니다. driver pad는 항상 continuous입니다 — discrete한 2-D는 그냥 pose layer일 뿐이기 때문입니다.
전체가 맞물리는 방식¶
Rig
├── Head ← a Control: Front + Back faces
│ ├── Look-At ← anchored on this control
│ ├── Head Knob ← a Knob: the control's own axis
│ │ └── Mouth Corners ← a Pose Layer keying across the knob
│ ├── Eyebrows ← a Pose Layer keying across the control
│ └── Eyelids
├── Exagerate Exp ← a Driver
└── Constraint 1 ← always global
Visibility Groups
├── All
│ ├── Head
│ ├── Eyebrows
│ └── Controls
└── Hidden ← the permanent sink
이 트리를 문장으로 읽어보면 이렇습니다.
- Mouth Corners는 Head Knob를 가로질러 key를 넣고, 그 knob는 Head를 가로질러 key를 넣습니다 — 그래서 5D 또는 6D입니다.
- Eyebrows는 Head를 직접 가로질러 key를 넣습니다 — 4D입니다.
- Constraint 1은 global입니다. position이 전혀 없습니다.
- 보이는 모든 것은 하나의 visibility group에 속합니다.
다음으로 갈 곳¶
| 하나를 처음부터 끝까지 만들어보기 | Quick Start |
| 창을 익히기 | Interface Overview |
| 트리를 더 깊이 알아보기 | The Outliner |
| dimension을 더 깊이 알아보기 | Dimensions & Key Domains |