第05章:变换、裁剪与多模型场景管理
清理之后,下一步往往是校正模型方向与比例、裁剪边界,以及在一个场景里组合多个模型。本章对应源码 src/tools/(变换工具)、src/transform.ts、src/pivot.ts、src/scene.ts 与 src/ui/scene-panel.ts。
1. 变换工具:移动、旋转、缩放
SuperSplat 提供三种标准变换工具,可用数字键快速切换:
| 工具 | 快捷键 | 源码 |
|---|---|---|
| 移动(Move) | 1 |
tools/move-tool.ts |
| 旋转(Rotate) | 2 |
tools/rotate-tool.ts |
| 缩放(Scale) | 3 |
tools/scale-tool.ts |
激活后视口中会出现 Gizmo(操纵手柄):
- 移动:拖动箭头沿单轴平移,拖动平面手柄沿平面平移;
- 旋转:拖动圆环绕对应轴旋转;
- 缩放:拖动立方体手柄沿轴缩放,中心手柄等比缩放。
变换底层由 src/transform.ts(变换数据)、src/transform-handler.ts 与 src/transform-palette.ts(数值输入面板)实现,可在面板中直接输入精确的位移、角度、缩放数值,比纯拖动更精准。
2. 坐标空间:世界 vs 局部
变换可以在世界坐标系(world)或局部坐标系(local)下进行,由 ToolManager 维护当前坐标空间(tool.coordSpace):
- 切换:
Shift + C(tool.toggleCoordSpace)或工具栏按钮; - 世界空间:手柄始终对齐全局坐标轴,适合“把模型摆正到地面”;
- 局部空间:手柄对齐模型自身朝向,适合沿模型自身轴向微调。
3. 轴心(Pivot)
变换围绕一个轴心点(Pivot) 进行(src/pivot.ts)。轴心决定旋转与缩放的中心:
- 默认轴心通常位于选区或模型的中心;
- 调整轴心位置可实现“绕某个特定点旋转”,例如让模型绕其底部中心旋转以便摆正到网格地面上。
4. 变换“选区” vs 变换“整个模型”
SuperSplat 既能变换整个高斯模型(最常用,用于规范化方向、比例与位置),也能变换被选中的部分高斯点(用于局部修整,例如把歪掉的一部分掰正)。注意:
- 变换整个模型属于实体级(Entity)变换,记录在模型的变换属性中;
- 变换选中的点会改变这些高斯的位置/旋转/缩放数据本身(仍可撤销)。
5. 模型规范化实战:摆正、对齐、缩放到真实尺度
从训练管线导入的模型常见三类问题与对应处理:
- 上下颠倒 / 倾斜:用旋转工具(通常绕 X 轴 ±90° 或 180°)让“地面”水平。可先打开网格(
G)作为水平参照; - 偏离原点:用移动工具把模型主体移到世界原点附近、底面贴合网格;
- 比例不真实:用缩放工具按已知尺寸(如门高 2m)调整到真实世界尺度。包围盒尺寸叠加层(
src/ui/bound-dimensions-overlay.ts)会实时显示模型的物理尺寸,便于对照。
规范化后的模型在导入到任意引擎时都能“开箱即用”,朝向、位置、比例一致。
6. 裁剪边界
清理与变换之外,裁剪用于只保留感兴趣的空间范围:
- 用包围盒选择(第 04 章)框出要保留的区域,反选(
Ctrl + I)后删除外部; - 或用包围盒框出要删除的区域直接删除;
- 配合 View Cube 切到正视/俯视,可以非常精确地沿某个平面裁切(例如裁掉地面以下的部分)。
7. 多模型场景管理
SuperSplat 的场景(src/scene.ts)由若干 Element 组成,包括一个或多个高斯模型(Splat)、相机、网格、叠加层等。你可以在同一个场景中加载多个模型:
- 场景面板 / 模型列表(
src/ui/scene-panel.ts、splat-list.ts)列出所有已加载的模型,可:- 切换每个模型的可见性;
- 选中某个模型作为当前编辑目标(注意:选区编辑当前聚焦于被选中的那个模型);
- 重命名、删除模型;
- 独立变换:分别选中不同模型并变换,把它们摆放到合理的相对位置(例如把多个扫描拼接成一个大场景);
- 新增/移除:继续拖入新文件即可添加模型(
AddSplatOp);从列表移除会触发scene.elementRemoved,相关历史操作会被清理。
合并模型
多个模型经过对齐后,可在导出时合并为一个文件(参见第 08 章导出设置),方便作为单一资产分发。
8. 场景配置
src/scene-config.ts 定义了场景的默认配置,包括背景颜色、相机初始参数、网格、色调映射(tonemapping)、包围盒显示等。这些大多可在视图设置面板(src/ui/view-panel.ts)中交互调整,用于:
- 设置合适的背景色以便观察暗色/亮色模型;
- 调整相机 FOV 与近远裁剪面;
- 控制网格、叠加层的显示。
9. 实战流程:从原始扫描到规范资产
- 加载并清理模型(第 04 章);
- 打开网格
G,切到正视/侧视; - 用旋转工具把地面摆平,用移动工具把底面贴合网格、主体居中;
- 参照包围盒尺寸叠加层,用缩放工具调整到真实尺度;
- 用包围盒裁剪掉多余边界;
- 如需组合,加载其余模型并逐一对齐;
- 进入下一阶段:调色(第 06 章)或直接导出(第 08 章)。
10. 本章小结
本章覆盖了 SuperSplat 的空间编辑能力:
- 移动/旋转/缩放三种变换工具,配合 Gizmo 与数值面板精确操作;
- 世界/局部坐标空间切换与轴心(Pivot)控制;
- 既可变换整个模型,也可变换选中的高斯点;
- 模型规范化(摆正、居中、缩放到真实尺度)与边界裁剪;
- 多模型场景管理:模型列表、可见性、独立变换与合并。
下一章我们进入外观调整——颜色、对比度与球谐光照编辑。