# 使用 Polycam 扫描

[Polycam](https://poly.cam/) 可以在手机或平板上同时记录空间画面与设备的移动路径（相机轨迹）。01Spatial 使用完整的 **Raw Data（原始数据）** 数据包建立高质量视觉地图，并进一步优化这条轨迹。你不需要手工设置控制点，也不要只上传一个三维模型文件。

> 这条路径适合使用 Polycam 扫描室内空间。扫描单个商品或摆件的 **Object Mode**、只生成平面图的输出，以及 **360 Mode** 都不是这条建图路径的输入。

## 1. 确认设备与输出

推荐使用支持激光雷达（LiDAR）的 iPhone 或 iPad，并在 Polycam 中选择 **Space Mode**。没有 LiDAR 的设备只有在 Polycam 能为该扫描导出包含相机画面和轨迹的完整 Raw Data 时才可使用。

01Spatial 的主输入必须是一个 ZIP，其中至少包含：

```text
keyframes/
├── cameras/   # 每个画面的相机参数与位姿
└── images/    # 建图使用的原始画面
```

GLB、OBJ、PLY 等三维模型文件，以及分享链接，都不能替代 Raw Data ZIP，因为它们没有完整的原始画面与逐帧相机信息。可以另外上传 GLB 格式的三维表面模型，用于空间预览或处理 AR 内容的前后遮挡关系；这个模型是可选项。

## 2. 扫描前开启 Developer Mode

Raw Data 必须在扫描前启用 Polycam 的 **Developer Mode** 才会完整保存；该设置不会自动补回旧扫描的数据。

1. 打开 Polycam，进入右下角 **Profile**。
2. 选择 **Settings**，在 **General** 中打开 **Developer Mode**。
3. 确认设备有足够存储空间，再开始新的扫描。

[![Polycam 的 Settings 页面，General 区域中的 Developer Mode 已开启](/media/docs/polycam-mobile-developer-mode.real-ui.jpg)](/media/docs/polycam-mobile-developer-mode.real-ui.jpg)

LiDAR 扫描的 Raw Data 通常只能从最初采集它的设备导出。扫描完成前不要卸载 Polycam、删除本地扫描或清理原始数据。

## 3. 准备空间

- 打开现场照明，避免空间内明暗反差过大。
- 清洁镜头，确保设备剩余电量与存储空间充足。
- 尽量减少行人和可移动物体进入画面。
- 暂时移开会大面积遮挡墙角、门框和固定设施的物品。
- 规划一条连续路线，覆盖所有需要定位或放置 AR 内容的区域，并回到曾经拍摄过的位置形成闭环。

玻璃、镜面、强反光金属和没有纹理的纯色墙面很难提供稳定视觉信息。无法避开时，从多个角度拍摄其周围的门框、墙角、标识和固定设施，不要让这些表面长时间占满画面。

## 4. 在 Space Mode 中扫描

新建扫描时，在底部的扫描类型中选择 **SPACE**。确认 **SPACE** 以黄色高亮显示后，点击中央白色录制按钮开始扫描；不要选择 **360**、**OBJECT**、**FLOORPLAN** 或 **IMAGE**。

[![Polycam 的新建扫描界面，底部 SPACE 扫描类型已选中，中央录制按钮等待开始](/media/docs/polycam-mobile-space-mode-start.real-ui.jpg)](/media/docs/polycam-mobile-space-mode-start.real-ui.jpg)

1. 在起点停留片刻，缓慢转动设备，拍摄周围的墙角、地面与固定设施。
2. 以正常步速平稳移动，让相邻画面持续保留共同可见区域。
3. 在门口、转角、楼梯和房间过渡处放慢速度，并从两侧观察连接区域。
4. 设备提示覆盖不足时，继续平稳扫描对应墙面和角落。不要快速晃动设备来补齐覆盖范围。
5. 在路线末端回看起点或已扫描区域，建立视觉闭环后再结束。

扫描过程中，Polycam 会把实时相机画面、已恢复的空间表面和覆盖提示叠加显示。沿连续路线补充未充分覆盖的墙面、地面和固定结构；点击暂停按钮可以暂时停止，确认扫描完整后再选择 **Done**。

[![Polycam 的 Space Mode 扫描进行中界面，实时相机画面上叠加已恢复的空间表面和覆盖结果](/media/docs/polycam-mobile-space-mode-progress.real-ui.jpg)](/media/docs/polycam-mobile-space-mode-progress.real-ui.jpg)

保持画面清晰比移动速度更重要。快速旋转、强烈晃动、手指遮挡镜头或连续拍摄移动人群都会降低最终地图质量。

### 大空间建议

将大型空间分成多个相互重叠的区域，但在同一次扫描中保持连续移动。每个区域与下一个区域之间应共享一段清楚的门口、走廊或固定结构；不要停止扫描后移动到不相连的位置再继续。

如果设备开始发热、Polycam 反复提示跟踪丢失或操作明显卡顿，应在一个已充分覆盖的位置结束本次扫描。不要为了追求一次完成而继续扫描，让数据质量进一步下降。

## 5. 完成前检查

- [ ] 所有目标房间、门口、转角和路线端点都已覆盖。
- [ ] 相邻区域之间存在连续、清楚的重叠画面。
- [ ] 没有长时间的模糊、过暗、过曝或镜头遮挡。
- [ ] 路线回到了一个已扫描区域，形成闭环。
- [ ] Polycam 中没有明显的空洞、错位表面或持续跟踪失败。

发现遗漏时应立即补扫对应区域；如果 Polycam 中的预览模型已经与真实空间明显错位，继续扫描通常只会扩大错误，应重新开始。

## 6. 导出 Raw Data

1. 在最初采集扫描的设备上打开已完成的项目。
2. 选择右侧的导出或下载箭头。
3. 滚动到导出选项底部，选择 **Raw Data**。
4. 选择 **Export**，等待 ZIP 完整保存。
5. 保留原始 ZIP，不要删除 `keyframes/cameras`、`keyframes/images` 或修改内部目录。

如需在 AR 中使用 Polycam 的表面模型，可另外导出 **GLB**。Raw Data ZIP 是建图主输入，GLB 只是可选附加文件；也可以上传一个只包含该 GLB 的 ZIP。

## 7. 上传到 01Spatial

1. 打开 Portal 的 **Spatial Maps**，进入目标项目并选择 **+ New Map**。
2. 为地图命名，然后选择 **Polycam** 输入类型。
3. 在 **Upload from** 中选择来源：
   - **Cloud（推荐）**：先把 Raw Data ZIP 上传到界面支持的网盘，生成这个文件的分享链接；选择对应网盘并把链接粘贴到 **Raw Data URL**。如需上传 Mesh，请把只包含 GLB 的独立 ZIP 链接粘贴到可选的 **Mesh URL**。选择 **Download from Cloud** 后，服务器会直接下载文件。
   - **Local**：从电脑选择 Raw Data ZIP；如有 Mesh，再选择只包含 GLB 的独立 ZIP。保持页面打开直到上传完成。
4. 等待输入检查通过，Portal 随后会进入建图流程。

[![Spatial Maps 的 New Map 界面，Polycam 输入已选中，Cloud 来源、Raw Data 和可选 Mesh 链接输入框清晰可见](/media/docs/spatial-maps-new-map-polycam-cloud.real-ui.jpg)](/media/docs/spatial-maps-new-map-polycam-cloud.real-ui.jpg)

> Polycam 这条路径上传的是 **Raw Data ZIP，不是视频文件**。大文件优先使用 Cloud；分享链接必须指向单个 ZIP，并允许服务器读取。不要使用文件夹链接、需要登录才能打开的链接，或浏览器地址栏中的普通预览地址。

Portal 会检查 ZIP 是否同时包含相机文件和原始画面。只有 GLB、缺少 `cameras`、缺少 `images` 或损坏的 ZIP 都会被拒绝。

## 建图后验收

地图变为 **Ready（已就绪）** 后，[使用 Space Studio 执行定位测试](/tutorials/localization/space-studio-test)，检查起点、路线中部、门口、转角和终点。重点测试正常持机高度、预期照明条件，以及相互连通区域是否会错误跳转。

在完成定位验收前，请保留 Polycam 项目、Raw Data ZIP 和可选 Mesh ZIP。
