Transfer Routes¶
OTS moves data between three applications, which means six directions. All six work, in both file formats.
| From ↓ / To → | Harmony | Blender | Maya |
|---|---|---|---|
| Harmony | — | ✅ .pvt .anm |
✅ .pvt .anm |
| Blender | ✅ .pvt .anm |
— | ✅ .pvt .anm |
| Maya | ✅ .pvt .anm |
✅ .pvt .anm |
— |
Why all six, and not just the ones we tested¶
There is no per-route code in OTS. There is no "Harmony reader" and "Blender reader" — there is one reader per file format.
Every writer stamps a coordinate_system header into the file describing the space it wrote in: which axis is up, what the handedness is, what a unit means. Every reader looks at that header and converts the values through a single canonical space on the way in.
So a route isn't a feature that has to be built. Blender → Maya works for the same reason Harmony → Maya works: Maya's reader doesn't know or care who wrote the file, only what space it declares. See Coordinate Systems.
Blender ↔ Maya is a first-class route
It's worth saying plainly, because it's the one people assume is missing: you can send a rig or a shot straight from Blender to Maya, or from Maya to Blender, without a stop in Harmony. It's covered by an automated cross-application test that exports from Blender and asserts the resulting pose inside Maya.
What each route is good at¶
Harmony → Blender / Maya¶
The common one. A 2D cut-out rig's pegs become bones or joints, so you can use a 3D scene as a reference layout, do a camera move properly in 3D, or render a matching 3D pass.
The whole peg hierarchy arrives, including any peg that only exists to hold a camera.
Blender / Maya → Harmony¶
The other common one. Animate a camera move — or a mechanical rig, or anything easier to block in 3D — and drive your Harmony pegs with it.
Applying an animation rewrites a Harmony peg's authoring mode
When OTS applies a .anm to an existing Harmony peg, it unlinks any 3D-path or quaternion-path column on that peg and writes fresh separate-channel bezier curves instead.
The values are right, and the curves are editable. But if the peg was authored on a 3D path, that path is gone afterwards. This is a deliberate trade-off — Harmony's rotation columns can't represent every incoming curve otherwise — but it's not what you want on a peg you've hand-crafted. Applying onto a fresh Create Rig result avoids the question entirely.
Blender ↔ Maya¶
Two 3D applications, no Harmony involved. Useful when the rest of your pipeline is Octo Tools and you just want a lightweight, readable, diffable transfer that carries bezier tangents and camera lens data without an FBX round-trip.
The main thing this route exercises is the Z-up ↔ Y-up conversion, in both directions. See Coordinate Systems.
Choosing a format for the route¶
| You want | Send |
|---|---|
| The animation, and the rig doesn't exist on the other side yet | .anm → Create Rig |
| The animation, onto a rig that already matches | .anm → Apply |
| Just the skeleton — no shot | .pvt → Build Skeleton |
| To rebuild a rig you lost | .pvt → Build Skeleton |
| Cameras | either — both formats carry cameras, but .anm also carries their motion |
See Pivot Files (.pvt) and Animation Files (.anm).
What travels, on every route¶
| Travels | Notes |
|---|---|
| Hierarchy | Each item's parent, resolved to the nearest exported ancestor — so a partial export still comes out as a coherent chain |
| Rest pose | Pivot and rest rotation |
| Position / rotation / scale keys | Per frame, in the exported range |
| Interpolation | BEZIER, LINEAR, CONSTANT |
| Bezier handles | Absolute, per axis |
| Cameras | FOV, near/far clip, offset, roll, default-camera flag |
| Rig grouping | The Rig column, so a multi-character scene stays separated |
| Doesn't travel | Why |
|---|---|
| Drawings, meshes, materials, textures | OTS is a transform bridge, not an asset pipeline |
| Deformers, constraints, expressions, IK | Only the resulting transforms |
| Layer names, colours, tags, node metadata | Beyond the names and paths needed to match |
| The peg's authoring mode | Recorded as a hint, but never used to change values — see File Format |
Because only the resulting transforms move, a rig driven by a complicated setup on one side arrives on the other side as plain baked keys. That's usually what you want from a transfer, but it does mean the transfer is one-way per shot: you can't send it back and expect the original setup to reappear.