重构导出对话框
概述
重构导出是一种倾斜摄影模型处理工具,提供从倾斜摄影模型读取到 OBJ/FBX 模型导出的完整工作流程。
该功能包含网格简化、点云处理、网格重建、模型优化和纹理烘焙等常用算法,允许用户通过界面配置处理步骤,将倾斜摄影模型转换为适用于多种用途的三维模型。
打开文件或工程后,右键点击矢量或地块后,点击 菜单栏 -> 导入/导出 -> 重构导出OBJ/FBX 按钮,即可打开重构导出对话框。
如图:
功能组成
- 模型处理:支持采样、简化、重网格化等基础几何处理功能
- 纹理处理:可保留原始模型的外观信息,生成新的纹理贴图
- 流程设置:允许用户组合不同处理步骤,根据需求调整参数
- 常用预设:提供简化、修复和单体化等预设方案,简化操作流程
应用场景
- 局部区域处理:针对建筑、桥梁等特定区域进行处理
- 简化导出:通过简化、重构算法,导出简化模型
- 区域导出:通过限制读取级别和面数,处理较大区域的模型
- 模型修复:处理模型间隙、删除多余组件,提高模型完整性
- 纹理重建:为处理后的模型生成新的 UV 贴图和纹理
输出用途
处理后的模型可用于:
- GIS 系统中的地理对象
- 游戏开发中的场景资产
- 设计软件中的参考模型
- 虚拟现实应用的场景元素
- 可视化平台的展示模型
重构导出工具通过提供多种处理选项,帮助用户根据实际需求对倾斜摄影模型进行适当的处理和优化。
界面布局
重构导出对话框分为以下几个主要区域:
- 左侧区域:显示结果层列表和细节信息
- 中央区域:3D 模型预览窗口
- 右侧区域:流程控制面板,包含预设选择、处理步骤配置和导出选项
基本操作流程
选择预设流程
- 点击界面右上方的"流程预设"下拉按钮
- 从预设列表中选择一个适合您需求的预设流程
自定义处理步骤
添加处理步骤
- 点击"流程设置"旁边的"+"按钮
- 从弹出的菜单中选择要添加的步骤类型
- 新步骤将添加到流程列表中
配置步骤参数
- 在流程列表中点击要配置的步骤
- 在步骤面板中设置相关参数
- 点击步骤中的"执行"按钮应用设置
调整步骤顺序
- 通过拖放方式调整流程列表中步骤的顺序
- 步骤的执行将按照列表中的顺序进行
删除步骤
- 点击步骤面板中的删除按钮移除不需要的步骤
执行处理流程
- 配置完所有步骤后,系统将按照步骤列表顺序依次执行处理
- 执行过程中,步骤状态会自动更新
- 处理过程可能需要一些时间,请耐心等待
查看处理结果
- 处理结果会在左侧的结果层列表和 3D 预览窗口中查看对应结果
- 在"细节"面板中可以查看当前选中结果的详细属性信息
调整视图选项
见三维视窗,此外可以使用"点大小"滑块调整点集点的显示尺寸
导出结果
- 选择"导出格式"(支持 FBX 和 OBJ)
- 设置"导出路径"指定保存位置
- 点击"导出"按钮执行导出操作
- 等待导出完成,系统会显示导出状态信息
流程预设
重构导出功能提供多种预设流程,便于用户根据不同需求快速配置处理步骤。这些预设按处理目标分为三大类别,每类下包含多个针对性预设方案。
预设类别
简化
面向常规模型简化需求,减少面数并优化网格结构。
-
基础导出
- 描述:基础的只进行网格合并的模型导出
- 适用场景:原始模型质量良好,仅需简单合并瓦片
- 包含步骤:读取 → 网格合并 → 导出
- 优点:保留原始模型的全部细节,处理速度快
-
网格简化
- 描述:通过边折叠对模型网格进行简化后导出
- 适用场景:需要减少模型面数,提高渲染性能
- 包含步骤:读取 → 网格合并 → 简化 → 纹理烘焙 → 导出
- 优点:有效减少面数同时保持模型主要特征,有利于后续手工/算法处理
-
重网格化
- 描述:通过重网格化将模型网格重构后导出
- 适用场景:原始模型网格质量不佳,需要改善三角形分布
- 包含步骤:读取 → 网格合并 → 重网格化 → 纹理烘焙 → 导出
- 优点:生成更规则均匀的网格,便于后续编辑处理
修复
专注于解决模型拼接问题,消除网格间隙和重叠区域。
-
点集网格重建
- 描述:从原始模型采样点集、重新三角化后导出
- 适用场景:指定层级导出等场景下,瓦片间的间隙无法直接合并时
- 包含步骤:读取 → 采样 → 推进前沿重建 → 纹理烘焙 → 导出
- 优点:通过重新生成表面来解决难以直接修复的拼接问题
-
网格腐蚀桥接
- 描述:删除网格重叠部分并重新拼接导出
- 适用场景:模型有明显重叠区域和接缝问题时
- 包含步骤:读取 → 网格合并 → 重网格化 → 重叠腐蚀 → 边界桥接 → 纹理烘焙 → 导出
- 优点:生成干净无缝的连续表面
单体化
实现模型低多边形化,提取主要结构特征。
- 点集平面逼近
- 描述:从原始模型采样点集、检测平面后,基于平面重建模型
- 适用场景:需要低多边形模型,特别是建筑物等具有明显平面特征的模型
- 包含步骤:读取 → 采样 → 平面检测 → 基于平面的网格重建 → 纹理烘焙 → 导出
- 优点:可以输出优于直接网格简化的低多边形模型,保留主要平面特征
使用预设流程
- 在界面右上方选择处理目标类别(简化、修复或单体化)
- 在预设列表中选择适合您需求的具体预设方案
- 点击"确认"按钮应用预设
- 系统将自动配置相应的处理步骤和参数
- 预设应用后,您仍可以根据需要调整各步骤的具体参数
自定义预设
除了系统提供的预设方案外,您还可以基于预设进行自定义调整:
- 先选择一个接近您需求的预设方案
- 应用后,添加、删除或调整处理步骤
- 调整各步骤的参数以获得最佳效果
- 执行自定义流程
选择合适的预设可以显著简化工作流程,为大多数常见任务提供优化的处理路径。对于特殊需求,建议从最接近的预设开始,再进行针对性调整。
处理步骤详细说明
重构导出功能提供了以下多种处理步骤,每种步骤具有特定的功能和参数设置:
数据准备
读取
- 功能:加载和准备原始数据
- 参数:
- 最大级别:控制读取的最大层级数量(下拉选择)
- 级别越高,加载的数据越详细,但处理时间和内存需求也越高
- 级别越低,加载的数据越简化,但可能丢失一些细节
- 最大面数:限制加载的最大三角形数量
- 当加载的三角形数量达到此值时,会停止继续加载数据
- 较低的值可以防止处理超大模型时内存溢出
- 设置为较高的值时,可以加载更完整的模型数据,但可能影响性能
- 最大级别:控制读取的最大层级数量(下拉选择)
- 说明:
- 读取必须作为重构流程的第一步使用
- 根据处理需求和计算机性能选择合适的最大级别和面数限制
- 读取完成后会显示实际加载的瓦片数量和面数统计信息
- 处理大型模型时,请合理设置参数以平衡质量和性能需求
点云处理
采样
- 功能:基于输入的网格模型生成点集,通过不同采样方式控制点的数量和分布
- 参数:
- 采样方法:决定如何从网格生成点集
- 网格:通过网格划分方式进行采样,具有以下子参数:
- 网格间距:控制采样网格的大小,值越小生成的点越多
- 采样表面:是否从三角面中采样点
- 采样边界:是否从三角边采样点
- 采样顶点:是否保留原始模型顶点
- 顶点:仅保留原始模型顶点,无需额外参数
- 网格:通过网格划分方式进行采样,具有以下子参数:
- 采样方法:决定如何从网格生成点集
- 说明:
- 采样步骤需要网格数据作为输入,通常放在读取步骤之后
- 网格采样方式提供更多的控制选项,适合大多数模型处理情况
- 顶点采样方式适合仅需保留原始模型顶点位置的情况
- 网格间距过小可能导致点数过多(系统限制最多 2 亿点)
- 可通过选择性开启"采样面"、"采样边"和"采样顶点"选项来控制采样点的分布
- 采样结果会保留原始模型的法线信息
WLOP 简化
- 功能:使用加权局部最优投影方法对点云进行简化和规整化处理
- 参数:
- 目标类型:指定简化的目标方式
- 点数:直接指定简化后保留的点数量
- 百分比:指定保留原始点云的百分比(1-100%)
- 邻接半径:控制简化过程中考虑的邻域大小
- 较大的半径会产生更平滑的结果,但可能丢失细节
- 较小的半径可以保留更多细节,但效果可能不够明显
- 优化迭代:算法执行的迭代次数(默认 35 次)
- 更多迭代可以获得更均匀的分布,但处理时间也更长
- 统一采样:是否强制点云分布更加均匀
- 启用后会使点云间距更加一致,适合后续处理
- 禁用时会更好地保留原始点云的密度分布特性
- 目标类型:指定简化的目标方式
- 说明:
- WLOP 简化需要点集作为输入,可以放在采样或其他点云处理步骤之后
- 该方法不仅减少点数,还能有效去除噪声并使点分布更加均匀
- 处理结果会保留原始点云的法线信息
- 简化过程可能较为耗时,特别是当迭代次数较多时
栅格简化
- 功能:通过空间栅格划分方式对点云进行均匀简化
- 参数:
- 栅格大小:控制空间划分的栅格单元大小
- 设置为 0 时自动使用点云平均间距的 1.414 倍
- 值越小保留的细节越多,但简化效果越不明显
- 值越大简化效果越明显,但可能丢失更多细节
- 栅格必要点数:每个栅格单元内保留的点数量(默认为 1)
- 增加该值可在保持点云整体形状的同时减少噪点
- 当设置为 1 时,每个栅格单元只保留一个点
- 较大的值会使简化后的点云在某些区域保持更高的密度
- 栅格大小:控制空间划分的栅格单元大小
- 说明:
- 栅格简化需要点集作为输入,适合放在采样或其他点云处理步骤之后
- 这是一种高效的简化方法,处理速度快且内存消耗低
- 相比 WLOP 简化,栅格简化不会调整点的位置,仅通过选择性保留部分点来实现简化
- 该方法会保留点云的法线信息和聚类信息
- 对于包含平面区域的建筑类模型,栅格简化通常表现良好
平面检测
- 功能:在点云中检测和分割平面区域
- 参数:
- 邻接半径:控制检测时考虑的邻近点范围
- 值为 0 时自动设为点云平均间距的 2.5 倍
- 值越大检测的平面连续性越好,但可能会合并不同平面
- 值越小可以更精确地区分相邻平面,但可能导致过度分割
- 最大距离:点到平面的最大容许距离
- 值为 0 时自动设为点云平均间距的 2.5 倍
- 增大此值可以容纳更多噪声点,但可能降低平面的精度
- 减小此值可以提高平面边界的精确性,但对噪声更敏感
- 最大角度:法线偏差的最大角度(默认 25 度)
- 控制点法线与平面法线之间允许的最大偏差角度
- 角度越小,检测的平面越平整,但可能识别较少
- 角度越大,可以检测到更弯曲的表面,但可能不够精确
- 最少点数:一个平面区域包含的最少点数(默认 100)
- 值越大可以过滤掉小的噪声平面
- 值越小可以检测到更小的平面结构
- 邻接半径:控制检测时考虑的邻近点范围
- 说明:
- 点集平面检测需要点集作为输入,适合放在采样或其他点云处理步骤之后
- 检测结果会以不同颜色标记不同的平面区域,便于观察和后续处理
- 如果检测不到平面,可以尝试增大最大距离和最大角度参数
- 检测结果会保留为点云格式,并添加聚类信息标识不同平面
- 检测到的平面信息可用于后续的模型重建和优化过程
网格重建
推进前沿重建
- 功能:使用推进前沿算法从点云生成三角网格表面
- 参数:
- 最大边长:控制生成的网格中三角形边的最大长度
- 设置为 0 表示无限制
- 较小的值会产生更密集的网格,但可能无法连接较远的点
- 较大的值允许连接更远的点,但可能在稀疏区域生成不合理的三角形
- 该参数显著影响重建速度
- 半径比界限:控制三角形的形状质量(默认值为 5)
- 值越小生成的三角形越规则,但可能无法完全覆盖表面
- 值越大可以覆盖更多区域,但可能产生细长的三角形
- 建议保持默认值,除非有特殊需求
- β 角度:控制表面生长过程中的角度限制(默认 30°)
- 角度越小生成的表面越平滑,但可能无法重建尖锐特征
- 角度越大可以重建更多细节和尖锐特征,但可能导致表面不平滑
- 最大边长:控制生成的网格中三角形边的最大长度
- 说明:
- 推进前沿重建需要点集作为输入,通常放在点云处理步骤之后
- 该算法适合处理具有均匀分布点的模型,能较好地保持表面细节
- 生成的结果为三角网格,可用于后续的网格处理和优化
- 对于有孔洞或分离部分的点云,可能需要配合其他步骤进行处理
- 建议先进行点云简化或滤波处理再使用该步骤
网格处理
简化
- 功能:通过边缘折叠算法简化网格,在尽量保持几何特征的同时减少三角形数量
- 参数:
- 目标面数:控制简化后的三角形数量
- 值越小简化效果越明显,但可能丢失更多细节
- 值越大保留更多细节,但简化效果有限
- 方法:简化使用的算法选择
- LindstromTurk:以保持体积、形状和边界特性为目标的简化方法
- 体积权重:控制保持原始体积的重要性(默认 0.5)
- 边界权重:控制保持边界特征的重要性(默认 0.5)
- 形状权重:控制保持三角形形状的重要性
- GarlandHeckbert:基于二次误差度量的简化方法
- 策略:提供多种折叠策略选择
- 平面:基于平面几何特性的折叠
- 概率平面:在平面策略上添加概率因素
- 三角形:基于三角形保持的折叠
- 概率三角形:在三角形策略上添加概率因素
- 策略:提供多种折叠策略选择
- LindstromTurk:以保持体积、形状和边界特性为目标的简化方法
- 目标面数:控制简化后的三角形数量
- 说明:
- 简化步骤需要网格数据作为输入
- 对于具有复杂几何特征的模型,推荐使用 LindstromTurk 方法
- 对于需要更快处理速度的情况,可以选择 GarlandHeckbert 方法
- 当原始模型面数小于目标面数时,将不执行简化操作
- 简化结果保持原始模型的基本形状,但细节程度降低
网格合并
- 功能:专门用于处理倾斜摄影模型中的瓦片拼接问题,将分块加载的网格模型沿边界合并,消除瓦片间接缝,形成连续统一的表面
- 参数:
- 合并类型:控制合并过程中的处理策略
- 默认:适用于 CC 生成的模型
- 大疆:针对大疆生成的模型优化,专门处理其特有结构
- 合并类型:控制合并过程中的处理策略
- 说明:
- 网格合并步骤必须在读取步骤之后使用
- 主要目的是处理倾斜摄影瓦片分页间的边缘合并,解决模型分块导致的接缝问题
- 针对大型复杂模型,合并过程可能较为耗时
- 网格合并不合并地块间的边缘(可以使用腐蚀桥接预设或使用重叠腐蚀+边界桥接步骤)
重网格化
- 功能:使用各向同性重网格化算法重新构建模型网格,生成更加均匀和规则的三角形分布,提高网格质量
- 参数:
- 目标边长:控制重构后网格的三角形边长
- 设置为"自动"(值为 0)时,将使用输入网格的平均边长
- 值越小生成的网格越精细,三角形数量越多
- 值越大生成的网格越粗糙,三角形数量越少
- 目标边长:控制重构后网格的三角形边长
- 说明:
- 重网格化需要网格模型作为输入
- 该步骤不改变模型的整体形状,仅优化网格的三角形分布
- 处理结果为具有更均匀三角形分布的网格模型
- 对于具有不规则三角形或网格质量低的模型特别有用
- 可用于改善后续处理步骤(如边界处理、纹理映射)的效果
- 处理大型模型时可能需要较长时间
边界和孔洞处理
边界桥接
- 功能:检测并连接网格模型中的分离边界,通过创建新的三角面片来填补边界间的缝隙,使模型更加完整连续
- 参数:
- 桥接阈值:控制边界点连接的距离阈值
- 设置为"自动"(值为 0)时,将使用输入网格平均边长的 2 倍作为阈值
- 值越小连接更精确,但可能无法连接较远的边界
- 值越大可以桥接更远的边界,但可能产生不合理的连接结构
- 桥接阈值:控制边界点连接的距离阈值
- 说明:
- 边界桥接需要网格数据作为输入
- 边界桥接通常应在重叠腐蚀步骤之后使用
- 重叠腐蚀先清除重叠区域,创建干净的边界
- 然后边界桥接将这些边界连接起来,形成完整的表面
- 这种顺序产生的结果质量更高,边界连接更自然
- 特别适用于修复模型中的开放边界、裂缝和分离区域
- 对于多块模型的连接(如倾斜摄影地块之间的连接)特别有效
- 完整的处理流程通常为:网格合并 → 重网格化 → 重叠腐蚀 → 边界桥接
- 处理结果会在保持原始形状的同时,增加连接边界的新三角形
补洞
- 功能:自动识别并填充网格模型中的孔洞,通过创建新的三角形面片来封闭开放边界,提高模型的完整性和连续性
- 参数:
- 最大长度:限制要填充的孔洞周长
- 设置为"自动"(值为 0)时,将使用输入网格平均边长的 9 倍
- 超过此长度的孔洞将不会被填充
- 较小的值可以避免填充可能是模型本身特征的大型开口
- 最大顶点数:限制要填充的孔洞边界顶点数量
- 设置为"不限制"(值为 0)时,所有孔洞都会被考虑
- 超过此值的复杂孔洞将不会被填充
- 该参数可以控制填充的复杂度
- 密度系数:控制填充网格的密度(默认值为 1.41)
- 值越小生成的填充网格越稀疏
- 值越大生成的填充网格越密集,质量越高
- 平滑度:控制填充表面的平滑程度(0-2)
- 0:不进行平滑处理
- 1:进行 C^1 连续性平滑(默认值)
- 2:进行 C^2 连续性平滑,生成更光滑的填充区域
- 最大长度:限制要填充的孔洞周长
- 说明:
- 补洞需要网格数据作为输入
重叠腐蚀
- 功能:识别并腐蚀网格模型中的重叠区域,移除模型中冗余的三角面片,创建干净的边界,为后续的边界桥接做准备
- 参数:
- 重叠阈值:控制腐蚀边界的范围
- 设置为"自动"时,将使用输入网格的平均边长作为阈值,一般自动即可
- 重叠阈值:控制腐蚀边界的范围
- 说明:
- 重叠腐蚀需要网格数据作为输入
- 该步骤适用于处理倾斜摄影地块间的重叠区域
- 在完整的处理流程中,通常应在网格合并步骤之后使用
- 腐蚀后会生成干净的边界,这些边界适合通过边界桥接步骤连接起来
- 推荐的处理顺序是:网格合并 → 重网格化 → 重叠腐蚀 → 边界桥接
模型优化
组件过滤
- 功能:自动识别并筛选网格模型中的连通组件,根据面积大小或数量条件保留或移除特定组件,用于清理模型、去除噪声或提取关键结构
- 参数:
- 过滤规则:控制组件筛选的方式
- 面积降序:按面积从大到小排序组件,保留指定数量的最大组件
- 保留个数:设置要保留的组件数量(默认为 1,即仅保留最大组件)
- 面积升序:按面积从小到大排序组件,保留指定数量的最小组件
- 保留个数:设置要保留的组件数量
- 面积大于:仅保留面积大于指定阈值的组件
- 面积阈值:设置面积的最小值(单位为平方米)
- 面积小于:仅保留面积小于指定阈值的组件
- 面积阈值:设置面积的最大值(单位为平方米)
- 面积降序:按面积从大到小排序组件,保留指定数量的最大组件
- 过滤规则:控制组件筛选的方式
- 说明:
- 组件过滤需要网格数据作为输入
- 处理前会先进行边界缝合操作,改善模型的连通性
- 该步骤特别适用于以下场景:
- 清除模型中的浮动碎片和小型噪声组件
- 提取模型中最主要的结构(通常是最大组件)
- 分离模型中特定大小的部分进行单独处理
- 去除扫描或重建过程中产生的离群小块
- 对于大多数清理操作,建议使用"面积降序"规则并保留 1 个组件
- 处理结果会保留满足条件的组件,删除其余组件
- 该步骤通常应放在网格处理或修复步骤之后,导出前使用
纹理处理
纹理烘焙
- 功能:从读取步骤的原始模型中提取纹理,并烘焙到当前处理的网格上,使处理后的模型保持原始的视觉效果
- 参数:
- 纹理大小:控制生成的纹理图像分辨率
- 值越大生成的纹理越精细
- 常用值包括 1024、2048、4096 等 2 的幂次值
- 纹理精度:控制纹理分辨率的密度,单位为"像素每米"
- 设置为"自动"时根据模型尺寸自动计算合适的精度
- 值越大表示每米物理距离包含更多像素,纹理细节越丰富
- 值越小表示每米物理距离包含较少像素,纹理占用空间更小
- 对于细节丰富的模型,建议使用较高的值
- 边界扩展:控制纹理边界的扩展范围
- 较大的值可以减少纹理边缘的接缝问题
- 较小的值可以保留更多有效纹理区域
- 纹理大小:控制生成的纹理图像分辨率
- 说明:
- 纹理烘焙仅处理模型的纹理,不修改模型的几何结构
- 烘焙步骤采用前面处理步骤的网格,但从读取步骤的原始数据中提取纹理信息
- 处理过程包括以下几个阶段:
- 自动进行 UV 展开,为模型创建纹理坐标
- 从原始数据中提取纹理并应用到模型上
- 烘焙是处理流程中的最后一个步骤,通常在所有几何处理完成后执行
- 烘焙后的模型将包含统一的纹理,便于后续编辑和导出
- 对于大型模型和高分辨率纹理,处理可能需要较长时间和较大内存
导出
- 功能:将处理后的模型数据保存为标准 3D 文件格式,便于在其他软件中使用
- 参数:
- 导出格式:选择要生成的文件格式
- FBX:适用于动画和渲染软件,如 3ds Max、Maya 等
- OBJ:广泛支持的通用格式,适用于大多数 3D 软件
- 导出路径:指定导出文件的保存位置和名称
- 导出格式:选择要生成的文件格式
- 说明:
- 导出会等待所有流程步骤完成
- 大型模型导出可能需要较长时间,特别是包含高分辨率纹理时

