本文将向您展示如何使用摄影测量法拍摄照片,以及如何使用Meshroom将真实世界的对象插入Unity项目。
在3D模型的上下文中,摄影测量法是从扫描的对象创建3D模型的过程。
需要逼真的3D模型来满足您的游戏想法,但预算有限?想要创建一个超现实的游戏环境?如果是这样,请继续阅读!
使用摄影测量法,我们获取输入数据(即照片),并将其通过处理这些数据的管道或方法集。来自这些过程的数据或输出信息用于创建完成的3D模型。
在本教程中,我们将使用几张龙雕像的照片来创建详细的3D模型,在Blender中对其进行清理,然后将结果导入到一个维京村庄的黑暗阴暗的场景中。
您还将学习:
- 选择一个好的拍摄主题。
- 拍摄合适的照片。
- 决定何时何地拍照。
- 删除不良照片。
- 使用Meshroom创建3D扫描。
- 将模型导入Blender以进行清洁和修饰。
- 减少多边形的数量。
- 准备3D模型并将其导入Unity。
入门
注意:需要一台功能强大的计算机来在合理的时间内执行Meshroom照片扫描。
下载项目资料。接下来,将zip文件解压缩到您方便的位置。
归档文件包含Starter和Final项目文件,我们将在以后提供。
注意:您将需要下载另一个文件,但有关更多信息,请参见下文。
为了创建良好的照片扫描,您需要从多个角度拍摄模型。在本教程中,我们将拥有所有必要的照片。
在拍摄这些照片之前,重要的是要学习一些有关如何自己拍摄照片的有用信息。
寻找合适的拍摄对象
当然,您想要拍摄与游戏环境或想法相匹配的对象。此外,还有一些条件可以简化对象的照片扫描:
- 平底。
- 颜色或阴影有足够的对比度。
- 不要太暗,否则将很难看到细节。
- 不能太大,否则将很难在物体周围走动并从不同角度射击。
还值得考虑创建难以建模的对象的照片扫描。例如,由于难以创建有机材料,因此很难建模自然对象。Unity Asset Store
中Tales工厂的宝石就是一个很好的例子。
什么时候拍照
对于照片,某些条件和一天中的特定时间可以创建高质量的照片扫描。
如果您有室内工作室和照明设备,则可以自己模拟这些条件。如果没有,那么你必须在户外工作。
在户外工作时,请记住以下几点:
- 在日光下拍照。
- 多云的天空是最好的。云将灯光散射,从而使整个模型中的光线分布更加均匀。
- 干燥度好,湿度差!在潮湿的条件下,您的成品可能会得到更多的反射。在某些情况下,3D模型甚至会有明亮的反射,破坏了真实感。
选择适合各种潜在条件的中性外观模型。这将允许您根据游戏中的环境条件应用效果。
游戏正在下雨吗?让我们勾勒出一个着色器,它将添加光泽的湿效果。游戏发生在世界末日后的世界,那里一切都破旧不堪?让我们添加老化或腐蚀的影响。
拍照
下载将在本教程中使用的照片集。由于尺寸较大,因此未包含在上面的链接中。要下载收藏,请单击此链接:
下载龙雕塑的照片(zip文件,695 MB)
接下来,将zip文件解压缩到方便的位置并打开文件夹。您将看到从不同角度和高度拍摄的大约100张龙雕塑照片。
这是拍摄照片时应努力的目标。覆盖不同角度和高度的360度照片可确保捕获您所需的所有细节。
拍摄时,在拍摄对象周围移动以获取不同角度的视野。尝试尽可能少地移动并近距离或远一点地拍照。旨在获得特写细节和展示整个模型的照片。
拍摄时请勿移动或旋转模型,因为这会混淆某些软件包。在对象周围移动而不移动它。
相机设定
要获得外观统一的照片,请将相机切换为手动或专业模式。大多数智能手机相机都允许您切换到此模式,而DSLR相机始终具有手动或M模式。
- 首先将ISO设置为Fixed。此设置将改变数码相机传感器对光的敏感度。值越高,在黑暗中拍摄照片越容易,但它们的噪点越多。在良好的室外照明条件下,通常可以将其设置为100或200。始终为照片扫描的图像选择一个固定值。
- 如果您不熟悉摄影,请使用“固定快门”或“固定光圈”模式。这些有时称为优先模式。这有助于固定其中一个参数,使相机可以控制其他参数以保持均匀的曝光。这样做也是为了获得光线充足的照片。
- 拍照时,应该始终保持对焦。避免图像模糊。
- 始终以相同的方向,风景或肖像拍照。
对于这种情况下的午间和阴天照明,固定ISO为200。
使用Meshroom创建照片扫描
Meshroom是一种开源摄影测量应用程序,可用于从照片创建3D模型。我们将使用它来创建龙雕塑的光敏照片。
从此处下载最新版本并安装。需要Windows或Linux才能运行该软件。
启动Meshroom后,您将看到主界面。在此模式下,您可以执行创建照片扫描所需的一切。
这是主界面各部分的简短说明:
- 需要以3D方式重新创建的照片被拖到此处。
- 图像查看器只是单个照片的预览窗口。
- 3D Viewer . , , , .
- Graph Editor , 3D. (, Node). . , .
- Node Graph Editor. , .
将照片导入网格室
转到下载的龙雕塑照片。然后将它们拖到“ Meshroom图像”窗口中。
照片在“图像”窗口中以文件名的顺序显示。
下一步,单击文件►另存为…,在磁盘上选择一个新文件夹位置,然后将项目另存为Dragon.mg。
接下来,关闭所有不必要的应用程序以准备Meshroom的重新创建过程。如果计算机资源不足,将无法开始扫描。
开始网状室娱乐过程
此时,您就可以开始重新创建了。单击开始按钮以开始该过程。
在过程运行期间,您可以在Graph Editor窗口中跟踪其进度。注意每个节点上的彩色进度条。您计算机的处理器最有可能在15-30分钟内完成处理,具体取决于计算机的速度。
完成后,结果扫描将显示在3D Viewer窗口中。
现在,按住鼠标左键并拖动光标以旋转模型,或者按住鼠标中键并拖动光标以在3D视图中平移相机。享受您的处理器帮助创建的3D模型!
接下来,打开保存Meshroom项目文件的文件夹。在其中,您将找到MeshroomCache文件夹。在此输出扫描对象的文件。
导入搅拌机
接下来,我们将使用流行的3D图形应用程序导入3D龙模型的扫描,并进行清理以准备将其导入Unity。
如果您没有Blender 2.80或更高版本,请下载并安装它。您可以在此处下载。
安装完成后,启动Blender。
如果您是Blender的新手,那就什么都不用担心,放松一下!虽然其界面和控件可能令人困惑,但在这里您会发现许多对我们有用的键盘快捷键和屏幕截图。
打开Blender启动屏幕后,单击“新建文件”下的“常规”。默认情况下,新文件包含一个多维数据集对象。单击一个多维数据集以将其选中,然后按Delete键摆脱它。现在,我们有一个自由空间可以使用:
下一步,单击文件►导入►Wavefront(.obj)。导航到“ MeshroomCache”文件夹,其中“ Meshroom”保存了扫描的对象模型文件。在此文件夹中,在MeshroomCache /纹理/ GUID子文件夹中找到模型。GUID是扫描完成后分配了随机标识符的文件夹的名称。
然后双击TextureMesh.obj将扫描导入到Blender中。
由于照片扫描的模型很大,因此导入可能需要很长时间。
让我们首先了解一下照片扫描的龙在默认情况下是什么样子。单击Blender主窗口中的“视口着色”按钮以对该窗口启用完全着色和纹理化。
然后按住Shift +鼠标中键拖动窗口,以使主要的龙模型位于屏幕中间。按住鼠标中键并拖动光标以旋转窗口。您可以使用鼠标滚轮放大和缩小。
查看默认扫描的效果如何。很好!
搅拌器修复
该模型很复杂,并且有很多顶点和细节。现在,我们将使用Blender的快速有效的Decimate修改器来减少多边形数量。
如果您要创建需要更多优化的商业发行游戏,那么定性减少多边形数量可能需要更多时间。但是到目前为止,我们对Decimate非常满意。
在Blender编辑器的“场景集合”面板中,单击TexturedMesh►修改器►添加修改器。
从 列表中选择“抽取”。
出现一个小的自定义字段,其中包含Decimate选项。
选择折叠与比率的0.1和因子的2.0。然后单击“应用”。
这将减少整个模型的细节,并将顶点数量减少大约10倍!您不会注意到很多细节上的损失,但是Unity分析器和游戏速度会感谢您!
摆脱草
现在我们需要解决最明显的问题。
如果您打算创建一个场景,其中巨龙在操场中间或绿草如茵的草坪上,那么您已经准备就绪。但是我们将把这条龙放在维京村的周围,所以这种草不适合我们。
现在,让我们集中讨论从网格中删除草。
在Blender中,从“对象模式”切换到“编辑模式”。为此,您可以使用UI或按键盘上的Tab键。
请注意窗口中的更改:现在,在此处显示了龙的顶点,并且它们都已突出显示。
选择顶点
接下来,我们将仅选择与龙群周围的草相关的那些顶点,然后将其删除。
请注意,下一步将需要很大的耐心。
首先,选择工具选择套索,按L的Shift +空格键。 (同时按Shift和Space,然后按L)。
或使用UI面板选择“选择套索”工具。
接下来,结合使用鼠标中键和拖动进行旋转,鼠标中键+ Shift并拖动进行全景移动,以从各个角度检查模型。
套索从各个角度仔细地挑选了龙根周围的草顶。在每个选择之间按Shift键可将新的可选区域添加到已选择的顶点。
这是说明此过程的GIF:
有时,您将需要旋转视口以选择位于草网格体边缘后面的顶点。
如果您选择了一些不想删除的顶点,请分别使用Shift +鼠标左键单击它们以将其从选定的顶点中删除。
选中所有草和周围的顶点后,按Delete(删除)►Vertices(顶点)将其删除。
放大,缩小和旋转视口时,请仔细查看其余的网格。对所有错过的顶点重复选择和删除过程。
完成后,您将看到类似的恐怖图片:
封闭网格的底部
现在,如果您还没有进入编辑模式,请进入它。切换模式是通过按Tab键完成的。然后使用“选择”工具并按住Shift键,选择龙网顶点的整个底部边框。这需要耐心。
或者,您可以为此使用“选择Lasoo”工具。
选择顶点后,单击“顶点平滑顶点”。
这将使我们选择的顶点环更加平滑。
现在,通过按Shift +空格键,选择“ 3D光标”工具,然后按鼠标左键将其定位在所选底部边框中最低顶点的位置。要确定最低顶点,可以平移并旋转视口以从侧面查看龙。 然后按键。(“ Point”)选择“ Pivot Point”,然后选择“ 3D Cursor”以将3D光标的位置用作参考点。 然后按S,Z,0,Enter
(这是零,不是O)。这一系列的命令会将所有选定的顶点缩放到与我们使用3D光标创建的锚点相同的高度。
现在我们得到这样的东西:
最后,单击“顶点”►“来自顶点的新边/面”。
通过覆盖所有选定的顶点并创建新的面,这将为龙创建新的基础。
动龙
然后通过按Tab键返回到“对象模式”,然后选择TexturedMesh对象。使用工具Move,按Shift + Space G移至龙场景起点坐标。按下Shift +空格键R来应用“旋转”工具,并将其旋转到所需位置。 现在,选择3D光标工具,然后在龙背的中间位置单击。按F3,输入Set Origin,然后按Enter。接下来,从出现的命令列表中选择“ Origin to 3D Cursor ” 。
黄点出现在3D光标的中间,指示模型的新起点。
我们准备导出模型!
接下来,单击文件►导出►Wavefront(.obj)。
选择路径模式►复制,并确保在导出设置中选择了仅选择。在方便的位置将文件另存为Dragon.obj。
该复制值的出口路径模式确保纹理复制,并从同一文件夹中的obj模型中引用。这样可以避免导入Unity时纹理丢失的问题。
将一切转移到Unity
现在,让我们在Unity中打开Starter项目,然后打开Assets / RW / Scenes / PhotoscanDragon场景。在村庄的石头之间找到一个空的基座。这是我们将安装光罐龙模型的地方。
现在,让我们将导出的模型及其关联的导出文件拖到Assets / RW / Models / Dragon项目文件夹中。
然后,我们将使用Unity Hierarchy窗口找到GameObject FocalPoint。将Assets / RW / Models / Dragon / Dragon.obj模型拖到场景中,并使其成为GameObject FocalPoint的子代。
现在,让我们如下更改Dragon对象的Transform组件的位置和旋转:
- 位置:(X:-33.32,Y:0.53,Z:5.08)
- 旋转度:(X:-2.229,Y:90,Z:-0.6)
注意:根据在Blender中设置锚点的位置,您的位置和旋转可能会略有不同。
现在点击播放,欣赏我们自己的照片扫描龙,它取自现实世界,并以全3D方式重新创建。
接下来要去哪里?
可以从本文开头的链接下载完成的项目。
我们采取了许多步骤到达那里,了解摄影测量技术,在Blender中编辑3D网格,顶点操纵,并将整个模型引入Unity!
我要感谢Unity资产商店的The Tales Factory,让我可以在Dragon Viking Village场景中使用Photoscanned MountainsRocks PBR资产。
我建议检查一下他们出色的照片扫描资产。
下一步由您决定。您想重新创建什么并将其集成到Unity项目中?以下是可帮助您进一步开展工作的资源和其他阅读材料: