跳转至

重构导出对话框

概述

重构导出是一种倾斜摄影模型处理工具,提供从倾斜摄影模型读取到 OBJ/FBX 模型导出的完整工作流程。

该功能包含网格简化、点云处理、网格重建、模型优化和纹理烘焙等常用算法,允许用户通过界面配置处理步骤,将倾斜摄影模型转换为适用于多种用途的三维模型。

打开文件或工程后,右键点击矢量或地块后,点击 菜单栏 -> 导入/导出 -> 重构导出OBJ/FBX 按钮,即可打开重构导出对话框。

如图:

layer_tree_sections_pop_menu.png

reconstruct_dialog

功能组成

  • 模型处理:支持采样、简化、重网格化等基础几何处理功能
  • 纹理处理:可保留原始模型的外观信息,生成新的纹理贴图
  • 流程设置:允许用户组合不同处理步骤,根据需求调整参数
  • 常用预设:提供简化、修复和单体化等预设方案,简化操作流程

应用场景

  • 局部区域处理:针对建筑、桥梁等特定区域进行处理
  • 简化导出:通过简化、重构算法,导出简化模型
  • 区域导出:通过限制读取级别和面数,处理较大区域的模型
  • 模型修复:处理模型间隙、删除多余组件,提高模型完整性
  • 纹理重建:为处理后的模型生成新的 UV 贴图和纹理

输出用途

处理后的模型可用于:

  • GIS 系统中的地理对象
  • 游戏开发中的场景资产
  • 设计软件中的参考模型
  • 虚拟现实应用的场景元素
  • 可视化平台的展示模型

重构导出工具通过提供多种处理选项,帮助用户根据实际需求对倾斜摄影模型进行适当的处理和优化。

界面布局

重构导出对话框分为以下几个主要区域:

  • 左侧区域:显示结果层列表和细节信息
  • 中央区域:3D 模型预览窗口
  • 右侧区域:流程控制面板,包含预设选择、处理步骤配置和导出选项

基本操作流程

选择预设流程

  1. 点击界面右上方的"流程预设"下拉按钮
  2. 从预设列表中选择一个适合您需求的预设流程

自定义处理步骤

添加处理步骤

  1. 点击"流程设置"旁边的"+"按钮
  2. 从弹出的菜单中选择要添加的步骤类型
  3. 新步骤将添加到流程列表中

配置步骤参数

  1. 在流程列表中点击要配置的步骤
  2. 在步骤面板中设置相关参数
  3. 点击步骤中的"执行"按钮应用设置

调整步骤顺序

  • 通过拖放方式调整流程列表中步骤的顺序
  • 步骤的执行将按照列表中的顺序进行

删除步骤

  • 点击步骤面板中的删除按钮移除不需要的步骤

执行处理流程

  1. 配置完所有步骤后,系统将按照步骤列表顺序依次执行处理
  2. 执行过程中,步骤状态会自动更新
  3. 处理过程可能需要一些时间,请耐心等待

查看处理结果

  • 处理结果会在左侧的结果层列表和 3D 预览窗口中查看对应结果
  • 在"细节"面板中可以查看当前选中结果的详细属性信息

调整视图选项

三维视窗,此外可以使用"点大小"滑块调整点集点的显示尺寸

导出结果

  1. 选择"导出格式"(支持 FBX 和 OBJ)
  2. 设置"导出路径"指定保存位置
  3. 点击"导出"按钮执行导出操作
  4. 等待导出完成,系统会显示导出状态信息

流程预设

重构导出功能提供多种预设流程,便于用户根据不同需求快速配置处理步骤。这些预设按处理目标分为三大类别,每类下包含多个针对性预设方案。

预设类别

简化

面向常规模型简化需求,减少面数并优化网格结构。

  • 基础导出

    • 描述:基础的只进行网格合并的模型导出
    • 适用场景:原始模型质量良好,仅需简单合并瓦片
    • 包含步骤:读取 → 网格合并 → 导出
    • 优点:保留原始模型的全部细节,处理速度快
  • 网格简化

    • 描述:通过边折叠对模型网格进行简化后导出
    • 适用场景:需要减少模型面数,提高渲染性能
    • 包含步骤:读取 → 网格合并 → 简化 → 纹理烘焙 → 导出
    • 优点:有效减少面数同时保持模型主要特征,有利于后续手工/算法处理
  • 重网格化

    • 描述:通过重网格化将模型网格重构后导出
    • 适用场景:原始模型网格质量不佳,需要改善三角形分布
    • 包含步骤:读取 → 网格合并 → 重网格化 → 纹理烘焙 → 导出
    • 优点:生成更规则均匀的网格,便于后续编辑处理

修复

专注于解决模型拼接问题,消除网格间隙和重叠区域。

  • 点集网格重建

    • 描述:从原始模型采样点集、重新三角化后导出
    • 适用场景:指定层级导出等场景下,瓦片间的间隙无法直接合并时
    • 包含步骤:读取 → 采样 → 推进前沿重建 → 纹理烘焙 → 导出
    • 优点:通过重新生成表面来解决难以直接修复的拼接问题
  • 网格腐蚀桥接

    • 描述:删除网格重叠部分并重新拼接导出
    • 适用场景:模型有明显重叠区域和接缝问题时
    • 包含步骤:读取 → 网格合并 → 重网格化 → 重叠腐蚀 → 边界桥接 → 纹理烘焙 → 导出
    • 优点:生成干净无缝的连续表面

单体化

实现模型低多边形化,提取主要结构特征。

  • 点集平面逼近
    • 描述:从原始模型采样点集、检测平面后,基于平面重建模型
    • 适用场景:需要低多边形模型,特别是建筑物等具有明显平面特征的模型
    • 包含步骤:读取 → 采样 → 平面检测 → 基于平面的网格重建 → 纹理烘焙 → 导出
    • 优点:可以输出优于直接网格简化的低多边形模型,保留主要平面特征

使用预设流程

  1. 在界面右上方选择处理目标类别(简化、修复或单体化)
  2. 在预设列表中选择适合您需求的具体预设方案
  3. 点击"确认"按钮应用预设
  4. 系统将自动配置相应的处理步骤和参数
  5. 预设应用后,您仍可以根据需要调整各步骤的具体参数

自定义预设

除了系统提供的预设方案外,您还可以基于预设进行自定义调整:

  1. 先选择一个接近您需求的预设方案
  2. 应用后,添加、删除或调整处理步骤
  3. 调整各步骤的参数以获得最佳效果
  4. 执行自定义流程

选择合适的预设可以显著简化工作流程,为大多数常见任务提供优化的处理路径。对于特殊需求,建议从最接近的预设开始,再进行针对性调整。

处理步骤详细说明

重构导出功能提供了以下多种处理步骤,每种步骤具有特定的功能和参数设置:

数据准备

读取

  • 功能:加载和准备原始数据
  • 参数
    • 最大级别:控制读取的最大层级数量(下拉选择)
      • 级别越高,加载的数据越详细,但处理时间和内存需求也越高
      • 级别越低,加载的数据越简化,但可能丢失一些细节
    • 最大面数:限制加载的最大三角形数量
      • 当加载的三角形数量达到此值时,会停止继续加载数据
      • 较低的值可以防止处理超大模型时内存溢出
      • 设置为较高的值时,可以加载更完整的模型数据,但可能影响性能
  • 说明
    • 读取必须作为重构流程的第一步使用
    • 根据处理需求和计算机性能选择合适的最大级别和面数限制
    • 读取完成后会显示实际加载的瓦片数量和面数统计信息
    • 处理大型模型时,请合理设置参数以平衡质量和性能需求

点云处理

采样

  • 功能:基于输入的网格模型生成点集,通过不同采样方式控制点的数量和分布
  • 参数
    • 采样方法:决定如何从网格生成点集
      • 网格:通过网格划分方式进行采样,具有以下子参数:
        • 网格间距:控制采样网格的大小,值越小生成的点越多
        • 采样表面:是否从三角面中采样点
        • 采样边界:是否从三角边采样点
        • 采样顶点:是否保留原始模型顶点
      • 顶点:仅保留原始模型顶点,无需额外参数
  • 说明
    • 采样步骤需要网格数据作为输入,通常放在读取步骤之后
    • 网格采样方式提供更多的控制选项,适合大多数模型处理情况
    • 顶点采样方式适合仅需保留原始模型顶点位置的情况
    • 网格间距过小可能导致点数过多(系统限制最多 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 方法
    • 对于需要更快处理速度的情况,可以选择 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 软件
    • 导出路径:指定导出文件的保存位置和名称
  • 说明
    • 导出会等待所有流程步骤完成
    • 大型模型导出可能需要较长时间,特别是包含高分辨率纹理时