On a house with a repetitive slat/tile roof, we processed the same 436 drone photos (DJI Air 3S, 4096x3072) in RealityScan and in Agisoft Metashape (2.3.1):
RealityScan: rows of holes and double-surface pockets across the roof planes (screenshots attached). Same photos.
We measured both results: RealityScan’s camera geometry is far MORE accurate (cameras within ~1-2 cm of GPS ground truth, scale 1.000; Metashape carries a hidden ~41 cm offset between its two camera groups). We prefer RealityScan and want to stay on it - but we cannot deliver roofs with holes to clients. How can we get a continuous surface from this photo set in RealityScan?
Alignment settings (CLI names; all other settings default):
Align the 436 photos with the settings above → one component, 435/436 registered. Verified against GPS ground truth: positions within ~1-2 cm, scale 1.000 (per-camera export and modeling report available on request).
Normal-detail reconstruction, default settings.
Observe rows of holes/pockets on the roof planes, following the slat pattern. High detail (96M tris) shows the same defects.
As you can see from the screenshots, on the left is with RS and on the right is with Agisoft. Originally, RS even produced two separate components, they cannot be merged automatically. The result on the left is after we have tried our best to merge the two components to form a house, whereas Agisoft did it easily
this is the classic repetitive-structure trap: on slat/tile patterns the feature matcher cannot tell adjacent tiles apart, so it builds wrong correspondences between rows. the solver then disagrees about depth on that surface, and conflicting depth hypotheses get rejected as noise — that is your rows of holes and double-surface pockets. Metashape survives it because its depth estimation leans more heavily on the photoconsistency/regularization side instead of pure feature geometry. your cameras being MORE accurate in RealityScan is consistent with that: alignment is fine, the dense stage is where it falls apart.
what actually helps in RealityScan, roughly in order of impact:
more overlap and better baselines for the roof specifically. holes on planes happen where depth is under-constrained from above-only views. if any oblique photos exist that see the roof surface at an angle, make sure they are in the set; if you can reshoot, two altitude passes with the roof planes seen from 30-45 degrees fix this class of problem permanently.
raise sfmMaxFeaturesPerMpx and switch detector sensitivity to High if you have not — on repetitive textures you want every corner the detector can find, since distinctive non-repeating details (joints, damage, edges between slats) are what anchor the surface.
raise the dense point budget and lower the depth filtering strength. default depth filtering is tuned to reject conflicting hypotheses, and repetitive texture manufactures exactly those. filtering strength Low/Minimal keeps the roof points that defaults throw away, at the cost of more cleanup elsewhere.
mask the roof edges and chimneys/antennas if they protrude — occlusion boundaries over the roof contribute the pocket artifacts, and clean masks are the cheapest quality win available.
if a few holes persist, the pragmatic production route is targeted repair: import the mesh, patch those planes manually (Blender/Maya), reproject the texture. for client delivery nobody can see a patched roof plane, and it beats burning days of tuning for a surface the solver fundamentally struggles with.
the irony is your measurement shows RealityScan is doing the harder part (exact camera geometry) correctly; the holes are the dense-stage filter being conservative on a pathological texture. 3 + 1 usually gets a continuous roof out of it.