您需要 登录 才可以下载或查看,没有账号?注册
x
作者:Dmytro Piatyhorets
作者A站: https://www.artstation.com/shab42/blog
[micxp_wxonkey]wxv_2411988370332827652[/micxp_wxonkey]摄影测量变得越来越容易获得,但通常它需要高质量的摄影设备和昂贵的软件。有一些移动摄影测量应用程序,但通常它们无法创建高质量的资产(对 Reality Scan 寄予厚望)。
但是,如果您有兴趣并想尝试一下,看看效果如何而不会花费太多呢?我制作本指南是为了帮助您创建简单且完全免费的摄影测量资产,准备好导入到游戏项目中。您只需要一部带摄像头的智能手机和一台能够处理所需数据的 PC。(支持 CUDA 的 GPU 在这里会很有用,但不是必须的)。选择一个对象并按照以下步骤制作干净且可用于游戏的 3D 模型。我建议不要太小,因为智能手机不太擅长微距。~1x1 米就可以了。
.
照片
由于这是使用智能手机进行简单快速(免费)扫描的一般概述,因此我不会过多介绍有关拍摄设置的细节。通常您需要购买用于校准的颜色检查器和其他照明/阴影设备以及专业相机,但在这里我们将只使用智能手机。因此,拍摄的关键建议是:-尝试在阴天拍摄或想办法将您的物体隐藏在阳光直射下。尽可能避免过度照明的区域并投射阴影。理想情况下,最终反照率纹理上不应有任何阴影,因为它们将由游戏或渲染引擎生成,您最终将在其中导入模型。在高多边形网格生成过程中,投射阴影和高光也可能导致错误和意外结果。
重叠拍摄。拍摄下一张时,请始终将上一张照片的某些区域保留在框架内。该程序将根据照片上的高对比度区域以及它们如何从上一张照片移动到下一张照片来分析形状。如果您在没有任何相似部分的情况下拍摄距离对象太近的照片,则无法在 3D 中重新创建网格。我建议在物体周围小心地移动 360 度,将整个物体保持在一个框架内,然后逐渐靠近以拍摄更困难和更复杂的区域,如孔或图案。一般尽量从四面八方覆盖物体的所有部分。
锁定您的曝光(如果您的智能手机相机允许)。大多数智能手机摄像头都会实时自动调整照明条件。当您的照片具有不同的亮度级别并因此对象表面的颜色不同时,这可能会导致问题。通常,当您靠近物体时,曝光会上升,因为通过镜头的光线较少,而智能手机会尝试对其进行补偿。密切注意它,尽量不要离物体太近,避免将相机对准天空,或者锁定你的曝光水平。如果天气变化并且太阳出来了,最好等待它再次隐藏在云层后面(如果可能的话)然后继续。- 设置最大可能的照片分辨率。您可以获得的像素越多 - 最终纹理上的细节就越多。请注意,这会增加文件大小,因此请在智能手机内存中保留足够的可用空间。- 给你的相机足够的时间来聚焦。拍照时不要着急。拍照时停下并保持不动,以免模糊。模糊的照片会破坏整个过程或破坏纹理细节。- 将高质量照片传输到您的 PC。找到以原始质量传输照片的方法。这听起来很明显,但有时并不那么容易做到。使用中介软件进行照片传输会影响质量。(例如,最好将照片作为文件上传到 Google Drive,然后将它们下载到您的 PC 上,而不是使用 Google Photos。Google Photos 可能会降低质量以便更快地上传到云端)。请注意这一点。
.
软件
我将使用 AliceVision Meshroom 来构建初始的高多边形模型和纹理。Meshroom 是免费的,并且能够计算该过程的所有关键步骤:* 对齐照片* 构建点云* 构建网格和纹理现在您可以在此处下载:https ://alicevision.org/#meshroom
首先要做的就是把所有的照片都带入Meshroom,只需将它们拖放到左侧的字段中即可。下面你可以看到代表高多边形模型生成关键步骤的节点链。程序将从左到右一个一个地运行节点。每个节点都有自己的设置,我们最好在开始之前增加一些值。
们可以在大多数节点上保留默认设置以保持简单,除了最后 3 个节点:- 我发现如果我在 [MESHING] 节点中添加更多点,最终网格看起来会更好:Max Input Points = 100000000, Max Points : 10000000
在 [MeshFiltering] 节点中,我设置了两次平滑迭代(10 而不是默认的 5)
最后,我在 [TEXTURING] 节点中为输出纹理设置了更高的分辨率:Texture Side: 16384 with a Texture Downscale: 1
现在我们准备好点击顶部的 START 按钮,让它一一计算所有节点。看顶部的进度条,整个过程可能会很长,这取决于照片的质量和数量,取决于节点中的设置,当然也取决于机器。对我来说,通常需要 15 分钟到几个小时。
您可以随时点击顶部的 STOP 按钮,保存您的项目(以及目前的进度)并稍后返回。下一次它将从最后计算的(绿色)节点继续计算。在右侧,您可以看到正在创建的“点云”及其周围的相机——它们显示了每张照片的位置并与相应的照片相关联。
处理完成后,您将在保存的Meshroom场景文件旁边的[MeshroomCache]文件夹下的[Texturing]文件夹中找到一个高多边形.OBJ模型和一个纹理文件。
最初的高多边形模型就完成了!您已经可以将其导入任何 3D 软件(请注意,在此阶段它非常未优化)并对其应用纹理。但要在游戏中使用它或使其更优化,您需要完成进一步的步骤,从重新划分网格开始以降低多边形数。大多数专业 3D 软件都能够以任何方式重新网格化模型,但我建议免费使用Instant Meshes。这是一个免费的开源程序,您可以在此处从 github 下载:https ://github.com/wjakob/instant-meshes
安装和程序本身非常简单。- 只需打开高多边形网格- 设置目标顶点数(我建议为这样的资产设置 30-60k。这显然超过了游戏行业标准,但仍然比原始模型少 10 倍,而且你不会输任何细节。如果您使用最终模型进行渲染或原型设计,肯定会有所帮助)- 通过求解然后导出网格。
现在你有了新的~优化的网格和旧的纹理。新网格还没有 UV,所以我们需要创建它们,然后将旧纹理转移到新 UV。带有几个插件的搅拌机将有助于做到这一点。它也是完全免费的:https ://www.blender.org/download/
!请记住,您不应该以任何方式旋转、缩放、移动和定位您的模型。让它们保持原样,稍后会有时间更改变换和旋转。安装 Blender 并打开它,将新的优化模型导入其中。您现在可以移除不必要的多边形(地面或环境)。点击Tab启用编辑模式,然后 3开始选择多边形,选择要删除的内容(按住Shift如果你需要选择更多),然后点击X并选择Faces。完成后再次点击Tab退出编辑模式。
- 左键单击模型,然后右键单击并从菜单中选择Shade Smooth - 切换到顶部的UV 编辑。将鼠标悬停在右侧窗口中的模型上,按3切换到多边形,按A选择模型的所有多边形。然后右键单击并选择UV Unwrap Faces -> Smart UV Project -> OK. 这将为优化模型制作新的 UV 并将它们打包。同样,这可能不是展开模型的理想方式,但它是免费、快速且简单的。它有效。
现在,当您打开模型时,您需要将高模模型中的法线和反照率贴图烘焙到其上。我建议为 Blender 使用 BakeLab 插件,因为它允许在搅拌机中制作所有东西并且它是免费的。-从 github下载BakeLab :https://github.com/Shahzod114/Blender-BakeLab2 - 在搅拌机中按编辑 -> 首选项 -> 附加组件 -> 安装 ___ 并选择下载的 .zip 文件。然后在它出现时在插件列表中检查它。- 现在在搅拌机中按 N ,右侧会弹出一个侧面菜单,将出现BakeLab,选择它。
将旧的高多边形模型从 Meshroom 导入 Blender(这可能需要一段时间)- 转到顶部的着色选项卡,选择此模型并确保它有材质,如果没有,请创建一个。(如果没有材质,请在 Slot 1 附近按 + 号)- 添加[Image Texture]节点并将其连接到材质节点的[Base Color]。- 在[Image Texture] 节点上按文件夹标志并打开从 Meshroom 获得的初始高多边形模型的纹理。- 纹理应该出现在您的高多边形模型上。现在我们需要在Bake Lab插件的帮助下将其转移到我们新的优化模型上。
在 BakeLab 中,在 Maps 下按 + 并选择 Albedo,再次按 + 并选择 Normal。确保它们已被检查。- 在下方设置图像分辨率:宽度 4096,高度 4096。您可以在此处使用 2 分辨率的任何其他幂(2048 x 2048、1024 x 1024、8192 x 8192 等)- 现在在大纲的右上角:1。从 Meshroom 中选择您的高多边形模型,我们将纹理应用到该模型中,2. 按住 Shift,3. 并选择您的新优化模型。4. 在 BakeLab 中释放 Shift 并按下 Bake 按钮。稍等一会。- 现在您已经为新的优化模型 UV 烘焙了反照率和法线纹理。它们可能尚未与优化模型挂钩,您需要手动应用它们:1.选择优化模型,移动到Shading,检查它是否有材质,如果没有就创建一个。添加[Image Texture]节点并将其连接到材质节点中的Base Color。2.在[Image Texture]节点上按+ New,设置分辨率(与您在 BakeLab 中设置的相同)。3. 现在点击[Image Texture]节点左上角的第一个小图标,然后从列表中选择新的烘焙Base Color纹理。此时,您已将旧的 Albedo 纹理转移到具有新 UV 的新模型上。现在对法线贴图(已经烘焙)执行相同的操作:- 添加另一个[图像纹理]节点,按+ 新建,
设置分辨率(与您在 BakeLab 中设置的相同)。按下[Image Texture]节点左上角的第一个小图标,然后从列表中选择新的烘焙法线纹理。- 要将其连接到您需要创建[Normal Map] 节点并将其连接到材质节点中的Normal 的材质。现在在[Normal Map]节点的Color中插入[Image Texture]节点。确保在 [Normal Map] 节点上选择了切线空间 。
现在,您的新优化模型应该看起来与 Meshroom 中的原始高多边形相同。反照率是相同的,法线贴图添加了一些缺失的细节。如果您有奇怪的结果,模型看起来太光滑或颜色奇怪,或者阴影不正确,请尝试反转法线贴图的绿色通道:为此,您可以在[图像纹理]和[法线贴图] 之间添加 3 个节点]节点,如下图所示。这将有助于[分离 RGB]到 3 个通道,[反转]绿色通道和[组合 RGB]与绿色通道反转。这可能有助于修复法线贴图和整体外观。仅当您觉得某些地方看起来不对时才这样做,通常您不需要添加这 3 个节点。
现在我们的模型优化了可负担的多边形数量和足够的细节,可以在任何地方使用它。!这是正确旋转我们的新模型、定位它、正确缩放它以获得最终外观和应用变换等的最佳时机。应用真实世界的比例始终是一个好主意。特别是如果您稍后要对其应用一些程序纹理。但是有一种方法可以免费使用来自 Agisoft 的免费软件Texture De-Lighter来稍微改善反照率纹理。在这里下载:https://www.agisoft.com/downloads/installer/
请注意,只有Texture De-Lighter是免费的。
该软件将帮助我们去除纹理上不必要的阴影和暗区。通常有两种类型的阴影可以被移除:环境光遮蔽和投射阴影。首先,您需要将我们的模型带到Texture De-Lighter 中:- 从搅拌机中导出新的优化模型作为带有应用纹理的 .obj 文件。(重要的是您还要导出 .mtl 文件)- 将新烘焙的反照率/基色纹理从搅拌机导出到导出 .obj 的同一文件夹- 将 .obj 导入到Texture De-Lighter* 要删除 A O,您只需需要点击移除阴影在右侧的底部。等等。这里无需过多介绍细节和设置,因为我们的源照片是用智能手机制作的,并不理想。计算完成后,您将在视口和左侧的工作区列表中看到结果。您可以随时在左侧的工作区列表中双击未处理的图像和无ao 的图像之间切换。
要删除投射阴影,您需要首先在模型上标记阴影和高光:- 切换到未处理的 3D 模型- 选择画笔工具和蓝色调色板。您可以使用调色板附近的滚动条调整画笔大小。- 用蓝色绘制阴影最深的黑色区域。- 然后切换到黄色调色板并用黄色绘制过亮的高光。准确并涵盖所有重要领域。- 点击右侧的Remove Cast Shad ows 按钮并等待。现在在左侧的工作区列表中,您应该有 1) 原始模型;2) 没有ao的模型;3) 没有投射阴影的模型。通过右键单击工作区列表中的相应项目并点击导出来导出纹理。
对于这个快速而简单的指南,我建议你看一下 de-lighted texures 并叠加混合它们以获得更好的结果。您可以直接在 Blender 中执行此操作(或者您可以使用任何免费的 2D 编辑器,如 Gimp):- 转到优化的模型材料。创建 2 个新的[Image Texture]节点- 在一个节点中加载没有 ao 的纹理,在另一个节点中加载没有投射阴影的纹理。- 添加[混合] 节点。将一个[Image Texture]连接到[Mix]节点的Color1,将另一个连接到 Color2。设置 Fac = 0.5 或其他您认为更好的值 将其插入材质节点Base Color。您可以重复此步骤并将此结果与您在deilght之前拥有的烘焙纹理混合 (在另一个 [Mix] 节点的帮助下)。以防万一高兴太难了,扼杀了一些细节。
就快结束了!现在设置适当的Roughness和Specular值来表示石头表面。如果你需要一些变化,有一个简单的技巧可以在 Blender 中添加它:- 添加[RGB]节点并将其灰度颜色设置为接近白色(越白越粗糙)
- 添加[Hue Saturation Value] 并将您的 albedo/basecolor 纹理连接到Color中。然后将饱和度设置为 0。- 添加 [Mix] 节点,在其中选择Overlay模式并将[RGB]节点连接到Color1并将[Hue/Saturation] 节点连接到Color2。将Fac 设置为 0.5 - 0.8 之间的值。这将为您的粗糙度增加一些变化。在这种情况下,较暗的区域会更有光泽,而更白的区域会更粗糙,反之亦然,您可以在[Hue/Saturation]和[Mix]节点之间钩住和[Invert]节点,然后转到 Color2。
我建议做的另一件事是使资产的底部变暗。这将有助于强调十字并将下部与地面混合一点:- 添加一个[Geometry]节点以访问对象的位置。- 添加[Vector Rotate] 节点并将[Geometry]中的Position连接到它的Vector 参数。在[Vector Rotate]中选择Y轴。设置与以下屏幕截图相同的值:-0.4;-2.0;0.0; 角度 90. - 添加[Bright Contrast]节点并从[Vector Rotate]钩入Vector给它。稍微降低对比度(至 -0.2)- 添加[渐变纹理]节点。将[Bright Contrast] 挂在上面。- 添加 [混合] 节点。将模式更改为乘法。将[渐变纹理]连接到Color2并将您的反照率/基色纹理结果连接到Color1。将此[Mix]连接到您的材质节点 Base Color,您的底部将变暗。您可以通过调整[Vector Rotate]和[Bright Contrast ]值来更改暗区位置。
就是这样!免费创建照片扫描的游戏就绪(原型就绪)3D 模型。希望本指南对那些想尝试使用智能手机进行基本摄影测量的人有所帮助。如果您对工作流程有任何疑问或指导,请告诉我,我很乐意为您提供帮助!
ps 我实际上忍不住将这个模型导入虚幻引擎 5 并查看它的外观 :D 它需要一些额外的纹理和 PBR 验证,但我认为对于智能手机扫描来说看起来相当不错。在 UE 自动 LODing 的帮助下,甚至可以在游戏项目中使用它。
|