USD for VFX (new in v1.3)
USD for VFX exports your reconstruction as a USD bundle built for compositing and 3D pipelines. You get the mesh, the calibrated cameras and lens-undistorted plates in one package that drops into Blender, Maya, Houdini and Nuke — ready for camera projection, matchmove and set extension.
Editions — Free and Lite export a 2-camera preview chosen for best parallax. Pro exports all cameras.
Why undistorted plates matter for VFX
In a 3D scene every straight line renders straight, so any projection or matchmove only lines up if the plate is straight too. The standard VFX workflow removes lens distortion up front, works "undistorted" through the pipeline, and re-applies the distortion at the end over the original plate.
Replica gives you the undistorted half for free: every exported photo is rectified to a pure pinhole plate (no lens distortion), and the camera intrinsics travel with it. Any DCC's standard camera-projection setup will line up exactly, with no grid-shooting or manual lens solve.
How to export
- Open a project with a completed reconstruction.
- Go to the Export panel.
- In the Format menu choose USD for VFX (the label shows the camera count for your edition).
- Click Export and pick a destination folder.
Replica selects the cameras (all of them on Pro; the 2 best-parallax cameras on Free/Lite), undistorts each plate, and assembles the bundle.
What's in the bundle
<project>_VFX/
├── model.usda USD scene: mesh reference + one camera per plate
├── mesh.usdz the reconstructed geometry
├── images/ undistorted plates, named to match the cameras
├── fix_in_blender.py helper: fixes the up-axis and render resolution in Blender
└── README.txt conventions, intrinsics encoding, projection-mapping guide
Conventions
- Coordinate system: Y-up, right-handed — the Apple / USD default. Matches Maya, Houdini and Nuke out of the box.
- Camera frame:
+Xright,+Yup,-Zforward. - Pixel-to-mm:
horizontalApertureis set to 36 mm (full-frame reference);focalLengthandverticalApertureare derived per-camera so the rendered field of view matches the source intrinsics exactly. To use real-sensor values, scalefocalLengthand both apertures by(real_sensor_width_mm / 36). - Intrinsics on every camera: each
Cameraprim carries the source intrinsics in pixels as custom attributes —replica:pixelFocalX/Y,replica:imageWidth/Height— plus the matching plate name inreplica:imageName.
Blender users — important: Blender's world is Z-up. When importing the Y-up USD, either enable Convert Orientation: Y → Z up in the import dialog (File → Import → USD → operator panel), or run the included
fix_in_blender.pyonce after import — it rotates everything 90° around X and sets the render resolution to match the source plates (Scripting workspace → Open → Run Script).
What you can do with it
The bundle is built for camera projection mapping — projecting each undistorted plate back onto geometry from its own camera. Because the plates are pure pinhole, the projection lands pixel-accurate:
| Tool | Setup |
|---|---|
| Blender | UV Project modifier, or an Image Texture node with camera-mapped coordinates. |
| Maya | projection node with fitType = best fit. |
| Nuke | Project3D node fed by the camera. |
| Houdini | Camera-based projection in /mat or COPs (UV Texture SOP → "Perspective from Camera"). |
Typical uses:
- Matchmove & set extension — a math-perfect virtual camera and an undistorted plate, the two pieces matchmove needs.
- Projection / camera mapping — project plates onto the mesh for 2.5D moves, clean-up and DMP.
- Matte painting & look-dev reference — accurate cameras and lighting reference from the real shoot.
- Previz & layout — drop the reconstructed set and cameras straight into your scene.
Tip — get more cameras: on Free and Lite the bundle contains a 2-camera preview to evaluate the workflow. Upgrade to Pro to export every camera in the project.
Troubleshooting
Cameras come in lying on their side in Blender.
That's the Y-up vs Z-up mismatch. Enable "Convert Orientation: Y → Z up" on import, or run fix_in_blender.py once after import.
The projection drifts slightly off the plate. Check the README: if a plate had no lens-distortion data it was copied unrectified and may not be perfectly pinhole. Plates captured directly with Replica carry the distortion data and rectify cleanly.
I only got 2 cameras. That's the Free/Lite preview. Pro exports all cameras — see the pricing page.
Next Steps
- COLMAP Export — the same undistorted images for Gaussian Splatting, NeRF and reconstruction
- Workflows (Pro) — automate export as part of a pipeline
- Getting Started — the basics of capturing and reconstructing
Happy compositing!