Setting 1:1 Scale in RealityCapture

How to set a photogrammetry model’s scale in RealityCapture.

Azad Balabanian
8 min readJul 31, 2022
A photogrammetry scan scaled 1:1 using 2 measured points in RealityCapture.

In this tutorial, I’ll be outlining three ways of setting 1:1 scale to a photogrammetry scanned model in RealityCapture.

  • Option 1 is using a more automated approach with AprilTags.
  • Option 2 is focused around manually measuring 2 points IRL in a scanning environment.
  • Option 3explains how you can use images with GPS info to scale the scan automatically.

Option 1: Using AprilTag Scale Markers

RealityCapture (RC) supports a library of markers (AprilTags) that, when placed in a scan, can automatically detect and set their measured distance to scale the rest of the model. Neat!

Accuracy-wise, if scale markers can be quite precise and accurate using an inkjet printer, so oftentimes, these markers are a great tool for more scientific work which require high precision and accuracy. Typically, the prints are also glued onto metal or wooden planks to keep them flat, which is crucial for the distance measurements to remain accurate.

I however, do not have a inkjet printer — but I DO have a 3D printer! And so, I set out to design my own AprilTag scale markers that I could print and use whenever I needed to scan a room/house/building/etc. Check out my How to use my 3D printable AprilTag Scale Markers tutorial for more info about that!

Here, I will outline how to use generate AprilTags, use the in the scan, and how to set it up in RealityCapture to scale your scene accordingly. It does involve quite a few steps however, steps which I have automated in my 3D printable scale marker tutorial that might be useful for you.

How to set scale in RC using AprilTags

  1. Generate AprilTags in RC by going to Alignment > Detect Markers.
  2. In the Detect Markers Tool panel, in the Marker Type row, you can select which type of AprilTags to use.

I was strongly urged to use the Square, April Tag, 36h11 library by Erik Christianson as these markers have the least chance of false positive detection. Check out Erik’s video on this subject for more in-depth info.

Selecting the 36h11 marker library (1st image), selecting the amount of markers for RC to generate (2nd image), and the generated AprilTags (3rd image)

3. Once you have your generated AprilTags, print them and measure the distance between the centers of the QR code. For my 3D printed AprilTag scale markers, the distance I measured was 11.6 cm.

4. After placing the marker within the scanning environment, I finished scanning the scene and loaded all the images into RealityCapture, ready for photogrammetry processing.

5. There, I aligned the images then went to Alignment > Detect Markers, and in the Detect Markers Tool panel, select the Detect Markers button.

6. Once the marker detection processing is complete, you should see Control Points (CP’s) created for each AprilTag that RealityCapture found in your images.

The CP’s should also be automatically labelled the name of each tag which you can confirm by looking on the label within the tag itself (shown in the screenshot bellow). Make sure to expand the CP’s to see which images were detected and omit any images that were false positives or too inaccurate.

CP’s created after RC detects the markers found in the scan. RC will automatically label each CP with its tag’s name.

7. Next, select Create Distance in the Control Points section, which creates a new Constraints section with a new subentry, distance 0.

Select “Create Distance”, then in the newly created “Constraints” section, select “distance 0”.

8. Select distance 0. You should see a Selected Constraints panel opening up bellow which has two rows, A and B with a < enter point name > entries.

This is where you should copy/paste the names of the AprilTag CP’s that RealityCapture generated as the labels of A and B (as shown in the screenshot bellow).

Copy/paste the names of the CP’s into the “< enter point name >” fields.

9. Then, input the measured distance between the two AprilTag markers (the measurement you did IRL). In my case with my 3D printed scale marker, the distance is 11.6 cm, so I type in 0.116 (RC’s units are in meters).

Type in the measured distance between the two markers.

10. You’re almost there! Now, save the RC project and then select Alignment > Update to scale your scene relative to your scale marker measurement!

Select “Update” to scale your scene according to your measurement!

11. 🎉 Congrats! You’re done!

Now, if you found these steps to be too cumbersome to repeat often, there are ways of automating the last 5 steps using RC CLI or even more simply, RCCMD (which are CLI commands you type out in a text file and drag & drop into RC to execute).

I outline how to automate these steps in my How to use my 3D printable AprilTag Scale Markers tutorial.

CapturingReality also has a video tutorial on how to automate these steps in on their Youtube channel.

Option 2: Manually measuring the distance between two points IRL.

By measuring the distance between two points IRL (in real life) on the site of the scan, you can set control points later in RealityCapture and set the calculated distance to scale the rest of the scene accordingly.

This method is as precise and accurate as your IRL measurements are. Some options here are to use: a measuring tape (simple, cheap, good enough to set scale of “room-sized” scan), a laser measuring tool (very accurate, more expensive, great for projects that require high accuracy), or… if you have neither of those, you could also use the AR measuring tool on iOS devices (which is neither as precise nor accurate as either of the other tools, but is better than nothing).

Bonus tip: if you forgot entirely to make any sort of measurements when scanning your location, try and find objects or products in the scene that you can find their dimensions online. It could be as simple as the distance between holes of an electrical outlet, an A4 piece of paper, a standardized sign post, or perhaps popular bicycle/motorcycle.

How to set scale using Option 2.

  1. Measure the distance between 2 points IRL (in real life).
  2. In RealityCapture, after aligning, meshing, and texturing a model, select Image 2D > Tools > Define Distance.

3. In the 3D Viewport, select the two points that you measured IRL on the 3d model itself (it helps to be viewing the model’s texture).

4. Now, you’ve created two control points (CP’s). You need to review and approve the CP’s to activate them. (Usually, I approve 2–3 sets of photos that include both CP’s).

5. Then, in the 1Ds section (on the left), select Control Points > Constraints > distance 0. Bellow the 1Ds section, you’ll have a panel called “Selected Constraint(s)” pop up. There, in the “defined distance” row, type in your measured IRL distance. The units are in meters, so the distance I measured in for this example was 34 cm, so I typed “0.34".

6. And finally, save and select Alignment > Update for RC to apply your measurement to the scene and scale everything accordingly.

If those steps are hard to follow, watch this video gif instead of the whole process instead! Hint, click through, change it to HQ, and watch in full screen.

Silent walkthrough of using RC’s “defining distance” feature, approving the CP’s, manually setting the measured distance, and updating the model’s scale.

Option 3: Capture images with GPS data (aka, a drone)

If you use a camera that has a GPS module built in and encode the GPS data into the images’ EXIF data (ie: most DJI drones, smartphones, and some DSLR cameras), RealityCapture and some other photogrammetry software use the GPS data as “ground truth” measurements to set the model’s scale to match its IRL scale 1:1.

Caveat: using GPS to set scale isn’t super accurate. The accuracy of the GPS data encoded in the images depends on quite a few variables, including how many GPS satelites the drone was connected to while the images were being captured.

However, if don’t you need super precise and accurate scale measurements for you scan (as in, you just want to have a scan that’s roughly scaled correctly), it works well enough. For example, I do find it useful to have my drone scans that I upload to Sketchfab be more-or-less correctly scaled, as they’re not captured with professional surveying in mind.

A photogrammetry model at 1:1 scale with drone GPS data. Good enough for a “check out this cool place in VR” type of scans.

Otherwise, to have accurately scaled drone scans, you need real “ground truth” measurements, which include things like ground control points (GCP’s).

Furthermore, I’ve found that GPS scaling is only worth it for drone scans as opposed to scans made with smartphone photos, as the GPS data encoded in smartphone image EXIF are highly inaccurate (much more so than drones’). Typically, using smartphone GPS data for scaling and alignment leads to weirdly rotated and skewed results (which I cover in this troubleshooting article here: Tip: RealityCapture model auto rotation fix).

A badly scaled and rotated photogrammetry scan alignment in RealityCapture as a result of using smartphone images’ GPS data. Read my tutorial on how to fix it.

How to set the correct scale using GPS images.

As the GPS data is encoded in the images, there’s really nothing you need to do for the scanned model to be scaled correctly in RealityCapture (yay!).

However, if for some reason the scan isn’t being scaled properly, these are the settings you should double-check.

  1. Ensure the GPS data is encoded in the images.
You can check the EXIF data of images either directly in Windows (right click > properties > details) or by using an online tool Exifdata.com.

2. In the Alignment Settings, ensure Use camera priors for georeferencing is enabled.

Hope this post has been helpful in scaling your photogrammetry scans to 1:1 scale!

If you have any questions / issues / requests, reach out to me via Twitter 🐦.

--

--

Azad Balabanian

Photogrammetry @realities.io, Host of the ResearchVR Podcast @researchvrcast