查看原文
其他

使用摄影制图法旋转平面创建资源

Unity Unity官方平台 2022-05-07

摄影制图法可以让我们使用普通相机进行拍摄,创作出高度逼真的3D资源。在《摄影制图法工作流程指南》中,我们介绍了使用摄影制图法从现实世界采集对象和材质。


本文我们将介绍,如何使用旋转平面来快速的通过一组物体制作出逼真的资源。



我们可以使用小型物体来呈现它的放大版本,例如:当放大小型石块的比例,可以表示更大的石块。


我们可以使用可平铺材质,使对象在新比例下看起来更为逼真。因此,使用旋转平面并通过摄影制图法采集小型对象,可以快速创作出任意大小的资源。

 

在采集小型对象时,要注意:

  • 使用很短的焦距。

  • 使用颜色单一的背景,以避免背景影响对象的重构。

  • 拍摄必须在完全黑暗的房间中进行。

  • 在需要采集物体底部时,使用支架结构来抬起物体。

 

本文中的方法和示例会固定相机和光线的位置,仅仅旋转物体所在的平面。


设置采集设备

准备旋转平面和支架

对于旋转平面,我们可以使用普通的木质圆盘,在放置旋转平面的平台盖上黑布。调整旋转平面设置在容易操作的高度,同时确保在采集期间不能看见支架。


如果使用了较小的旋转平面,我们可以在旋转平面上放一个托盘,以便采集较大的物体。


下面的示例在木质圆盘上使用托盘作为旋转平面。



请确保平面的颜色和物体颜色不同,以分离平面和物品。在下面的示例中,蓝色的沙子提供了对比明显的单色遮罩。


我们可以添加标记物到旋转平面或托盘上,这样会知道我们是否在拍摄期间旋转了一整圈对象。



准备光照

我们的示例只使用了一个光源,即LEDGO LG-1200 SC。光源固定在三脚架上,只能垂跟随着相机垂直移动。


 

拍摄的房间必须是黑暗的,以产生纯黑色的背景。这意味着我们必须使用强光来清晰的照亮物体。使用强光很重要,因为在拍摄时,相机必须使用较小的光圈来将物体放到清晰的景深中。

 

由于示例光源被偏振滤光镜覆盖并使用了LED灯,因此来自光源的热量不会影响偏光板。需要注意强光的热量有可能会损坏偏光板。


设置相机

将相机固定到三脚架上,仅通过三角架垂直移动相机。本文使用的相机为Canon 6D。带固定焦距的镜头会产生更好的结果,变焦镜头更加灵活,可以捕捉具体的较小细节。


由于近距离拍摄需要大量照片,因此非常耗时。如果你计划在物体上使用可平铺材质,也许不必进行近距离拍摄。

  

本文中的相机使用50mm的镜头,无需采集微小细节,相机镜头前使用了偏振滤光镜。

 

示例中的相机设置:

  • 光圈:f/11

  • 快门速度:¼

  • ISO: 400

 

本示例中的光圈设为f/11,从而得到清晰的景深。如果物体的长宽比不接近1:1,则需要使用较小的光圈。

 

快门速度取决于光照,光照越强,快门速度越快。尽可能调低ISO,对于Canon 6D,ISO设为该相机的最小值100。


正确的曝光度会在快门速度和ISO间平衡,相机必须有足够大的曝光度,避免出现极限值产生的伪影。

 

本示例使用运行着Canon远程应用的平板电脑,通过Wi-Fi连接着相机。

 

 

相机远程功能非常实用,特别在不必碰到相机时拍摄照片,这意味着我们可以自由的对平面进行旋转,因为平板电脑会从相机的视角显示物体。


放置设备

将相机放置在离物体一定距离处,使其的视野符合物体大小。把光源放在相机背后尽可能近的距离,这样光线会指向相机视角的相同方向。对齐光源和相机,避免产生阴影。

 

放置效果如下图所示。


 

为了包含物体的所有部分,我们必须垂直移动相机,确保相机和光源同时移动。

 

 

关闭房间内的所有光线,只留下相机背后的光源,如下图所示。

 

 

将相机设置为具有黑色背景的曝光和景深,该过程取决于物体和光照,因此请尝试不同的数值,直到实现如下效果。

 

 

为了去除光源产生的镜面反射,必须在相机上使用偏振滤光镜,使其的滤光镜和光源的滤光镜相互垂直。


拍摄照片

首先,设置焦点,使整个物体或整组物体都处于清晰的景深,关闭相机的自动对焦功能。

 

然后,360度旋转平面,确定平面是否足够稳固,以及物体是否总会完整的处于相机视野中。

 

我们拍摄首张照片,验证焦点的质量。


颜色检查器

如果需要物体的纹理,我们必须拍摄带有颜色检查器的照片,以便调节白平衡。如何调节白平衡的信息,请参考:《摄影制图法工作流程指南》。

 

 

我们可以使用Knald调节白平衡或基本颜色烘焙所有照片,这样处理的速度更快,但准确性较低。


在本示例中,我们使用受光材质来调节白平衡,因为它仅使用基本颜色,对纹理的其它图层产生影响,并且能够加入一些变化。


采集过程

缓慢的360度旋转平面,以固定的速度拍摄照片。拍摄的照片越多,重构的效果就越准确。把相机调节到不同高度,重复前面的拍摄步骤,从而采集到物体的所有部分。


 

完成采集后,将所有照片导入Reality Capture之类的摄影制图软件,并检查对齐情况。

 

在本示例中,360度的照片会在不同高度重复拍摄4次,我们总共拍摄了500张照片。通过使用这些照片,Reality Capture会提供以下相机对齐结果。

 

 

如果照片曝光正确,所有相机都应该位于同一个组件中。如果不位于同一个组件,原因有可能是照片没有曝光不正确,或是照片过于模糊,也可能是背景不够一致。在这类情况下,我们应该重新进行拍摄。


重构模型

关于重构过程的详细讲解,请阅读:《摄影制图法工作流程指南》。


Reality Capture - 创建模型

  • 将照片导入Reality Capture。


  • 在WORKFLOW选项卡下,单击Align Images。

     

  • 单击Calculate按钮,从照片计算出模型。如果网格拥有超过2000万个多边形,请使用Simplify功能创建低多边形网格。


    纹理烘焙过程使用高多边形网格来制作高质量纹理,加工出来的低多边形网格会利用高质量纹理。

     

  • 单击Colorize按钮,给模型着色。

     

  • 导出网格。导出时请使用PLY格式,因为该格式比OBJ格式更轻量,处理速度更快。



ZBrush - 模型修复和生成UV

安装PLY导入/导出插件,插件地址:

http://www.zbrushcentral.com/showthread.php?193288-PLY-format-plugin-for-ZBrush-4R8

 

  • 从Reality Capture导出高多边形PLY网格,然后导入到ZBrush中。

     

  • Reality Capture可能会错误的计算模型的某些部分,所以要检查网格,手动更正这些部分。


  • 使用ZRemesher创建网格的副本。当我们设置ZRemesher用于创建副本的多边形数量时,请注意ZBrush以四边形表示多边形数量,而不是三角形。



  • 现在使用和周围物体不同的颜色给各个元素上色。我们可以多次使用相同的颜色,只要同样颜色的物体不直接接触即可。



  • 使用Polypaint来创建Polygroups,本示例使用的容差为0.5。



  • 使用ZBrush的UV Master插件来展开模型UV,确保启用Symmetry和Polygroups。



  • 使用OBJ或GoZo文件格式导出网格。


3ds Max或Maya - 优化UV

  • 将从ZBrush导出的网格导入到3ds Max或Maya。


  • 管理UV,根据物体对UV进行优化。本示例使用了平面UV作为地面,并且调整独立石块UV部分的大小,以优化纹理上的空间。这样会在使用相同的纹理大小时,提高独立UV的质量。


  

当调整UV的大小时,确保使用原始的UV比例。 


  • 为模型设置平滑组,定义模型应该使用平滑表面进行渲染。


  • 导出低多边形网格的模型以便进行烘焙,不改变原始导入内容的位置,旋转和比例。


Knald - 烘焙纹理

  • 从Reality Capture导入高多边形网格,从3ds Max或Maya导入低多边形网格。

     

  • 指定低多边形网格用于烘焙,并烘焙出基本颜色、法线贴图、高度图和环境遮蔽。

     

  • Knald不会导出高度图信息,因此要在文本文件内保存最小,中等和最大高度图信息。


    当选择可以曲面细分的着色器时,把高度图指定到Height Map字段,Unity会提供高度图参数,以便把高度图信息写入文本文件。

     

  • 导出纹理,可以使用TGA、TIFF和PNG等格式。


3dsMax/Maya - 创建LOD和准备网格

  • 如果需要调整模型,例如修改大小或位置,请在Unity使用模型之前修改。


  • 为模型创建细节层级(LOD)。


  • 对每个LOD应用不同的标准材质。


  • 按照Unity细节层级文档的命名规范对LOD命名,使Unity可以正确的导入和设置LOD。


  • 导出LOD。我们应该把它们导出为一个FBX文件,这样所有LOD都存在一个文件中。


Photoshop - 创建遮罩贴图

  •  创建材质遮罩,本示例使用蓝色沙子来选择所有地面。

     

  • 创建遮罩贴图。更多关于遮罩贴图格式的信息,请查看Lit Shader文档:

    https://github.com/Unity-Technologies/ScriptableRenderPipeline/wiki/Lit-Shader

     

  • 调节基本颜色的白平衡。


  • 导出遮罩。我们可以使用TGA,TIFF和PNG等格式进行导出。


Unity - 导出并使用模型

  • 导出模型到Unity。


  • 为模型创建至少二个材质。单击菜单的Assets > Create > Material。


  • 创建分层材质(Layered Material)。单击Assets > Create > Material创建普通材质,然后修改该材质的着色器为HDRenderPipeline/LayeredLit。


  • 将上面创建的材质指定给“分层材质”中的“图层”字段。


  • 使用顶点颜色绘制来管理图层,定义模型的哪个部分上可以看到哪个材质。


小结

按照本文中的步骤,我们就可以创建出逼真的资源模型。熟练掌握摄影制图法,我们可以创建出各种资源模型,并运用在游戏或项目的开发中。


更多Unity精彩技术经验分享和谈论,尽在Unity Connect平台(Connect.unity.com)。


推荐阅读


官方活动

Unite Shanghai 2019

5月10日-12日上海,Unite大会强势回归。技术门票正在热销中,购票即获指定Asset Store资源商店精品21款资源的5折优惠券。

购票请访问:Unite2019.csdn.net



点击“阅读原文”访问Unity Connect

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存