← 全部指南
指南 · 7 分钟

3D 扫描用于 3D 打印:给创客的实用指南

3D 打印需要封闭的网格模型。本文说明用结构光扫描仪、手机 LiDAR 和摄影测量扫描物体的三条路线、扫描后要做的修补,以及高斯泼溅为什么不能直接打印。

01

3D 扫描用于 3D 打印,到底需要什么

把 3D 扫描用于 3D 打印,有一个多数扫描教程不提的前提:打印机需要的是网格,而且必须是封闭的网格。切片软件要判断模型哪里是内部、哪里是外部。表面有破洞、开放边,或者面与面互相穿插,它就无法可靠地判断。

常用的文件格式是 STL、OBJ 和 3MF。STL 最老,由 3D Systems 开发,最早的文档出现在 1988 年,里面只有三角面,没有保存颜色的标准方式。3MF 是为打印设计的新格式,是由 3MF 联盟维护的开放 XML 标准,现已发布为 ISO/IEC 25422:2025。它的规范要求可打印的模型网格必须是流形且没有破洞,文件里还会记录单位(默认毫米)。

所以,扫描一个物体用来打印时,真正的问题不是哪种扫描在屏幕上最好看,而是哪条路线能用最少的修补得到一个封闭、尺寸正确的网格。可行的路线有三条,另外还有一种很热门、但并不能得到可打印模型的技术。

02

路线一:结构光和激光扫描仪

专用扫描仪是通往可打印网格最直接的路。结构光扫描仪把一组经过校准的光图案(通常是线条、条纹或网格)投到物体上。图案落在曲面和棱角上会变形,相机一帧一帧记录变形后的图案,软件据此重建表面。激光扫描仪同属这类专用硬件;本文详细核对的是结构光这一种。

随后,扫描仪自带的软件会去掉杂散数据、对齐各帧并生成三维模型。有些扫描仪还带一个相机,把物体的颜色记录成贴图。

它的弱点,扫描仪厂商自己写得很清楚。以 Artec 3D 为例,它列出的难扫表面包括:很深的黑色表面、镀铬一类的高反光表面、透明或半透明材料,以及毛发。常见的办法是改变扫描角度和距离,或者给表面加一层临时的哑光涂层:薄薄撒一层粉,或者喷一种过一段时间会自行消失的哑光扫描喷雾。

零件需要和别的东西配合时,选这条路线:替换支架、外壳、转接件,凡是有公差要求的都算。

03

路线二:手机 LiDAR 和扫描 App

如果你有带 LiDAR 扫描仪的 iPhone Pro 或 iPad Pro,手里就已经有一个深度传感器。LiDAR 通过测量红外光脉冲的往返时间来计算距离,扫描 App 再把这些读数变成网格。

下面两个 App 的说法,我们在官方页面上核对过:

  • Polycam 支持 iOS、Android 和网页端。它的 Basic 套餐页面列出了 OBJ、FBX、DAE、USDZ 和 STL 导出,而 GLTF 在所有套餐中都可用。也就是说,STL 导出是付费功能,动手之前先确认套餐。
  • Scaniverse 来自 Niantic Spatial,可以生成高斯泼溅和网格两种结果,在设备本地处理。

Polycam 说它的 LiDAR 扫描在常规室内场景下精度约在半英寸以内。这个数字说明了手机 LiDAR 擅长什么:家具、大型道具、房间尺度的形状。它不适合小齿轮或带螺纹的盖子。对于尺寸大、容错高的打印件,比如缩小的雕像或 cosplay 的基础造型,它可能就够用了。

04

路线三:用普通照片做摄影测量

摄影测量用一组互相重叠的照片来建模。软件在多张照片里找到相同的特征点,推算每张照片的拍摄位置,再生成带贴图的三维模型。任何相机都可以。

我们核对过的选择:

  • Apple 的 RealityKit Object Capture,适用于 iOS 17 及以上和 macOS 12 及以上。基于它开发的 App 可以把一组照片变成三维模型。
  • Epic Games 的 RealityScan,一款桌面软件,可以用照片和激光扫描数据创建三维模型。Epic 表示,年总收入低于 100 万美元的个人和小型企业可以免费使用。另外还有免费的 RealityScan Mobile 手机 App。
  • Meshroom,一个以 MPLv2 许可证发布的开源项目。它的预编译版本提供 Windows 和 Linux 下载,并且是基于 CUDA 构建的,也就是说需要 NVIDIA 显卡。

用于打印时,有一个问题要注意:尺寸。Apple 的文档说,如果照片带有深度数据,就能算出真实尺寸;没有的话,可能需要自己缩放模型。任何只靠照片的流程都应该这样假设:在画面里放一把尺子或一个已知尺寸的东西,之后再缩放网格。

05

怎样扫描一个物体:拍摄要点

不管走哪条路线,扫描物体的要点大体相同。下面这些来自 Apple 的 Object Capture 文档,也和扫描仪厂商的说法一致:

  • 选刚性的物体。移动时会弯曲或变形的东西会让匹配出错。
  • 避开很薄、高反光、透明或半透明的物体。纯色、非常光滑的表面也会让软件缺少可用的信息。
  • 用柔和、均匀的光。机顶闪光、直射阳光和裸灯泡会投下生硬的阴影。把光打到墙或天花板上反射回来,或者在阴天的户外拍。
  • 重叠要足。Apple 建议相邻照片重叠 70% 以上,并提醒低于 50% 时可能失败。
  • 在几个不同高度绕物体拍一圈;或者把物体放在转台上,背景用光线充足的纯色,相机固定在三脚架上。
  • 拍到底面。每拍一轮把物体换一面立起来,可以避免缺口和破洞。
  • 让物体尽量占满画面,但不要切掉任何部分;锁定曝光和对焦,让每张照片的设置保持一致。

在 iPhone 或 iPad 上,长按取景画面直到出现自动曝光/自动对焦锁定(AE/AF Lock)的提示,就可以同时锁定两者。

06

后期修补:从原始扫描到可打印网格

几乎没有扫描结果可以直接打印。通常要做四件事。

封闭表面。扫描仪看不到的地方会出现破洞,一般是底部和深的凹陷。切片之前,网格必须是流形的。

确定尺寸。量一下实物的某个尺寸,和模型对比。

减少三角面数量。原始扫描的三角面往往远超打印机能表现的精度,文件太大也会拖慢后面的每一步。

把底面削平并调整朝向,让模型能稳稳放在打印平台上。

我们核对过的工具:

  • Blender。它的 3D Print Toolbox 扩展可以检查有问题的几何并用 Make Manifold 修复,计算体积和表面积,把模型缩放到指定范围或目标体积,把选中的面对齐到打印平台,并导出 STL、PLY 或 OBJ。Decimate(精简)修改器可以在尽量不改变形状的前提下减少顶点和面的数量。
  • MeshLab。一款开源软件,采用 GPL 3.0 许可证,用于处理和编辑三角网格。它面向三维数字化设备产生的原始数据,以及为 3D 打印准备模型,提供 Windows、macOS 和 Linux 版本。
  • Meshmixer。Autodesk 的免费工具,有补洞、用于 3D 打印的转实体功能、带排料孔的抽壳,以及网格简化。Autodesk 表示它已不再开发,今后也不提供支持,不过目前没有下架的计划。它还能用,但不要指望更新。
07

为什么高斯泼溅不是可打印的模型

现在几乎每次讨论扫描都会提到高斯泼溅,所以有必要说清楚:高斯场景不能送进切片软件。

这种方法出自 Kerbl、Kopanas、Leimkühler 和 Drettakis 在 SIGGRAPH 2023 发表的论文。它用大量三维高斯(带颜色的柔和小团)来表示场景,起点是推算相机位置时得到的稀疏点。这些小团经过优化,让场景从各个角度看起来都对。里面没有三角面,没有封闭表面,也没有内外之分。一个文件在屏幕上看起来很真实,却可能不包含任何打印机能用的东西。

在打印项目里,高斯泼溅仍然有用:

  • 在修改、修复或复制原物之前,真实地记录它的样子。
  • 检查拍摄覆盖。如果高斯场景的某一侧模糊或者是空的,说明照片没拍到那一侧,用同一批照片生成的网格在那里也会有破洞。
  • 把打印成品或参考物展示给别人看,这是平面照片做不到的。
08

SplatLoom 适合做什么,不适合做什么

SplatLoom 是一款 Mac 和 Windows 桌面应用,在你自己的电脑上把互相重叠的照片或一段短视频变成高斯场景,不上传,不需要账号。它可以导出高斯 PLY、PNG 静帧、MP4 环绕视频和一个可离线打开的独立 HTML 查看器。

它没有网格导出,也不是测量或 CAD 工具,所以不会给你的打印机生成 STL。要得到可打印的零件,请用上面三条路线之一,再用 Blender、MeshLab 或扫描仪自带的软件修补。

它适合的是记录这一侧:给扫描过的物体留一个真实、方便分享的视图,或者快速检查一组照片有没有把物体拍全。价格是一次性 19.90 美元,没有订阅。

常见问题

高斯泼溅可以直接 3D 打印吗?

不可以。高斯泼溅是一组用于渲染画面的带颜色的柔和小团,不是封闭的表面。切片软件需要 STL、OBJ 或 3MF 这样的网格。请用扫描仪、LiDAR 扫描 App 或摄影测量来获得网格。

用于 3D 打印的扫描结果应该是什么格式?

STL、OBJ 或 3MF。STL 只保存三角面。3MF 是为打印设计的开放标准,还会记录单位、颜色和材料,它的规范要求可打印的网格必须封闭且是流形。

只用手机怎么扫描一个物体?

两种办法:在带 LiDAR 扫描仪的 iPhone Pro 或 iPad Pro 上用扫描 App;或者拍很多互相重叠的照片,再用摄影测量 App 处理。用柔和的光,在几个高度绕物体拍,并把底面也拍到。

为什么我的扫描结果有破洞?

因为扫描仪或相机没看到那些地方,通常是底部、深的凹陷,或者反光和透明的部位。把物体换一面立起来重新扫,用临时的哑光涂层压住反光,剩下的破洞再用网格编辑软件补上。

SplatLoom 能导出 STL 或 OBJ 吗?

不能。SplatLoom 导出高斯 PLY、PNG、MP4 和离线 HTML 查看器。它用来查看和分享真实感的场景,不用来生成可打印的网格。

参考资料:https://www.loc.gov/preservation/digital/formats/fdd/fdd000504.shtml · https://3mf.io/ · https://github.com/3MFConsortium/spec_core/blob/master/3MF%20Core%20Specification.md · https://www.artec3d.com/learning-center/structured-light-3d-scanning · https://poly.cam/tools/3d-lidar-scanner · https://poly.cam/pricing/basic-plan · https://www.nianticspatial.com/products/capture · https://developer.apple.com/documentation/realitykit/capturing-photographs-for-realitykit-object-capture · https://www.realityscan.com/en-US · https://github.com/alicevision/Meshroom · https://github.com/alicevision/Meshroom/releases · https://extensions.blender.org/add-ons/print3d-toolbox/ · https://docs.blender.org/manual/en/latest/modeling/modifiers/generate/decimate.html · https://www.meshlab.net/ · https://marketplace.autodesk.com/apps?id=4108920185261935100&appLang=en&os=Win64 · https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/

在 SplatLoom 中试试