Using fSpy Camera Parameters in Apps Without a Dedicated Importer

Updated

fSpy only ships an official importer for Blender. For any other 3D application, you transfer the solve manually: copy each camera parameter out of fSpy and paste it into the matching field in the target app. This works in any program that lets you set a camera's field of view, position, orientation, and principal point, but it is a per-value process with no automation, so expect to do it by hand every time.

What you are actually transferring

fSpy solves the camera that took a still image. The output is a small set of numbers describing that camera, and those numbers are what you reproduce in the target application:

  • Field of view (derived from the focal length and sensor size)
  • Camera position in 3D space
  • Camera orientation (rotation)
  • Principal point, unless it coincides with the image midpoint

If the target app has no concept of one of these, you cannot fully match the shot — for example, a program that only exposes a focal length slider but no principal point offset will be close but not exact.

Step-by-step manual transfer

The official fSpy guidance for applications without a dedicated importer outlines this sequence:

  1. Match the viewport to the image. Set the camera viewport (render resolution or camera frame) to the same dimensions as the input image. If the aspect ratios differ, the field of view you paste in will frame the scene incorrectly.
  2. Set the input image as the camera background. This gives you a visual reference to align against while you enter the remaining values.
  3. Set the camera field of view. Enter the fSpy field of view (or the equivalent focal length plus sensor size, if that is how the target app expresses it).
  4. Set the camera position. Copy the position values from fSpy into the target camera's location fields.
  5. Set the camera orientation. Copy the rotation values. Watch the axis convention — many apps use a different up-axis or rotation order than fSpy, so you may need to convert.
  6. Set the principal point, unless it coincides with the image midpoint. If fSpy reports a principal point at the center, you can skip this step.

Verifying the result

After entering the values, the background image should line up with the 3D scene the way it did in fSpy. A quick check: place a simple object at a known point in the image (a corner of a building, a table edge) and confirm it sits where the photo shows it. If everything is shifted or scaled, the usual culprits are a viewport size that does not match the image, or a rotation/axis mismatch.

Common snags

  • Aspect ratio mismatch — the single most common cause of a wrong-looking solve. Fix the viewport dimensions first.
  • Axis and rotation order differences — position and orientation values are not always portable between apps without conversion.
  • No principal point control — some apps do not expose it, so off-center shots cannot be matched exactly.
  • Unit scale — if the target scene uses different units, position values may need scaling.

When manual transfer is not worth it

If you are working in Blender, skip all of this: there is an official fSpy importer add-on that sets the Blender camera parameters and can optionally set the camera background image for you. Manual transfer is the fallback for everything else.

fSpy itself is open source and free to download and use on Mac, Windows, and Linux, with an optional donation.