Cameras¶
A camera move is one of the best reasons to use OTS at all — blocking a move in 3D and driving Harmony with it, or taking a Harmony camera into Maya so a 3D pass matches the 2D shot.
Cameras are first-class in both file formats, and OTS handles as many as your scene has.
The model¶
A camera in OTS is two things:
- A peg — the animated transform. It's an ordinary item in the list, with keys like any other.
- A camera configuration — the lens: FOV, clip planes, offset, roll, and whether it's the scene's default camera.
The configuration is linked to its peg by name, so the lens and the motion rebuild together. That's why a camera row appears in the list at all: it's the peg you're looking at, flagged as driving a camera.
| Travels | Notes |
|---|---|
| FOV | As a vertical angle — Harmony's convention, converted to focal length + film aperture in Maya and to a vertical sensor fit in Blender |
| Near / far clip | As raw scene distances. Harmony's original field values are preserved separately, so a Harmony round trip is lossless |
| Offset | The camera's own position, relative to its peg |
| Roll | Rotation about the view axis |
| Default flag | Which camera is the scene's active one |
| The animation | On the camera's peg, in a .anm |
Exporting a camera¶
Select it alongside everything else, and scan it in. That's all.
Select the camera's peg. OTS detects the CAMERA node hanging off it and flags the row.
Select the camera transform. Maya has no single "default camera" flag, so OTS uses the closest proxy: the camera's renderable state and what you're currently looking through.
Select the camera object. The scene's active camera is the default one.
Camera rows carry a camera icon in the list — filled for the default camera, hollow for the others.
Importing a camera¶
Create Cameras builds them. The button is disabled unless the loaded file actually contains one.
What you get:
| Target | Result |
|---|---|
| Harmony | A peg plus a CAMERA node under it, keyed from the file |
| Maya | A camera transform with focal length derived from the FOV, vertical film fit, near/far, roll — attached to its peg's joint, or baked directly onto the camera if the peg exists only to hold it |
| Blender | A camera object with a vertical sensor fit, the FOV as its angle, near/far clip — bone-parented, or baked directly, on the same rule |
A camera-only peg doesn't become a bone
If a camera's peg has nothing above or below it — it exists purely to place the camera — then rebuilding it as a joint or bone would add a node that carries nothing. So OTS bakes its transform straight onto the camera object instead, and no skeleton is created.
Give that peg a parent or a child and the whole chain gets built normally, with the camera attached to it. Harmony is unaffected either way, because there a camera genuinely is a peg plus a camera node.
Several cameras¶
Every camera in the export list is written to the file, and Create Cameras builds all of the ticked ones in one pass.
Dedicated camera chains get their own rig tag — Camera, or Camera_1, Camera_2, … when there's more than one. The numbering is sorted by name, so it's stable between sessions rather than following your selection order. See Rigs & Multi-Rig.
Exactly one camera can carry the default flag. If you import two files that each think their camera is the default, the last one built wins — set it explicitly in your scene afterwards if it matters.
Framing: check it¶
This is the part to verify rather than trust.
FOV is carried as a vertical angle, matching Harmony's scene-settings convention, and each application is told to fit its sensor vertically. That's a deliberate choice: leaving Maya or Blender on their automatic/horizontal fit makes the frustum too narrow and the scene arrives looking zoomed in.
Aim is best-effort. Harmony and Maya cameras both look down their own −Z, which is already the canonical forward direction, so only the roll is written. Blender's camera looks down −Z in a Z-up world, so it gets a +90° X tilt on import and has that tilt removed again on export — a forward-looking camera round-trips to an identity peg.
Clip planes pass through as raw scene distances, because they're relative to each application's own scale. Harmony's near_field / far_field values are preserved alongside them, so Harmony → anything → Harmony is lossless; other routes get sensible distances that may still want a nudge.
Look through it before you trust it
The maths is measured and tested, but a camera is the one thing where being slightly wrong is immediately visible and slightly expensive. After Create Cameras, look through the camera and compare a frame against the source. Check framing at the widest and tightest points of the move, not just frame 1.
Common situations¶
The camera arrived but doesn't move. You built the camera but not its animation. In a .anm, the motion lives on the camera's peg — make sure that row was ticked, and use Create Rig or Apply as well as Create Cameras.
The camera row is amber. Expected on a fresh import: no joint or bone by that name exists yet. Cameras are counted separately from matched for exactly this reason. See The Match Tree.
The framing is too tight or too wide. Check the sensor fit in the target application — it should be vertical. If something reset it to automatic, the FOV will be reinterpreted against the wrong axis.
Two cameras, both active. Only one default flag survives per scene. Set the one you want after import.