NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - AI模型在线查看 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割 - 3D道路快速建模
在 谈到3D 模型时,摄影测量是指从你扫描的对象制作 3D 模型的过程。
你是否曾经在预算有限的情况下需要一些逼真的 3D 模型来制作游戏创意而感到无助?你有一个超现实的游戏环境要创建吗?如果是这样,那么你会想继续阅读!
使用摄影测量,你可以获取大量输入、照片,然后通过管道或一系列处理它们的方法运行它们。来自这些过程或输出的数据为最终 3D 模型的创建提供信息。

在本教程中,我们将使用几张龙雕像的照片来创建详细的 3D 模型,在 Blender 中对其进行清理,并将结果导入到黑暗而喜怒无常的 Unity Viking 村庄场景中。
在此过程中,我们将学习如何:
- 选择一个好的对象进行照片扫描。
- 拍摄合适的照片。
- 决定何时何地拍摄照片。
- 剔除不良照片。
- 使用 Meshroom 创建 3D 扫描。
- 将模型导入 Blender 进行清洁和修饰。
- 减少多边形数量。
- 准备 3D 模型并将其导入 Unity。

不再绝望!很快你就会知道为游戏创建超逼真对象的秘密!:]

1、教程简介
注意:本教程的 Meshroom 照片扫描部分需要相当强大的 CPU 才能在合理的时间内完成工作。如果你打算在学习本教程时喝杯热饮,请等到 Meshroom 部分!:]
要创建一个好的照片扫描,你需要从多个角度捕捉模型。在本教程中,我们已经拥有了所有需要的照片。
在你拍摄这些照片之前,重要的是要学习一些技巧,以便在野外拍摄自己的照片。
2、寻找要捕获的好对象
当然,你会想要捕捉与你的环境或游戏理念相关的对象。在这个明显的优先级之后,有一些特征可以使对象更容易进行照片扫描:
- 平底。
- 颜色或色调的适当对比。
- 不太暗,也不太难看清细节。
- 不太大,否则很难从不同角度移动和捕捉。
还应该考虑对难以建模的对象进行照片扫描。例如,自然界中的物品很难建模,因为很难创建有机材料。
这些来自 Unity Asset Store 中The Tales Factory的岩石就是一个很好的例子。

3、什么时候拍照
与摄影一样,一天中的某些条件和时间可以使照片扫描效果更好。
如果你有室内工作室和照明,可以通过一些仔细的计划自己模拟这些条件。如果你不这样做,你将需要在外面工作。
在户外工作时,请记住以下几点:
- 在白天拍摄照片。
- 多云的天空很棒。云会扩散光线,从而使模型上的光线分布更加均匀。
- 干燥条件好,潮湿条件差!在潮湿的条件下,你可能会对最终结果产生更多反思。在某些情况下,可能还会发现你的 3D 模型有一种有损真实感的闪亮光泽。
选择一个可以适应各种潜在条件的中性模型。然后,你可以根据游戏中的条件应用效果。
在下雨吗?扔上一个着色器,增加光泽,潮湿的效果。或者,你的游戏是否设置在某个一切都陈旧而破旧的后世界末日世界?改为添加老化或腐蚀效果。
4、拍摄照片
下载将用于本教程的照片集。单击此链接开始下载:
现在,将 zip 文件解压缩到一个方便的位置并打开该文件夹。你将看到大约 100 张从不同角度和高度拍摄的龙雕塑照片。

这是拍摄照片时应达到的目标。360 度全方位覆盖各种角度和高度的照片,确保您获得所需的细节。
拍照时,在物体周围移动以获得不同角度的视图。尝试以尽可能小的增量移动,并拍摄特写和更远的照片。你的目标是获得显示整个模型的特写细节和照片。
请勿在捕获会话期间移动模型或转动模型,因为这往往会导致某些软件关闭。相反,在主题周围移动,同时保持静止。
5、相机设置
要获得一组外观统一的照片,请将相机设置为手动或专业模式。大多数智能手机相机都允许你进入此模式,而手持数码单反相机始终具有手动或M模式。
- 首先,设置一个固定 ISO模式。这会改变你的数码相机传感器对光线的敏感度。数字越大,越容易在较暗的条件下拍摄照片,但会产生噪点较多的图像。在光线充足的户外,你通常可以将其降低到 100 或 200。对于照片扫描图像,请始终选择一个固定数字。
- 如果你是摄影新手,请在相机上使用固定快门或固定光圈模式。这些有时称为优先模式。这样做可以帮助您确定该设置并让相机控制其他设置以保持均匀曝光。同样,这一切都是为了获得光线充足的照片。
- 拍照时,请始终确保它们在焦点上。你不想要任何模糊的图像。
- 始终将你的照片保持在一个方向,横向或纵向。

在这种情况下,将 ISO 设置为固定的200对于中午的阴天照明效果很好。
6、使用 Meshroom 创建照片扫描
Meshroom是一款开源摄影测量应用程序,可用于从照片创建 3D 模型。我们将使用它来创建龙雕塑的照片扫描。
在此处下载最新版本并安装。需要 Windows 或 Linux 来运行该软件。
运行 Meshroom 后,可以看到主界面。可以在此视图中执行创建照片扫描所需的一切操作。
以下是主界面每个部分的快速浏览:

- 可以在此处拖放要以 3D 形式重新创建的照片。
- 图像查看器只是单个照片的预览窗格。
- 一旦该过程开始,3D 查看器将显示对象重建的结果。它还根据程序从图像中获取的元数据向您显示照片拍摄的不同角度。
- 图形编辑器显示应用程序运行的流程管道,以在 3D 中重建对象。每个阶段都由一个Node表示。这些是一系列输入和输出,每个阶段都进行处理。您的照片通过这个管道运行,每个阶段的结果都会进入下一个阶段。
- 在节点窗格中,可以访问图表编辑器中各个节点的详细信息。你可以调整每个节点的设置,但对于本教程,默认设置就足够了。
7、将照片导入 Meshroom
现在,找到下载的龙雕塑照片。然后将它们拖放到Meshroom的图像窗格中。
照片按文件名顺序显示在“图像”窗格中。

接下来,单击文件 ► 另存为...并在驱动器上的某处选择一个新文件夹位置并将项目另存为Dragon.mg。

现在,关闭所有非必要的应用程序,为 Meshroom 重建过程做准备。如果你的计算机资源不足,扫描将不会开始。
8、开始网格室重建过程
此时,我们已准备好开始重建。正如皮卡德船长所说,做到这一点!单击“开始”按钮开始该过程。

在进程运行时,可以在Graph Editor视图中跟踪其进度。注意每个节点上的一个小的彩色进度条。你的 CPU 也很可能会在 15 到 30 分钟内达到最大值,具体取决于其速度。

完成后,可以在3D 查看器窗格中看到生成的扫描。

现在左键单击并拖动鼠标光标进行旋转,或单击鼠标中键并拖动以平移 3D 视图。沉浸在你的 CPU 帮助创造的 3D 荣耀中!

接下来,打开保存 Meshroom 项目文件的文件夹。你会注意到一个名为MeshroomCache的文件夹。这是输出扫描的目标文件的地方。

9、导入Blender
接下来,我们将使用流行的 3D 计算机图形应用程序 Blender 来导入龙的 3D 模型扫描并进行清理,以准备导入到 Unity。
如果还没有安装 Blender 2.80 或更高版本,请立即下载并安装。可以在这里下载。
安装完成后,启动 Blender。
如果你是 Blender 的新手,请深呼吸并放松一下!虽然界面和控件可能会让初学者感到困惑,但在这里可以找到许多组合键和屏幕截图来帮助您。

在 Blender 启动屏幕打开的情况下,单击New File下的General。默认情况下,新文件包含一个立方体对象。单击多维数据集以将其选中,然后按Delete键将其删除。现在你有一个干净的工作空间:

接下来,单击文件 ► 导入 ► Wavefront (.obj)。导航到MeshroomCache文件夹,Meshroom 在其中保存了扫描的对象模型文件。在此文件夹下,在子文件夹MeshroomCache/Texturing/GUID中找到模型。GUID 是一个文件夹名称,在扫描完成时分配了一个随机 ID。
然后,双击texturedMesh.obj将扫描导入 Blender。

导入可能需要一段时间,因为照片扫描的模型文件非常大。

首先感受一下默认情况下经过照片扫描的龙的外观。单击主 Blender 视口中的Viewport Shading按钮以启用完整的 Viewport Shading 和纹理。

接下来,按住Shift + Middle Mouse并拖动视口以将主龙模型平移到屏幕中间。然后按住鼠标中键并拖动以旋转视口。您可以通过滚动鼠标来放大和缩小。
看看默认情况下扫描看起来有多好。做得好!:]

10、用Blender润色模型
该模型很复杂,顶点数和细节都很高。接下来,我们将使用名为Decimate的快速有效的 Blender 修改器减少多边形数量。
对于需要更多优化的商业发行游戏,您可能需要花更多时间减少多边形数量。目前,Decimate 做得足够好。
使用 Blender 中的Scene Collection面板,单击texturedMesh ► Modifiers ► Add Modifier。

从选择中,选择抽取。

一个带有抽取选项的小配置区域出现。
现在,选择Collapse with a Ratio of 0.1和Factor of 2.0。然后单击应用。
这减少了整个模型的细节,并将顶点数减少了大约 10 倍!应该注意到没有太多细节的视觉损失,你的 Unity 分析器和游戏性能会因此而爱上你!

11、去除草地
现在解决房间里的大象。
如果你打算创建一个场景,希望的就是一条龙坐在操场或绿草的原始部分中间,那么已经准备好了。但是如果你要把这条特殊的龙放在维京村庄的环境中,这种草地就是行不通的。
现在,我们将专注于从网格中移除草。
在 Blender 中,从Object Mode更改为Edit Mode。可以使用 UI 来执行此操作,或按键盘上的Tab 。

请注意你的视口更改以显示所有选定的龙的顶点。

12、选择顶点
接下来,我们将只选择龙底部周围草地区域的顶点,然后将其删除。
警告:下一步需要相当多的耐心。
首先,按Shift + Space, L选择“选择套索”工具。那是Shift和Space一起,然后是L。
或者,使用 UI 工具栏选择“选择套索”工具。

接下来,使用鼠标中键单击并拖动旋转和鼠标中键 + Shift单击并拖动以平移以从各个角度查看模型。
Lasoo 从各个角度选择草地区域的顶点,并仔细选择龙的底部周围。在每个选择之间,在选择新区域时按Shift 键,以确保将它们添加到你现有的顶点选择中。
这是一个说明此过程的 GIF:

你需要偶尔旋转视图以选择位于草地网格中凹凸和山脊后面的顶点。
如果选择了一些不想删除的顶点,请Shift + 左键分别单击它们以将它们从你的选择中删除。
选择所有草和周围的顶点后,按Delete ► Vertices将其删除。


仔细查看剩余的网格,放大和缩小并旋转视图。对错过的任何顶点再次重复选择和删除过程。
一旦完成,你会得到类似于这个来势汹汹的家伙的东西:

12、闭合网格的底座
现在,如果还没有进入编辑模式,请进入编辑模式。选择Tab切换模式。然后,使用选择工具并按住Shift 键选择龙网格上顶点的整个底边。这需要一些耐心。

或者,您可以为此使用Select Lasoo工具。

选中顶点后,单击顶点平滑顶点。

这会稍微平滑你选择的顶点环。
现在,通过单击Shift + Space、Space选择3D 光标工具,并使用左键单击将其定位在与顶点底部边缘选择中的最低顶点对齐。可以平移和旋转视图以获得龙的侧面视图以确定最低顶点。
接下来,按句号,。,键入枢轴点,然后选择3D 光标以使用 3D 光标的位置作为枢轴点。
然后,按S、Z、0、Enter。这是一个零,而不是 O。这一系列命令将所有选定的顶点缩放到与你使用 3D 光标创建的枢轴点相同的高度。
现在你将拥有一个类似于此的网格:

最后,单击Vertex ► New Edge/Face from Vertices。
这通过覆盖选定的顶点并创建一个新面来完成你的龙的新底座。


13、重新定位龙
接下来,通过单击Tab并选择texturedMesh对象更改回对象模式。使用移动工具通过单击Shift + Space,G将龙定位到场景的原点,绿色和红色线交叉的位置。然后通过单击Shift + 空格键、R使用旋转工具将其旋转到直立位置。
现在,选择3D 光标工具并在其背面的龙的大约中心单击它。按F3,然后键入Set Origin并按Enter。接下来从出现的新命令列表中选择Origin to 3D Cursor 。
3D 光标中间会出现一个黄点,表示模型的新原点。

已准备好导出!
接下来,单击文件 ► 导出 ► Wavefront (.obj)。
确保选择Path Mode ► Copy并检查Export Settings中的Selection Only选项。将文件另存为Dragon.obj在方便的位置。

导出的路径复制模式可确保从 .obj 模型文件所在的同一文件夹复制和引用纹理。这有助于防止在导入 Unity 后出现丢失纹理的问题。
14、将一切融入Unity
现在,在 Unity 中打开Starter项目,然后打开Assets/RW/Scenes/PhotoscanDragon场景。找到村庄岩层之间的空基座。这是你放置照片扫描龙模型的位置。

现在,将导出的模型和相关的导出文件拖放到Assets/RW/Models/Dragon项目文件夹中。

然后,使用 Unity Hierarchy窗口定位FocalPoint GameObject。将Assets/RW/Models/Dragon/Dragon.obj模型拖放到场景中,并将其作为FocalPoint GameObject 的子对象。

现在,改变Dragon Transform 组件的位置和旋转如下:
- 位置:(X:-33.32,Y:0.53,Z:5.08)
- 旋转:(X:-2.229,Y:90,Z:-0.6)

注意:您的位置和旋转可能会略有不同,具体取决于您在搅拌机中设置枢轴点时单击的位置。
然后,单击“播放”并惊叹于您自己的照片扫描龙,它取自现实世界并以全 3D 形式重新构建。:]

原文链接:Using Meshroom to Insert Real Life Objects in Unity
BimAnt翻译整理,转载请标明出处