Fathom
Depth for any plate, in the tracked scene's metres, and a comp built on it: merge by depth, place elements in depth, match the air.
Fathom estimates depth for a plate and then uses it. It finds the depth, sets it in the scene's real units, steadies it over time and snaps it hard at edges. Four more nodes composite with that depth.
A whole shot is four nodes: a Read of the plate goes into Fathom (its camera linked to the CameraTracker), then FathomPlace (an actor, clicked in beside the car, height 1.8 m), then FathomMerge (the plate, the placed actor, and Unreal CG through DepthConform), then a WriteSmith.
The actor is hidden by the car, hazed and defocused for their distance, and casts a shadow onto the street.
Getting started
- Wire the plate into a Fathom.
- Wire the shot's CameraTracker into
camera. Depth is then in the tracked scene's metres. Without it, depth is relative and still sorts correctly near to far. - Choose a
model. The default is best for most plates. Pick the small model for a fast live look, and the normals model when you need good normals for relighting. - Press ⚒ Analyze. The frames are estimated on the GPU and baked to
bake_dir. The status line shows progress. - View the layers:
depth,depth_soft,depth_conf(how sure it is),depth_sky,N(normals) andP(position). The viewer shows a depth-only result with a sensible range;viewchooses the display.
The comp nodes
- FathomMerge composites by depth, per pixel. Every input carries depth (a Fathom plate, a Render3D, a placed element, Unreal CG through a DepthConform) and each pixel is sorted near to far. It is DeepMerge without a deep workflow, and it has no halos. It also outputs each input's visibility, as
fathom_vis_<input>. - FathomPlace puts an element into the shot. Click where it stands (the green foot in the viewer), give its real height, and it is scaled by true perspective, stands on the plate's surface and carries its own depth. Choose *follow track* to pin the foot to a 2D track.
- FathomMatch puts an element in the plate's air and focus at its own depth: haze with its colour (a blue haze stays blue) and lens defocus. ⚒ Fit from plate measures both from the plate and shows what it fitted.
fog_baseandfog_falloffmake the haze thin out with height. - DepthConform states what a foreign depth pass is (Unreal SceneDepth, Nuke 1/Z, Blender, Maya) and converts it once to Forged depth, so everything downstream reads one convention. A Fathom node that meets an undeclared pass refuses and says why, instead of making halos.
Contact shadows onto the plate come from FathomPlace's shadow section. Pick a shadow on the plate to match its density.
Fixing depth
Depth estimation is good, not perfect. Edits on Fathom (the edits ledger) push a region nearer or further in world units, and they survive a re-Analyze. temporal steadies flicker between frames; edge_radius and edge_jump decide how hard edges snap.
Out to other applications
A deep EXR of the result can be written for a Nuke deep workflow (it has been checked in NukeX with DeepRead, flatten and a DeepCrop by Z).
Known edges
- The models are large (about 3 GB in all). Only the small model downloads automatically. The others go in the models folder by hand for now.
- Analysis runs on DirectML or the CPU. It does not yet refuse or tile on a small GPU.
- Unreal's camera focus is not carried over the bridge yet, so FathomMatch cannot take focus from a CineCamera.