Decorative-object photogrammetry: preparing a printable scan

You want to reproduce a bust, an ornament, or a garden figure from photos instead of a dedicated scanner. Meshroom, an open source photogrammetry tool, documents a full pipeline from images to a textured mesh. This page follows that documented order, then walks through the geometry and sizing checks you do in the slicer. It does not pick a scanner and does not promise measurement accuracy.

The short answer

The documented Meshroom pipeline reconstructs a 3D model from images, and the linked tutorial describes a textured OBJ with MTL and texture files. That workflow does not set a physical dimension or prove that a mesh is watertight or ready to print. In PrusaSlicer, size fields and scaling tools let you choose a working size; a known dimension can be used as a reference, but scaling cannot correct scan distortion. Prusa’s corrupted-model article describes repairs that may fail or reduce resolution.

What a photogrammetry scan actually gives you

The default pipeline in the Meshroom manual reconstructs a 3D model from 2D images. The beginner tutorial describes its own output as a textured OBJ mesh with MTL and texture files, then shows publishing it to Sketchfab. These documents do not provide a procedure for measuring the real object, setting physical scale or checking mesh watertightness. Treat the OBJ and related files as reconstruction outputs to inspect before another use.

This page limits its example to preparing a decorative object intended to be viewed. For a part that must fit another, check shape and dimensions against the actual assembly need; the Meshroom tutorial does not provide a metrology method. The software produces a reconstruction and texture, but their suitability remains to be assessed in the next tools. This page connects the Meshroom workflow to Prusa’s documented size-manipulation and repair features without claiming a result for any particular scan.

Shooting the photos the way the Meshroom tutorial describes

The Meshroom tutorial is blunt about it: shooting quality is the most important and most challenging part of the process, and it has dramatic impacts on the final mesh. The main goal is sharp images with no motion blur and no depth blur. To get there, the tutorial recommends a tripod or a fast shutter speed, a smaller aperture with a higher f-number for more depth of field, and a low ISO to keep noise down.

It also frames the shoot as a compromise between scene size, material properties, texture quality, available time, amount and variation of light, and the camera's own quality and settings. For a decorative object, that translates into steady lighting and a subject that does not move during the series. Meshroom reads the image metadata to set up the scene and leans on a camera sensor database to work out internal camera parameters. If metadata is missing or the device is unknown, an explicit warning appears. The process still runs, but results may be degraded. Shoot with a camera that writes metadata whenever you can, and since the tutorial lists varying light among the constraints, finish the set in one lighting condition.

Running the reconstruction: the default pipeline nodes

According to the Meshroom manual, the default pipeline chains eleven nodes in this order: CameraInit, FeatureExtraction, ImageMatching, FeatureMatching, StructureFromMotion, PrepareDenseScene, DepthMap, DepthMapFilter, Meshing, MeshFiltering, and Texturing. The tutorial folds that chain into two big steps. Structure-from-Motion infers the rigid scene structure as 3D points along with the pose and internal calibration of every camera, and its result is a sparse point cloud in Alembic format. MultiView-Stereo then uses those calibrated cameras to build a dense surface and texture it.

In practice, you save the project with File, Save As, drop your photos into the Images area, and press Start. Everything Meshroom computes lands in a MeshroomCache folder next to the project file, and the project stays portable with that folder. A colored progress bar shows the state of each step: green for computed, orange for computing, blue for submitted, red for error. On hardware, the tutorial says an Nvidia GPU is required for dense high quality mesh generation and that 32 GB of RAM is recommended for meshing, with parameters you can adjust if you fall short of that. These figures are the cited tutorial’s requirements, not a setup tested here; check the requirements for the version you install.

Check the Structure-from-Motion result before the heavy steps

The Meshroom tutorial recommends working iteratively, and the first iteration is to compute only the StructureFromMotion node by right-clicking it and choosing Compute. According to the tutorial, that is the best way to tell whether the reconstruction is likely to succeed before you start the rest. It names two indicators: the number of reconstructed cameras, shown with a green camera icon in the Images panel, and the look and density of the sparse point cloud. If the result disappoints, the tutorial suggests setting the Describer Preset on the FeatureExtraction node to high, or even ultra for a small dataset, and enabling akaze under Describer Type on FeatureExtraction, FeatureMatching, and StructureFromMotion.

The tutorial also describes a draft mesh built straight from the SfM output: duplicate the branch from DepthMap, remove DepthMap and DepthMapFilter, then connect PrepareDenseScene to Meshing and to Texturing. This shortcut skips the most computation-intensive step and works without an Nvidia GPU, but it will not reach the quality of the default pipeline and only works on highly textured subjects. Use it as a quick preview before committing to the dense computation, or to narrow the reconstructed area by raising the Min Observations Angle For SfM Space Estimation parameter so background elements drop out.

Inspect and simplify the mesh before you export

Once the whole pipeline finishes, the Load Model button at the bottom of the 3D Viewer loads the textured mesh. The tutorial notes there is no export step: the files are already on disk. Right-click the Texturing media and choose Open Containing Folder to reach the OBJ and texture files. Look the shape over on screen first. Click and drag to orbit, double-click on geometry to recenter the view, and use the wheel to zoom. Hunt for missing areas, background pieces that got reconstructed by mistake, and noisy surfaces.

The tutorial shows how to cut the polygon count with a MeshDecimate node fed from the MeshFiltering output, using a maximum of 100,000 vertices as its example, then how to retexture that lighter mesh with a second Texturing node. It also says a mesh cleaned up in outside software can be retextured by Meshroom, as long as it stays in the same 3D space, meaning no change to scale or orientation. For a monochrome shape in the proposed workflow, inspect geometry: a color texture does not automatically become relief in the mesh. Which file format to hand the slicer is covered in the STL vs 3MF guide.

Repair and size the mesh in the slicer

Prusa’s knowledge base explains that some models are corrupted and that PrusaSlicer cannot automatically repair every defect. It cites a “Fix by the Netfabb” workflow on Windows 10 and external tools whose current availability was not checked here; it notes that solutions vary by model and that Make solid can reduce resolution. For a scan, inspect warnings and geometry, then visually review any repaired copy before proceeding: the absence of a warning does not demonstrate watertightness or printability.

Then comes size. The cited Meshroom tutorial does not describe setting physical scale. PrusaSlicer's object manipulation panel lets you type in position, rotation, scale factor, and size. Choose a known extent of the object, such as overall height in a defined orientation, and check that it matches the size field being adjusted. A distance between two arbitrary details is not automatically that overall extent. Use uniform scaling to preserve proportions and inspect all three dimensions afterward. If the size is a design choice, just type the height you want. Prusa explains that in world coordinates the size changes as you rotate the object, while it stays constant in object coordinates. This scaling does not correct a distorted reconstruction, and a part that has to fit something belongs on the dimensional accuracy page.

Decorative-object photogrammetry scan: step, documented source, check to perform

StepWhat the source documentsWhat you check
ShootingMeshroom tutorial: sharp images, tripod or fast shutter, high f-number, low ISONo blur, steady light, metadata present
Structure-from-MotionMeshroom tutorial: compute this node alone firstCount of green cameras, density of the sparse cloud
Dense pipelineMeshroom tutorial: dense high-quality generation is described with an Nvidia GPU; a draft SfM variant is described without oneNvidia GPU available, progress bar with no red
Mesh inspectionMeshroom tutorial: Load Model, orbit and zoom in the 3D ViewerMissing areas, stray background, surface noise
DecimationMeshroom tutorial: MeshDecimate node fed from MeshFilteringVertex count the slicer handles comfortably
RepairPrusa: model-dependent repairs; Windows 10/Netfabb example and listed tools require a current availability checkInspect repaired geometry and warnings; Prusa says results depend on the model
SizingPrusa knowledge base: size and scale factor fields, object vs world coordinatesKnown dimension entered with uniform scale, orientation set before reading

Frequently asked questions

Does Meshroom export an STL file?

The tutorial describes a textured OBJ mesh with MTL and texture files on disk, with no export step in the workflow shown. It does not mention a built-in STL output. Check the formats accepted by the slicer you use before choosing an export or conversion.

Do I need an Nvidia GPU to use Meshroom?

According to the tutorial, an Nvidia GPU is required for dense high quality mesh generation, because the depth maps need CUDA. The tutorial describes a draft meshing variant from the SfM output that works without an Nvidia GPU, at lower quality and only on highly textured subjects.

How do I know my scan will print at the right size?

The cited Meshroom documents do not establish physical scale for the described workflow. In PrusaSlicer, choose a known extent that actually matches the Size field, such as overall height in a fixed orientation. Apply uniform scaling, then inspect dimensions. This does not correct reconstruction distortion.

The bottom of my scan is not flat. How do I sit it on the bed?

For FFF mode, Prusa documents moving an object below the bed so only the part above is printed; a white outline shows the intersection. This can define a flat base without guaranteeing adhesion or support-free printing. Drop to bed returns the object to the bed. The same documentation says moving below the bed is not allowed in SLA mode.

Why does the size change when I rotate the object in PrusaSlicer?

Prusa explains that world coordinates are constant relative to the print bed, so the displayed size changes with rotation. Object coordinates stay constant no matter the rotation. Set your print orientation before reading or entering a dimension, and check which system is active in Advanced or Expert mode.

Sources and limits

  • Meshroom manual — Photogrammetry Pipeline, develop branch
  • Meshroom manual — Tutorial: Meshroom for Beginners
  • Corrupted 3D models for printing — Prusa Knowledge Base
  • Object manipulation panel — Prusa Knowledge Base
  • Move, Rotate, Scale tools — Prusa Knowledge Base

We organize manufacturer and community documentation; we have not measured these products ourselves. The manual for your exact model takes precedence over general guidance.

Keep exploring

A clearer shortlist starts with your projects.

Use the free buying checklist and budget worksheet before comparing offers.

Get the free starter kit