Daily Build

用 iTwin Capture Modeler 把无人机航拍照片拼成三维模型

上一篇走的是无人机航拍 → 正射影像这条线,本篇走的是另一条:航拍 → 真三维模型。同一套软件、同一个 Master + Engine 入口,到了 New Reconstruction 那一步分叉——选 Orthomosaic 是上一篇,选 3D Reconstruction 是本篇。

本篇相对上一篇的两个主要增量:

为什么换数据集:本地手头的项目都是大疆消费级无人机做的,没有像控点这一块。要把像控点讲透,直接用 Bentley 官方 Quickstart Exercise 的资料——一座法国变电站,66 张照片、17 个像控点,数据干净、规模小、跑一遍十几分钟,正好用来铺整个流程。本文操作基本与 Bentley 官方教程视频一致,但每一步参数为什么这么设,会按上一篇的风格逐项展开。

一句话预告:本篇里的空三要做两次——第一次「什么都不约束」拿到 relative 的姿态网,借着这个姿态网在照片上点刺像控点;第二次把像控点作为硬约束再跑一遍,得到 georeferenced 的真实坐标。需要强调:两次空三不是「用了像控点就要跑两次」,而是因为 Bentley 这套 Quickstart Exercise 数据的照片 EXIF 里没有 GPS 坐标——没有这个初值,软件没法智能筛选「哪些照片可能拍到这个像控点」,更没法在点完两三张之后给你核线辅助,纯粹靠人工翻 66 张照片找点几乎做不下去。先裸跑一次空三建立相对姿态网,本质上是用照片同名点关系替代缺失的 EXIF GPS。如果你手头是大疆无人机直拍照片 + 像控点的常见项目,EXIF 里有 GPS,第一次空三可以跳过——直接进像控点章节,提交时按本文「第二次空三」的参数设置即可。下面按 Bentley 数据这条主线展开,每节都会标注消费级有 EXIF 项目的对应路径。

至于飞行前的航线规划、重叠度、像控点布设原则等理论部分,已经单独成文,参见 《消费级无人机怎么做三维建模和正射影像》。本篇专注落地后的软件操作。

开始之前

程序分工(Master / Engine / Settings / Desktop Viewer)和硬件检查(GPU Benchmark、AI compatibility、Gaussian Splatting compatibility)的内容与上一篇完全一致,这里不重复。只补充两点:

新建项目与导入照片

打开 Master,右上角 New Capture → New Block,然后在新 Block 的 Photos 页签里 Add Photos → Add Entire Directory,把 Quickstart Exercise 的 66 张照片整个文件夹导进来。这一段操作和上一篇一模一样,省去截图。

跟上一篇唯一的差别在导入完成后的下一步。本篇要走的工作流(针对 EXIF 无 GPS 的本数据集)是:

  1. 提交第一次空三(不带任何配准约束)——为后面点像控做准备
  2. 在 Surveys 页签里导入像控点坐标 + 在照片上点刺
  3. 提交第二次空三(带上像控点作为硬约束)——得到 georeferenced 模型

如果你的项目照片有 EXIF GPS(大疆无人机直拍 + 像控点是最常见的情况):跳过第 1 步,直接 2 → 3。第 3 步空三参数与本文「第二次空三」完全一致,只是软件可以在第一次提交空三时就把像控点和 EXIF GPS 同时利用起来,无需先建一个 relative 的中间模型。

下面按 Bentley 数据这条主线(含第 1 步)展开。

第一次空三:建立相对几何

如果你的照片有 EXIF GPS,可以跳过整个本节——直接看下一节「像控点」开始作业,最后空三按「第二次空三」的参数提交。本节是给 EXIF 缺失或不可用的项目准备的。

第一次空三的目的不是出最终结果,而是建立一张照片之间的相对姿态网——让软件知道哪张照片大概在什么位置、看着哪个方向。这个相对姿态网建立起来之后,后面在 Surveys 页签里点刺像控点时会出现两个关键的辅助:一是缩略图栏的 Potential Matches 标签能筛选出「可能拍到这个点」的照片(不用从 66 张里逐张翻找),二是在两三张照片上点完后软件能在剩余照片上预投射核线(epipolar line)做辅助找点。

照片有 EXIF GPS 的话,软件本来就能用 GPS 坐标做这两件事——所以一次空三搞定。EXIF 缺失的话,没有 GPS 这个初值,就只能先靠照片之间的同名点关系建立一个等效的相对网——这就是第一次空三在做的事。换句话说,第一次空三是用计算时间换 EXIF 缺失的代价,而不是流程上多出来的一步。

在 Block 页面右上角点 Submit Aerotriangulation,弹出 Aerotriangulation Definition 对话框。

Positioning/Georeferencing

aerotriangulation-georeferencing-first

第一次空三时,三个 Adjustment constraints 全部不勾——本数据集照片 EXIF 里没有 GPS 元数据,没有点云扫描数据,控制点也还没导入,没有任何外部约束可用。

Final rigid registration 也不勾——同理,没有任何参考可以做整体配准。

下方提示文字显示 Automatic vertical: The block vertical direction is oriented according to input photo orientation. Block scale and heading remain arbitrary——意思很明确:除了重力方向(靠照片本身的姿态推断哪边朝下)之外,整个 Block 的尺度(多大)和朝向(哪边是北)都是任意的。这正是「relative」状态的几何含义

Use targets 不勾——同上一篇,没铺标靶就关掉。

Settings

aerotriangulation-settings-first

Poses and tie pointsCompute——这是和上一篇关键的差异。上一篇消费级无人机有 EXIF GPS 作为初值,所以选 Adjust(在初值附近微调);本篇 EXIF 里没有可用的位置信息,必须从零解算位姿和连接点,所以选 Compute。

提示文字 Computing poses and tiepoints. Parameters: normal keypoints density, default pairs selection mode 说明了内部参数:normal keypoints density 是默认特征点密度,default pairs selection mode 是默认的图像配对模式。绝大多数场景这两个默认值不需要改。

Optical parametersAdjust main parameters——和上一篇一致。注意提示里多了一行 Pre-calibration stage enabled:因为是从零开始解算位姿,软件会先跑一个预标定阶段,把镜头畸变参数粗调一遍,再进入主解算。Adjust 模式下这一行不一定显示,因为已经有较好的初值不一定需要预标定。

Targets extraction: None。Automatic color correction: Machine Learning。Create splats: 关。这三项和上一篇完全一致。

确认 Engine 在后台运行,点 Submit,本地处理。

第一次空三的结果

跑完之后,Block 树里会多出一个 Block_1 - AT 节点,Overview 页签显示:

aerotriangulation-result-relative

读这张图的时候,重点看两个词:

其他指标都是健康的:66 photos / 1 photogroup / 1.2 gigapixels、66/66 都进了 main component(没有照片掉队)、21018 tie points(平均每张照片约 320 个)。

上一篇的空三结果直接是 georeferenced + meters 一步到位,那是因为消费级无人机的 EXIF 里写了 GPS 坐标作为软配准依据。本篇没有这层保障,所以第一次空三只能停在 relative——不勾任何 constraint 也不选任何 rigid registration,是承认这个事实。

模型已经成形,但还在悬空——下一步用像控点把它「钉」到真实世界。

像控点(Control Points)

为什么需要像控点、像控点的数量/形式/坐标测量原则,已经在 《消费级无人机怎么做三维建模和正射影像》 那篇里讲过,结论一句话:像控点是把模型从相对坐标系钉到真实坐标系的硬约束——相对精度本来就靠空三保证,绝对精度必须靠像控。

本篇专注实操:怎么在 iTwin Capture Modeler 里把像控点用起来

像控点数据格式

Bentley 官方 Quickstart Exercise 提供了一份 GCPs.txt,内容是 17 个点的纯文本表:

Name Easting Northing Elevation
gps10 1830932.439 4230780.088 407.353
plaque5 1830938.821 4230784.985 404.432
plaque4 1830953.579 4230790.569 404.441
gps9 1830971.335 4230804.956 399.554
plaque3 1830966.416 4230837.713 399.521
gps8 1830962.664 4230826.983 399.536
gps7 1830962.271 4230837.843 399.473
gps6 1830947.882 4230833.182 402.280
gps5 1830954.754 4230819.022 402.610
plaque.grise2 1830961.597 4230811.162 403.004
plaque.grise1 1830955.360 4230808.385 403.671
gps04 1830961.632 4230806.238 403.129
plaque2 1830937.041 4230816.126 404.477
plaque1 1830935.715 4230825.417 404.409
GPS0003 1830941.677 4230828.782 404.311
GPS0002 1830947.628 4230804.183 404.422
GPS0001 1830948.700 4230789.177 404.455

这是测绘行业最常见的格式:第一行表头,后面每行一个点,列与列之间用空格分隔。Easting/Northing 是平面坐标(投影坐标系下的东向、北向数值),Elevation 是高程。坐标值的特征数量级 1830xxx / 4230xxx / 4xx 一眼就能看出是 Lambert Conformal Conic 投影下的法国本土坐标——具体是哪个 SRS,下面导入向导里要明确告诉软件。

像控点在测区内的分布大致如下(图示是 Bentley 官方资料里的截图):

gcp-layout

17 个点分布在测区四周和内部,既有四角又有中心,平面分布充分;高程从 399 米到 407 米都有覆盖,垂直分布也充分——这正是像控点布设的两条铁律(综述文章「像控点的空间分布」一节有详细论述)。

4 步导入像控点

切到 Block_1 - AT 的 Surveys 页签。右上角 Survey Points 标签下点 Add 旁边的下拉箭头 → Import Surveys → Custom Text Format (Wizard)

import-surveys-menu

Common Formats 是给标准的 .txt/.csv 用,列固定且按某些通用规则。本数据集是空格分隔、列顺序需要手动指定,走 Wizard 比较稳妥。

第 1 步:Input File

选 GCPs.txt 文件,没什么可讲。

第 2 步:File Format

import-wizard-file-format

下方 Preview 区会实时显示解析后的 4 列表格——gps10 / 1830932.439 / 4230780.088 / 407.353 这样分得整整齐齐,就说明分隔符设对了。

第 3 步:Data Properties

import-wizard-data-properties

Spatial reference system 选 RGF93 / CC45 (EPSG:3945)——这是 Bentley 官方数据的坐标系,法国官方基准。

关于这个坐标系:RGF93(Réseau Géodésique Français 1993)是法国 1993 年建立的地心坐标参考框架,与 WGS 84 在亚米级一致。CC45 是基于 RGF93 的 Conic Conformal projection(兰伯特等角圆锥投影),中央纬度 45°N——这是法国本土 CC42 至 CC50 共 9 个 LCC 投影中按中央纬度划分的一个,Quickstart Exercise 的变电站正好落在 CC45 这个投影适用的纬度范围里。EPSG 编码 3945。

国内项目对应的选择:导入像控点时这个 SRS 必须严格匹配像控点测量当时所用的坐标系——如果测绘队给的是 CGCS2000 / 3-degree Gauss-Kruger 坐标,按测区中央经线在 SRS 数据库里搜索对应 EPSG 编号;如果测绘队直接给的是 WGS 84 / UTM,那就选对应的 UTM 带。下拉框第一栏 Default 没有的话,从 Recent 或 More → Spatial reference system database 里搜索 EPSG 编号最快。

千万不要选错——在错误 SRS 下导入的坐标会被软件按那个 SRS 解算,最终模型整体偏移几十米到几公里都有可能,且很难一眼看出来。

如果你的工程坐标系不在下拉框 Default、Recent 里,点 Spatial reference system database 进数据库按 EPSG 编号搜,几乎所有正式投影都能找到。

第 4 步:Fields

import-wizard-fields

把 Column 1–4 分别指定角色:

X = Easting、Y = Northing——这是投影坐标系里的标准约定(Easting 是东向、Northing 是北向,对应数学坐标系的 X、Y),千万别和测绘内业图纸上的 (X 北向、Y 东向) 习惯弄混。

点 Import,17 个像控点导入完成,Survey Points 列表里出现 17 行。

到这里,软件只是知道了 17 个真实坐标——还没有把它们和照片关联起来。下一步把这 17 个点在照片上精确指出来,才是真正的核心动作。

在照片上点刺像控点

Surveys 页签的主视图是一张大照片 + 右下小窗(放大镜效果),底部缩略图栏列出所有照片,右侧是 Survey Points 列表。

工作流是:点击右侧某个点(如 GPS0001)→ 底部缩略图栏切到能看到这个点的照片 → 在主视图上精确点击这个点的像素位置 → Accept Position。每个点至少要在 3 张不同的照片上点一次,软件才认为这个像控点是有效的。

单点不够:「Less than three positions placed」

刚开始点的时候,第一张点完会弹出这个提示:

control-point-single-photo

Less than three positions placed. To have a valid survey point, place at least three positions on different photos. 翻译过来:少于 3 张照片上的位置已放置,要构成一个有效的 survey point,至少需要在 3 张不同照片上各放一个位置。

为什么是 3 张:理论上 2 张相交可以确定空间一个点的位置,但抗噪能力很差——一张点偏一两个像素就会让交会结果显著偏移。3 张是工程上的最低稳健阈值,同名点几何里也是这个数。

三张完成:核线浮现

点完 3 张照片之后,主视图发生一个明显变化——浮现出橙色的核线(epipolar line)

control-point-three-photos-epipolar

这条橙色线是核线(epipolar line)。它的几何含义是:当像控点 GPS0003 在另外两张照片上的位置已确定,根据多视几何里的极线约束,这个点在当前照片上的位置必须落在这条线上——剩下的二维查找问题被压缩成了一维。你要做的不再是「满图找小标记」,而是「在这条橙线上找精确的像素位置」,效率提升一个数量级。

也就是说,前 3 张点刺辛苦一些(要满图找);从第 4 张开始,软件用核线把工作量大大降低。这是为什么「3 张以上」不只是「有效性」的低门槛,也是「效率开始起飞」的转折点。

实际工作中,前 3 张照片的选择有讲究——尽量选视角差异大的 3 张:从不同方向拍到的、距离不一样的、高度不一样的。视角越分散,核线越准;如果 3 张都从相近角度拍,核线本身就有较大的不确定区间,第 4 张找点就帮不上多少忙。

一些操作细节

心理预期

17 个点 × 至少 3 张照片 = 至少 51 次点刺。如果想精度更高、稳健性更好,每个点点 5–8 张照片(核线收敛更紧),那就是 100 次以上。

这是整个 3D 重建流程最耗人工的一步——空三、重建、纹理化都是按下 Submit 之后让 Engine 自己跑,唯独点刺只能靠人。一个有经验的操作员处理 17 个点的项目大概 30–60 分钟。对绝对精度有要求的项目,这个时间投入省不掉

第二次空三:钉到真实世界

如果你的项目照片有 EXIF GPS,跳过了第一次空三,那么本节就是你的唯一一次空三——参数设置完全相同。

像控点全部点刺完成后,回到 Block 页面,再次点 Submit Aerotriangulation——和第一次是同一个按钮,但这次的设置完全不同。

Positioning/Georeferencing

aerotriangulation-georeferencing-second

Adjustment constraints 勾 Control points——这是硬约束,让空三平差时严格服从像控点的真实坐标。每个像控点的真实坐标 (X, Y, Z) 和它在多张照片上的像素位置组成方程,平差算法会调整每张照片的位姿和镜头参数,让所有这些方程的残差最小化。「硬」的意思是这些约束直接进入误差函数参与优化,权重比 tie points 高得多。

Final rigid registration 选 Control points——硬约束做完平差之后,再做一次整体的刚体变换(rigid transformation:平移 + 旋转 + 等比缩放,不变形),把整个 Block 严丝合缝地贴到像控点的真实坐标上。

下方提示文字一目了然:Using selected data for adjustment (1) and for rigid registration (2). The block is first adjusted to selected data (Adjustment constraints) and then rigidly registered to selected data (Final rigid registration). —— 先用像控点做约束平差让相对几何最优、再做整体刚体变换贴齐到像控点的真实坐标,两层逻辑串联

对照上一篇:上一篇消费级无人机的设置是 Adjustment constraints 全不勾、Final rigid registration 选 Photo positioning metadata——只做「软配准」(用米级 EXIF GPS 整体平移),不让 GPS 数据影响每张照片的精确位姿。本篇有像控点这种更高精度的真实数据,把它升级为「硬约束 + 刚体配准」的双层处理,绝对精度从米级提升到厘米/分米级——具体能到多准,取决于像控点本身的测量精度:RTK 流动站测的能到厘米级,普通差分 GPS 测的多在分米级,不要过度乐观地按「厘米级」承诺给客户。

Settings

aerotriangulation-settings-second

Poses and tie points 选 Adjust——和第一次的关键差异。第一次是从零开始(Compute),这次已经有第一次空三的姿态网作为非常好的初值,只需在初值附近微调。提示文字 Computing tiepoints and adjusting poses 比第一次少了一个「computing poses」——位姿这次是 adjust 不是 compute。结果:跑得更快、精度更稳。

如果你跳过了第一次空三(项目有 EXIF GPS),这里同样选 Adjust——EXIF GPS 给出了米级初值,足够 Adjust 模式起步。这也是上一篇消费级正射影像项目里的同款选择。

其余参数(Targets extraction: None / Automatic color correction: Machine Learning / Create splats: 关)保持和第一次一致。Optical parameters 一般也保持 Adjust main parameters;如果对第一次空三估出来的相机标定结果信心很高,也可以选 Lock all parameters——锁住第一次估的镜头畸变,让本次平差只动位姿和像控点对应的同名点,结果会更稳。

确认无误,提交本地处理。

第二次空三的结果

跑完后回到 Overview,关键三处变化:

aerotriangulation-result-georeferenced

这三处变化是「第二次空三性质完全不同」的明确信号。第一次空三只解决了相对几何,第二次空三完成了绝对配准——同一个 Submit 按钮、不同的参数,效果天差地别。

像控点分类术语

最后一行括号里的 full / horizontal / vertical / check 几个术语值得花两句话讲清楚:

实际工程项目里强烈建议保留 1–2 个 check point——比如这个数据集 17 个点,可以拿出 GPS04 和 plaque3 当 check(剩下 15 个 full + 2 个 check)。否则平差完之后你只知道「残差是多少」,但残差是平差自己优化的目标,不能算客观证据;check point 的误差才是真正的「我估出来的坐标和真实坐标差多少」。Bentley 教学样本为了简化没保留,实际项目不要照抄

各项数据正常后,可以进入 3D 重建。

新建重建(3D Reconstruction)

Block_1 - AT - AT 节点(第二次空三的产物,注意是双 AT 后缀)上点 New Reconstruction,这次选 3D Reconstruction——不是上一篇的 Orthomosaic。进入新建的 Reconstruction_1 节点,核心配置在 Spatial Framework 页签。

spatial-framework-3d

Spatial Reference System (SRS)

WGS 84 / UTM zone 31N (EPSG:32631)——和像控点导入时用的 EPSG:3945 不一样,这是有意为之

像控点导入时用的是法国本地的 RGF93 / CC45(数据采集者用的工程坐标系),重建输出选 WGS 84 / UTM 31N 是为了和国际通用的 GIS 数据更易对接。iTwin Capture Modeler 在两个 SRS 之间会自动做坐标转换,用户不需要手动算——只要 EPSG 编号填对,模型最终落在 UTM 31N 下的位置和它从 CC45 转过去是一致的。

国内对应的选择:测区在东经 102°–108° 之间走 UTM 48N (EPSG:32648),108°–114° 走 UTM 49N (EPSG:32649),114°–120° 走 UTM 50N (EPSG:32650),120°–126° 走 UTM 51N (EPSG:32651),126°–132° 走 UTM 52N (EPSG:32652)。判断方法上一篇讲过——UTM 带号 = ⌈(经度 + 180) ÷ 6⌉。要用国家 2000 大地坐标系,就选 CGCS2000 / 3-degree Gauss-Kruger CM XXX E。

Region of Interest(3D Box / Polygon)

点 Edit 进入 3D ROI 编辑器:

roi-3d-box

蓝色稀疏点云是空三阶段的 tie points——把它们当作三维测区的视觉参考,调整外面的蓝色立方体框(Box 模式)裁出真正想建模的范围:变电站本体 + 紧邻一圈,把远处的树、远房子、过高的电塔顶部排除掉。Polygon 模式给不规则区域用,需要手动画多边形 + 设上下高度。

和上一篇 2D ROI 的差异:上篇是平面多边形(只裁 X-Y),本篇是 3D 包围盒——多了一个高度方向的裁剪。可以把感觉数据稀疏的高空、或者无关的地下深部也裁掉,进一步减小重建范围。3D 重建的耗时大致和 ROI 体积成正比,能裁就裁。

裁剪过紧也不好——ROI 边缘的几米通常重建质量较差(因为照片在边缘的覆盖度天然降低),稍微留出 5–10 米的缓冲带,最终能用的部分会更干净。

Tiling

回到 Spatial Framework 主面板:

下方 Overview 显示 Dimensions 103.558 × 91.6638 × 37.4472 米(注意第三维是 37 米的高度——立方体范围而非平面),The tiling contains 1 tile(s)Expected maximum RAM usage for a job: 15 GB——本数据集很小(约 1 公顷),单 tile 装下了。对比上一篇大庆走廊 130 个 tile,差了两个数量级。

不要拿这个 14 分钟的处理时长去外推自己的项目——本数据集是教学样本。实际中等规模项目(300–800 张照片、覆盖几公顷到几十公顷),3D 重建通常几小时到一天;大规模项目(千张以上、城区或大型工程场地),两到三天也常见。

Production Definition

Spatial Framework 配置好后,右上角 Submit Production,弹出 Production Definition 对话框。

Purpose

production-purpose-3d

只勾 Export 3D mesh——这是本篇的主线产物。其他选项:

Format/Options(主推:3SM)

production-format-options-3sm

Format 选 Bentley Scalable Mesh (3SM)——Bentley 自家原生格式,多分辨率 LOD(金字塔结构),最适合在 iTwin Capture Desktop Viewer 和 MicroStation 系列里浏览编辑。

子参数都用默认即可:

Spatial Reference System

production-srs-3d

WGS 84 / UTM zone 31N (EPSG:32631) + EGM96 geoid height (EPSG:5773)——和 Spatial Framework 的 EPSG:32631 一致,但额外带上了 EGM96 geoid height

这个 + EGM96 是本篇相对上一篇必须警示的一个坑——3D 模型的高程 Z 值必须明确是「椭球高」还是「正常高」,两者会差几十米。

  • 椭球高(Ellipsoidal Height):从 WGS 84 椭球面起算的高度。GPS 模块原始输出的就是这个值。
  • 正常高(Orthometric Height):从大地水准面(geoid)起算的高度。水准仪测的、工程图纸标的、人脑里「海拔」的概念都是这个。注意手机和消费级 GPS 设备显示的「海拔」通常是系统层已经做过 EGM96 校正后的正常高——不要把手机显示的「海拔」再当椭球高去对模型 Z 值,会等效于扣两次 geoid。
  • 两者之差:取决于测区位置——中国大部分地区椭球高比正常高高 −15 到 −30 米(数值看似奇怪是因为 geoid 在多数地方位于椭球面之下),欧洲在 ±50 米范围内变化,全球范围最大可超过 ±100 米。

如果只选 EPSG:32631 不带 EGM96,导出模型的 Z 值是椭球高——拿去和工程图纸的「绝对高程」对一对,整个模型在 Z 方向偏几十米。+ EGM96 geoid height (EPSG:5773) 这层组合让软件自动减去 geoid 起伏,输出的 Z 就是大家通用的正常高。

上一篇做正射没碰到这个问题,是因为 2D 正射影像的最终产物是平面 (X, Y) 加纹理,Z 方向的偏移不影响平面坐标的正确性;DSM 文件里的高程虽然会受影响,但很多项目里 DSM 只用作相对高差分析,绝对值偏几十米也不影响。3D 模型不一样——交付出去的模型如果要和真实高程对齐(叠加水准点、和工程图纸合并、做高度量测),geoid 必须勾上。

国内项目对应的选择:UTM 带后面带上 + EGM96 geoid height (EPSG:5773),几乎所有公开高程数据都用 EGM96。如果工程上更严格地用 CGCS2000 + 1985 国家高程基准,需要在 SRS 数据库里搜索对应的复合 EPSG 代码或自定义。

Extent / Destination

跟上一篇一致,简单带过。Extent 默认 Use all tiles,Destination 默认放在项目目录的 Productions/Production_1/

提交生产与处理时长

参数全部确认后点 Submit,本地处理。任务完成后 Production 节点状态变为 Completed:

production-completed-3d

处理时长参考

数值
硬件 NVIDIA GeForce RTX 2060(OpenGL 跑分 151.1,CUDA 算力 7.5)
照片数量 66 张(1.2 gigapixels)
Tile 数量 1
Tile 大小 103.6 × 91.7 × 37.4 米
内存预算 15 GB
第一次空三(EXIF 缺失项目独有) 约 5 min
像控点点刺(人工) 约 40 min
第二次空三(带像控点约束) 约 3 min
Production 耗时(重建 + 3SM 导出) 14min 4s

再强调一次:本数据集是教学样本,规模极小。实际项目按几百到几千张照片,3D 重建耗时从几小时到几天不等,不能据此外推。EXIF 完整的项目可以省掉第一次空三的 5 分钟,但这一项的占比相对像控点点刺的人工和最终重建耗时都很小,省与不省影响不大。

任务完成后,Productions 子目录下会得到 3SM 文件。3SM 是单一 .3sm 文件,自包含 LOD 和纹理——拷贝、分享时只要这一个文件即可,比 OSGB(多 tile 多文件结构)和 3MX(主文件 + 子文件夹)都更省心。

查看模型

3SM 用 iTwin Capture Desktop Viewer 打开(安装 Capture Modeler 时一起装了的那个):

model-3sm-desktop-viewer

整座变电站的三维模型——红屋顶住宅、变压器、电塔架、围墙、道路、周边树木和坡地都还原得相当完整。这是从空三 + 像控点 + 三维重建一整套流程跑下来的最终产物。可以在 iTwin Capture Desktop Viewer 里旋转、缩放、量距离、量面积。

拓展一:导出 OSGB

3SM 是 Bentley 系生态里的最优解,但国内倾斜摄影行业的事实标准格式是 OSGB——Smart3D 时代延续下来,国内几乎所有倾斜摄影浏览/发布平台都吃这个格式。如果你的成果要在国内行业内交付、分发、对接 Web 平台,OSGB 比 3SM 的兼容性高一个量级

OSGB 不需要重新跑空三和重建——Reconstruction_1 已经存在的情况下,新建一个 Production,Format 选 OSGB 即可,几十秒到几分钟就跑完导出。

Format/Options 推荐设置

production-format-options-osgb

用什么打开 OSGB

Spatial Reference System 同 3SM

OSGB 的 SRS 设置和 3SM 一样——选 WGS 84 / UTM zone 31N (EPSG:32631) + EGM96 geoid height (EPSG:5773),geoid 那一层不能省,原因同上。

拓展二:高斯泼溅(Technical Preview)

iTwin Capture Modeler 从某个版本起内置了高斯泼溅(Gaussian Splatting) 的实验性导出。这是一种和摄影测量传统 mesh 完全不同的三维表示——3DGS 把场景表示为一组带颜色、不透明度、各向异性参数的高斯椭球体云,渲染时按视角动态合成。视觉效果对树叶、电力网架、毛发、模糊边界这类传统 mesh 难以处理的细节有显著优势。

但 3DGS 几何上不可信——不能在它上面量距离、验证墙面是否垂直、转 CAD 出图。详细的「3DGS 适合看,摄影测量适合用」讨论已经在 《消费级无人机怎么做三维建模和正射影像》最后一节 里展开过,这里只讲软件操作。

Purpose

production-purpose-splats

新建一个 Production,Purpose 只勾 Gaussian Splatting (Technical Preview)——和 Export 3D mesh 是独立的两条产物,要哪个就勾哪个。底部提示文字 Gaussian Splatting is currently available as a technical preview feature. It is not recommended for production environments. 也明示了:当前只是技术预览,不建议用于正式生产环境。出来的成果给视觉展示玩玩没问题,要交付正式工程就还是回 3D mesh。

Format/Options

production-format-options-splats

Spatial Reference System

同 3SM——WGS 84 / UTM zone 31N (EPSG:32631) + EGM96 geoid height (EPSG:5773)

跑完 Production 后会得到一个 .ply 文件,拖到 SuperSplat(https://playcanvas.com/supersplat/editor)这类 Web 浏览器里就能旋转查看,也可以拷贝链接发给客户在浏览器里直接打开。

后续使用

3D 模型成果做出来后,最常见的几个去向:

导入 MicroStation / Bentley 系列

3SM 是 Bentley 自家格式,原生支持。在 MicroStation / OpenRoads / OpenBuildings Designer 里把 3SM 作为 reality mesh 附加进去,可以直接和工程设计模型同框协作——做设备布置、巡检路线规划、施工模拟。这是 3SM 相对其他格式最大的差异化优势。

导入 Cesium / Web 平台

OSGB 用 supermap iDesktop、Cesium-Lab、3dtilesconvert 等工具转 3D Tiles (b3dm/i3dm) 格式,再发布到 Cesium / 各种 Web 平台。3D Tiles 是 OGC 标准,几乎所有现代 Web GIS 都支持。这条路是工程级倾斜摄影成果上 Web 的标准流程。

导入 Unreal / Unity / Blender

需要把模型用于游戏引擎、影视渲染、动画时,Production 时把 Format 换成 OBJ 或 FBX,导出后直接拖入引擎即可。OBJ 用于静态展示,FBX 支持更多元数据。注意 Unreal 等引擎对单 mesh 的三角面数有限制(默认百万级),整体模型可能需要先用 LOD 工具简化。

DSM / 正射影像

如果需要同一个项目同时拿到 2.5D 产物(DSM、正射影像),直接在 Block_1 - AT - AT 节点上新建一个 Reconstruction,选 Orthomosaic,参数设置参考上一篇文章。空三结果可以共用,不需要重新跑——这是 iTwin Capture Modeler 一个很方便的设计。

相关资料


本文采用 CC BY-NC-SA 4.0 协议发布,可自由转载、修改,但需保留作者署名、不可用于商业用途、衍生作品需以相同协议发布。