怎样通过照片获得高质量3D模型

很久以前回答过这个问题:「能不能用手机或电脑的摄像头360度拍摄一个物体然后就能在显示屏上处理拼接得到其3D的模型? 」,当时给题主推荐的是Autodesk 123D。但是这个软件用的是云计算,有一些细节上的操作,用户没法自己控制。

最近找到了一套新的软件,可以通过大量照片,获得高质量的模型以及贴图。

所需软件

  1. CMVS-PMVS
  2. VisualSFM
  3. MeshLab
  4. Blender(用于渲染)

上面四个软件,前三个是必须品,第四个是用于渲染的,所以也可以用3D Max、Maya之类的软件。最重要的是,这一套软件、流程,都是完全正版的。

软件基本配置

将上面前三个软件下载下来,将CMVS-PMVS和VisualSFM解压。将CMVS-PMVS中「CMVS-PMVS-master\binariesWin-Linux\Win64-VS2010」路径下的文件全部复制到VisualSFM中,这样VisualSFM就有了三维重建的能力了。

之后需要安装MeshLab,这一步没有什么需要注意的。

拍摄照片

注意光圈一定要小,使得整个被摄物体的细节都能被拍到。一开始多次失败,都是因为景深太小,电脑无法捕捉到细节,从而难以重建。我这里用的是F=16的光圈。

将苹果垫在纸上,不同高度、不同角度拍摄约50张照片。

程序处理

打开「VisualSFM.exe」,导入所有图片,点击:

按键,对图片进行预处理。之后点击「SfM→Reconstruct Sparse」,构建粗略的点云:

图中摄像机形状的标志,代表各张图的拍摄位置。(这个截图是之前制作失败时的截图,但大致能表示显示的效果)

之后点击「Reconstruct Dense」,重构致密的点云。这一步会耗费比较多的时间与内存。我在给前面的苹果做重构的时候,用了大约8G的内存。这一步一开始会要求选择一个存储位置,之后计算的结果会自动存入此处。

之后打开MeshLab,选择「File→Open Project」(不要点Import Mesh)。

点击

选择不需要的点,删除之。

之后再「Import Mesh」,导入致密的点云,再清理一遍。注意开启「图层」界面

而后选择致密的点云的图层,选择如下图的工具:

从点云构造线面模型。在弹出的对话框中,前面两行的值分别设为12与7.

等待一段时间之后,得到了线面模型。这时,删去不需要的部分。稍微降低一些面数:

之后再自动去掉「非流形面」:

这时,模型已经可以映射贴图了。选择「Parameterization + texturing from registered rasters」

选择适当的图片尺寸,点击「Apply」,就可以获得最终的成品了:

此时便可以导出为一般的通用格式了。而贴图也已经自动保存在原目录了。

将模型导入3D软件(Blender / 3DsMax / Maya ...),设置好材质,便可以渲染了,得到的图片还是非常逼真的:

编辑于 2016-12-03

文章被以下专栏收录