What's new¶
A reader-facing history of changes to the manual, newest first.
The list of entries is generated from the manual's revision
history (scripts/gen_changelog.py); the one-line description
after each entry is written by hand and preserved when the list
is regenerated.
August 2026¶
New articles
- Choosing camera axes: aerial vs terrestrial (and YPR vs OPK) — Why terrestrial capture should use OPK reference angles today: the YPR gimbal-lock problem, the Sensor.axes fix, and the 2.3.1 .psz bug that keeps OPK the safe choice.
Updated — 15 articles
chunk.transform.matrixis local→world;camera.transformis local — Added a link to Choosing camera axes.- AprilTag detection — choosing a variant — Trimmed the Context, moved the variant definitions beside the table, wrapped the confidence callout, and signposted the occlusion-robustness explanation.
- Bundle-adjustment quality: variance factor, overfit testing, and reference detectability — Added the per-observation a-priori σ column and a measured variance-factor benchmark, and clarified that the tie-point σ is per-projection (
tiepoint_accuracy × keypoint size). - Camera reference error: computing per-camera location and orientation residuals in Python — Added a link to Choosing camera axes.
- Coded circular targets: printing, sizing, and choosing a variant — Merged the family-selection tables into one decision section, moved the marker-pool and binary-code tables into a reference appendix, shortened the title, and signposted the explanatory sections.
- Drone metadata: DJI altitude semantics and RTK XMP accuracy tags — Added a link to Choosing camera axes.
- Fixing exterior orientation: skipping Align Photos with known EO — Added a link to Choosing camera axes.
- Gray flags in marker detection: what they mean and how to remove them — Updated the coded circular targets cross-link label.
- Helping alignment when photos don't align: markers, references, and what to use when — Updated the coded circular targets cross-link label.
- Importing camera orientation: EXIF, omega-phi-kappa, and yaw/pitch/roll — Added a link to Choosing camera axes.
- Keypoint-size-normalised reprojection error: the
kpsmetric — Verified the per-projection tie-point weighting (σ =tiepoint_accuracy × proj.size) empirically, promoted the article to verified, and repaired its front matter. - Programmatic marker placement and pinning — Updated the coded circular targets cross-link label.
- Saving estimated reference values to file: location, rotation, error, and sigma — Added a link to Choosing camera axes.
- Tightening reference accuracies after
alignCameras: when the similarity-transform residual isn't enough — Added a link to Choosing camera axes. - YPR rotation conventions:
ypr2matvscamera.reference.rotation— Added an inline link to Choosing camera axes at the OPK caveat.
July 2026¶
Updated
- Orthomosaic export — the 4GB / BigTIFF limit and shift-during-export — Added a hedged caveat on disabled cameras and seamline regeneration during export.
- Reference preselection — Documented the measured sequential-preselection window and added a verification script.
June 2026¶
New articles — 125 articles
alignChunks(method=point)cannot break geometric symmetrycamera.projectandcamera.unproject: 2D ↔ 3D in Pythonchunk.transform.matrixis local→world;camera.transformis localexportPointClouddefaults: GUI vs Python CRS differencefilter_mask=TruestarvesmatchPhotoswhen masks cover most of the imagemask_tiepointscross-view propagation and the foreground-occluder casemergeChunksdoes not deduplicate camerasModel.renderDepth: synthetic depth rendering from arbitrary viewpointssensor.calibrationvssensor.user_calib— initial vs adjusted values- Adaptive camera model fitting
- Adding cameras to an aligned chunk: the
keep_keypointsworkflow - Agisoft knowledge base
- AI-assisted mask generation
- Aligning two meshes / point clouds: model-to-model registration in Python
- Applying Patch on multiple shapes (orthomosaic patching by script)
- AprilTag detection — choosing a variant
- Area and volume measurement: Model view vs DEM, Shapes vs cropping
- Auto-export per-shape: orthomosaic, DEM, point cloud, mesh, KMZ
- Automatic sky masking with ONNX: pre-clean for sky-prone aerial captures
- Automating gradual selection in Python
- Bundle-adjustment quality: variance factor, overfit testing, and reference detectability
- Calibration groups: programmatic management in Python
- Camera reference error: computing per-camera location and orientation residuals in Python
- Camera stations: when to use them and the nodal-head requirement
- Change Path: swapping image format / resolution after alignment
- Choosing the master sensor in a multi-camera layout
- Choosing which camera parameters to fix or optimize
- Coded circular targets: printing, sizing, and choosing a variant
- Color calibration: when to use it, what it does, and the white-balance / vignetting knobs
- Comparing chunks for change detection: DEM, mesh, and point-cloud diff workflows
- Components view
- Computing camera direction vectors and look-at points in Python
- Computing per-camera coverage area (image footprint on the model)
- Contributing
- Converting
camera.transformto ENU (or any local Cartesian) - Creating point shapes programmatically: grid placement with DEM-based elevation
- Custom vertical datums: adding a geoid undulation grid
- Declaring a fixed-geometry multi-camera rig in Python
- DEM build options: point cloud vs mesh as source, and the interpolation knob
- Depth-map quality and filter modes: choosing parameters for Build Point Cloud
- Diagnosing CUDA / OpenCL errors: timeouts, OOM, kernel failures
- Diagnosing under-aligned chunks
- Diagnostic mesh visualisation: colorize by overlap or altitude
- Drone metadata: DJI altitude semantics and RTK XMP accuracy tags
- DSM ridge-line artefacts: alignment-quality diagnosis, not DEM-pipeline bugs
- Estimate image quality
- Exclude stationary tie points: when and why
- EXIF focal length: which tags Metashape reads, and the no-crop-factor rule
- Exporting cameras for Gaussian Splatting / Colmap downstream pipelines
- Exporting depth maps from Python (32-bit, scaled)
- Exporting to Cesium 3D Tiles: point cloud vs tiled model
- Filtering cameras by tie-point selection: which photos see this 3D point?
- Fisheye and spherical sensors: the seven projection types and when each applies
- Fixing exterior orientation: skipping Align Photos with known EO
- Generic preselection
- Glossary
- Gradual selection
- Gray flags in marker detection: what they mean and how to remove them
- Ground classification: the erosion radius parameter
- Guided matching
- Helping alignment when photos don't align: markers, references, and what to use when
- How Metashape computes vertex normals on model export
- Importing camera orientation: EXIF, omega-phi-kappa, and yaw/pitch/roll
- Intel i9-13900K / 14900K instability: BIOS workarounds for Metashape crashes
- Keypoint-size-normalised reprojection error: the
kpsmetric - Linux vs Windows: 10–40% faster processing
- Logging from Metashape Python scripts (and why
app.settings.log_*does not work for headless scripts) - Mapping orthomosaic pixels back to source images
- Marker projection statistics: counts, per-marker errors, and metre-vs-pixel framing
- Mesh and point-cloud editing recipes (Python)
- Mesh surface types: Arbitrary vs Height field, and the source-data choice
- Metashape's distortion model and converting to OpenCV / Colmap
- Multi-GPU setups: SLI, TCC mode, and utilization
- Multispectral imaging: per-file band declaration and master-band change
- Network processing: setup, monitoring, and common failure modes
- Orthomosaic export — the 4GB / BigTIFF limit and shift-during-export
- Orthomosaic in a marker-defined planar projection
- Pair preselection: choosing between Disabled, Generic, and Reference
- Performance tuning: CPU, RAM, GPU, and OS
- Point cloud confidence values: what they mean and how to filter
- Programmatic calibration import / export
- Programmatic chunk.region control: move, scale, rotate the bounding box
- Programmatic marker placement and pinning
- RAM and quality settings: what determines peak memory
- Recovery paths for unaligned cameras
- Reducing camera overlap in over-acquired datasets
- Reference preselection
- Release gate demos
- Removing "blue flag" marker projections cleanly
- Rendering models from synthetic cameras: spherical panoramas and regular views
- Repositioning a chunk: moving the origin to a known point
- Reproducing chunk-info statistics in Python
- Reprojection error analysis: per-camera and per-tie-point
- Rolling-shutter compensation: Regularized vs Full, when to use which
- Sample data
- Saving estimated reference values to file: location, rotation, error, and sigma
- Scalebar distance error: per-scalebar values and RMS aggregation
- Scripting context pitfalls: GUI vs command-line, document handles, and stage validation
- Sensor and camera shared-tie-point graphs: detecting isolated groups
- Setting
chunk.regionto bound the tie-point cloud - Style
- Symlink filename — not target — controls the camera label
- Synthetic position priors via
ReferencePreselectionSource - Texture blending modes — what each one actually does
- Texture in Metashape 2.3 — what changed and why your scripts may need updating
- The
merge_tiepointsoption (and thekeep_keypointsprerequisite) - The chunk's internal coordinate system: arbitrary scale and the
chunk.transform.scalefactor - The Clean Tie Points → Optimize Cameras loop
- The slave-sensor transform: composition rule, axis convention, and recipes
- The three
alignChunksmethods (point / marker / camera) - Tie-point multiplicity: track length, distribution, and what it tells you
- Tightening reference accuracies after
alignCameras: when the similarity-transform residual isn't enough - Tiled models: when to use, what they replace, and how to export
- Transferring camera orientation between modalities (RGB → thermal)
- Troubleshooting Metashape: diagnostic ladder and where the logs live
- Undocumented tweaks: a partial reference
- Unverified
- Version differences
- Version timeline
- What
mergeChunksactually does (and what it does not) - When does
optimizeCamerasactually do something? - When does Metashape use the GPU? (and how to verify)
- When to use chunks: dataset partitioning strategies
- Working with shape geometries (1.7+ API)
- YPR rotation conventions:
ypr2matvscamera.reference.rotation