USD for VFX - Manual - Replica

Special Offer: 50% OFF with code SUNBAKED Expires 31/08/2026

Get the discount

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

  1. Open a project with a completed reconstruction.
  2. Go to the Export panel.
  3. In the Format menu choose USD for VFX (the label shows the camera count for your edition).
  4. 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: +X right, +Y up, -Z forward.
  • Pixel-to-mm: horizontalAperture is set to 36 mm (full-frame reference); focalLength and verticalAperture are derived per-camera so the rendered field of view matches the source intrinsics exactly. To use real-sensor values, scale focalLength and both apertures by (real_sensor_width_mm / 36).
  • Intrinsics on every camera: each Camera prim carries the source intrinsics in pixels as custom attributes — replica:pixelFocalX / Y, replica:imageWidth / Height — plus the matching plate name in replica: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.py once 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!

Join the Replica community on Discord

Get help, share your scans, and talk shop with other Replica users and the team behind it.

JOIN OUR DISCORD