左康波

业余文艺cg场景模型师

准确的置换工作流程

  |  
 阅读次数

**

前言

本教程试图涵盖和阐明从ZBrush或Mudbox生成和应用精确位移贴图到Maya的V-Ray,3ds Max的V-Ray,Cinema 4D的V-Ray或Maya的Arnold(MtoA)的过程

**

准确的置换工作流程| Akin Bilgic

准确的位移工作流程

来自: ZBrush / Mudbox


to: V-Ray(Maya,3ds Max,Cinema 4D)/ Arnold(Maya)

v 1.4

- 2015年4月

更新日志

v1.0 - 2013年5月1日 - 公开发布。

v1.1 - 2013年5月10日 - 添加了ZBrush的DPSubPix设置的附加信息。

v1.2 - July 26 2013 - Fixed a typo in Mudbox's Normalize To Search Distance setting ('Checked' meant to be 'Unchecked').

v1.3 - January 30 2014 - Updated procedure for ZBrush, and added procedure for V-Ray for C4D.

v1.4 - April 20 2015 - Updated procedures to disable displacement map filtering and utilize the VRayHDRI loader for 3ds Max.

介绍

本教程试图涵盖和阐明从ZBrush或Mudbox生成和应用精确位移贴图到Maya的V-Ray,3ds Max的V-Ray,Cinema 4D的V-Ray或Maya的Arnold(MtoA)的过程。 。


围绕位移图以及它们应该如何工作通常会有很多混乱和错误的信息。你有时会看到艺术家将位移贴图加载到他们的低分辨率几何体上并使用强度和深度值进行播放,直到它看起来有点类似于它们的高分辨率几何体并假设它尽可能接近它们。但是使用正确的工作流程,您不必调整设置或适应“足够接近” - 它将从一开始就正确地工作,以尽可能准确地匹配您的高分辨率几何。


我们将首先介绍浮点位移图如何工作的一些基本概念,以及如何识别您是否获得了正确的结果。然后我们将介绍艺术家经常遇到的一些常见陷阱以及如何避免这些陷阱。最后,我将提供逐步程序,使位移映射在您选择的软件中准确工作。


如果您已经了解了基本概念并且只想要技术分步过程,请单击此处跳过该权限。

浮点位移如何工作

位移贴图是一种获取高分辨率几何信息并将其烘焙到可应用于低分辨率几何图形的图像的方法。然后,渲染器将使用此贴图尽可能准确地复制高分辨率几何细节。正确生成的浮点位移贴图将使您的低分辨率几何图形非常准确地与您的高分辨率几何图形匹配 - 从一开始就是如此。


这是因为正确生成的浮点位移贴图以​​非常合理的方式工作:位移贴图的像素值直接对应于3D包的场景单位。因此,像素值为1.0将使网格取代1.0场景单位。像素值为0.5将网格替换为0.5个场景单位。并且像素值0.0不会取代您的网格。都很合乎逻辑。并且因为置换贴图的像素值以浮点格式存储,所以它们可以包含远高于1.0的像素值,以及远低于0.0的负像素值。这是存储精确位移信息的好方法。


我们可以使用简单的测试场景来说明这一点:

  • 沿上/下轴在不同位置上的3个平面,每个平面仅由一个多边形组成,每个平面都有一个默认的平面UV贴图。
  • 顶部平面在上/下轴上为35.0单位。
  • 中间平面在上/下轴上为0.0个单位。
  • 底部平面在上/下轴上为-20.0单位。

图01

三个相同的平面位于上/下轴上的不同位置。如果您想自己尝试,请以多种格式
下载此测试设置。

我们将场景导入ZBrush或Mudbox等程序,将中间平面细分几次,然后对其进行简单的雕刻。首先,我们将中心的一个点向上拉,使其接触到它上方的平面,然后在两侧向下拉两个点,直到它们只是触及底部的平面。我们还将在表面上写一些内容以获得更多细节。

图02

带有雕刻的中间平面用于到达顶部和底部平面。

完成后,我们可以继续生成中间平面的置换贴图(使用下面列出的步骤)。我们现在可以在像Nuke这样的程序中打开和检查地图 - 这个程序本身可以使用浮点图像。


在Nuke查看器中,我们可以测试生成的置换贴图。当我们将光标悬停在图像的中心点上时 - 这对应于我们拉动网格触摸顶部平面的位置 - Nuke向我们显示了大约35.0的像素值,如果您还记得我们放置的位置沿上/下轴的顶部平面。此外,当我们将鼠标悬停在与我们下拉的两个点中的任何一个相对应的大致位置上时,我们看到的像素值大约为-20.0,也正是我们沿着上/下轴放置底部平面的位置。

图03

将鼠标悬停在Nuke查看器中的置换贴图的点上会显示其像素值。此处图像为红色,因为位移只需要一个通道来存储其信息 - 因此它存储在红色通道中。负像素值也不是直接可见的,因为它们低于0.0 - 我们的显示器的黑点。

虽然我们可能无法从原始视觉角度直接在位移图中看到太多,但它所包含的数据肯定存在......而且实际上所有的位移图都是 - 用于存储位移数据图像


所以我们可以假设这是一个正确生成的位移图,因为我们提前知道我们沿着上/下轴放置上下平面的高低。当我们将位移贴图应用到我们的3D软件中的中间平面(使用下面列出的程序)并点击渲染时,我们得到了与雕刻程序完全相同的结果 - 中心点刚刚触及顶部平面35.0在它上面的单位,侧面的两个点刚好接触它下面的-20.0单位的底部平面,其余的细节正确移位。没有'位移量','移位'或'中间点'设置必须摆弄 - 它正确且准确地从一开始就取代网格。

图04

位移贴图应用于中间平面并渲染 - 与我们在雕刻程序中的完全匹配。

即使此示例使用相当极端的值(向上35.0单位向下,向下向下20单位),结果仍然准确。在另一个例子中,我们将位移应用于具有多个UV接缝的更复杂的对象,并且仍然获得正确的结果 - 甚至在接缝处也是如此。球体侧面的盒子四面都是5个单位,用作可视指示器以确认正确的位移量。

图05

置换贴图应用于更复杂的对象,在多个UV接缝处发生位移而没有问题。

最后,下面是现实世界生产环境中浮点位移映射的示例。您在右侧看到的细节完全来自位移贴图 - 没有涉及法线或凹凸贴图 - 并且它精确匹配原始雕刻的高分辨率几何体。

图06

在左侧:未应用置换贴图
的basemesh在右侧:应用了置换贴图的basemesh。

常见的陷阱和避免它们

紫外线很重要


置换贴图通常需要对象的良好UV布局。可能没有重叠的UV,因为它会导致生成的地图出错。此外,ZBrush特别不喜欢UV直接放在UV板的边缘(正如一些自动UV生成方法所做的那样) - 因此要确保UV总是略微放在UV板的边缘内。


仔细检查您的Basemeshes


请记住,在更高细分级别进行雕刻时,下部细分顶点的位置通常也会受到影响。因此,导入到雕刻程序中的低分辨率网格可能不再与用于生成置换贴图的低分辨率网格完全相同。始终仔细检查以确保您生成的置换贴图的低分辨率网格与您应用置换贴图的网格相同。


浮点位移图与尺度相关


由于浮点位移图的像素值直接对应于场景单位,因此对象的比例成为保证精确位移量的重要因素。如果在生成置换贴图后向上或向下缩放低分辨率网格,则置换贴图将不再具有相对于基础网格的新比例的准确强度值。地图将必须使用新的对象比例重新生成,或者通过V-Ray中的“位移量”设置或Arnold中的位移“高度”设置进行补偿。例如:如果您将对象缩放到x2,则必须增加位移量设置x2以进行补偿。


浮点-vs-整数


下面列出的程序包括生成32位浮点位移贴图,但如果您处于特别关注保存硬盘空间的生产设置中,您还可以使用16位浮点(半浮点)并仍然获得几乎相同的结果。但是,确保使用16位浮点格式存储图像非常重要,而不是16位整数格式。整数格式在此工作流程中无法正常工作,您必须完成整个“位移量”和“移位”歌曲和舞蹈才能使它们正常工作。这是因为整数格式不支持负像素值,浮点位移贴图使用这些值来表示雕刻区域。如果您不确定如何获取其中一个,请坚持下面列出的程序以获得32位浮点位移贴图。


只有这么多的位移才能可靠地做到


在理想的世界中,浮点位移映射始终产生精确,准确的结果,与原始高分辨率网格完全没有区别。不幸的是,3D软件并不理想 - 每个软件包都有自己的方法来完成类似的任务。这有时会导致位移精度的细微变化,这是平滑算法的主题。一些软件包使用像Catmull-Clark这样的算法来平滑它们的网格,而其他软件包使用它们自己完全不同的方法。直到有一天,所有软件包都同意使用相同的算法(比如皮克斯的OpenSubdiv计划 - 通过电子邮件向软件公司发送电子邮件,鼓励他们实施它!),您的高分辨率网格与移位的低分辨率网格之间可能会略有不同。好消息是,如果你的basemesh不是非常低的多边形,这些变化往往是微妙的,并且变得不那么重要。基本上,不要指望流离失所是一个神奇的子弹。如果您只是尝试通过置换贴图将一个简单的多边形立方体转换为苹果,那么如果您遇到问题,请不要感到惊讶。为您的低多边形对象提供正确的形状和多边形分辨率,并让位移包含细节。


置换程序

所以现在我们知道浮点位移图如何工作以及对它们的期望。只需按下正确的按钮即可在我们的3D软件包中正确生成并应用它们。下面我已经详细介绍了如何从您选择的主要雕刻包中生成浮点位移贴图的步骤 - 并将它们应用于您选择的渲染器中。


以下工作流程中的每个设置都是仔细测试的结果。如果您对任何设置感到好奇,只需单击步骤旁边的“(?)”即可查看弹出窗口,说明设置的作用以及设置原因。


  1. 打开或导入具有多个细分级别的高分辨率网格。
  2. 如果从其他程序导入高分辨率网格 - 通过转到工具选项板重建下部细分,展开几何子选项板,然后单击“重建细分”按钮,直到达到所需的最低级别。
  3. 在ZPlugin面板中,展开Multi Map Exporter子选项板,并确保突出显示Displacement按钮。
  4. 将“地图大小”滑块设置为最适合您需要的图像分辨率。(推荐2048或更高)
  5. 将'翻转V'设置为ON。(将此设置为ON可以补偿ZBrush内部处理UV贴图的方式 - 与Maya和Max等程序相比,它沿垂直轴翻转。)

    Flip V Setting

    Setting this to ON compensates for the way ZBrush handles UV maps internally - which is flipped along the vertical axis compared to programs like Maya and Max.

  6. 单击“导出选项”按钮以显示其他地图选项。
  7. 将“SubDiv Level”滑块设置为您想要低分辨率basemesh的细分级别。
  8. 将“自适应”设置为OFF。(将此设置为ON应该可以生成更高质量的置换贴图。但通过实验,我发现它不可靠,而且在更大的分辨率下通常是不必要的。有时甚至会导致位移图完全无用 - 所以我建议将其关闭。)

    Adaptive Setting

    Setting this to ON is supposed to produce a higher-quality displacement map.
    But through experimentation I have found it to be unreliable and generally unnecessary at larger resolutions.
    At times it can even result in a displacement map that is completely useless - So I recommend leaving it OFF.

  9. 将'DPSubPix'设置为'4'。(此设置确定为对象创建的置换贴图的精度。较高的值会导致生成更高质量的置换贴图,但生成时间会更长。如果您的高分辨率网格是非常高的多边形(16mil或更大),或者您的置换贴图大小较低(2048或更低),那么您可以将其设置为较低的值,如2。)

    DPSubPix Setting

    This setting determines the accuracy of the displacement map created for the object.
    Higher values cause a higher-quality displacement map to be generated, but will take longer to generate.
    If your high resolution mesh is very high poly (16mil or larger), or your displacement map size low (2048 or lower), then you can get away with setting this to a lower value like 2.

  10. 将'SmoothUV'设置为OFF。(将此设置为OFF将禁用我们的低分辨率网格上的UV平滑。 我们将在渲染器中匹配此设置,以确保准确映射位移详细信息。)

    SmoothUV Setting

    Setting this to OFF disables UV Smoothing on our low res mesh.
    We'll match this setting in our renderer to ensure an accurate mapping of displacement details.

  11. 将'Mid'设置为'0'。 (?)

    Mid Setting

    Setting this to 0 makes the displacement map pixel value of 0.0 act as the mid point where no displacement is being applied - which is what we want for an accurate floating-point displacement map.

  12. 将'3 Channels'设置为OFF。 (?)

    3 Channels Setting

    Setting this to OFF stores our displacement information using only the RED channel of our generated displacement map.
    32bit Displacement only needs one channel to store its info, so this setting will slightly reduce file sizes without losing any info.

  13. 将'32位'和'EXR'设置为ON。(将此设置为OFF仅使用我们生成的置换贴图的RED通道存储位移信息。32位置换只需要一个通道来存储其信息,因此此设置将略微减小文件大小而不会丢失任何信息。)

    32Bit Setting

    Setting this to ON enables the export of a 32bit floating-point displacement map.

  14. 将'Scale'设置为'1'。 (?)

    Scale Setting

    此设置确定生成的置换贴图的像素值的比例。
    由于我们需要精确的1:1匹配,因此我们将其保留为默认值1。

  15. 以下是要验证的上述设置的屏幕抓图。
  16. 单击“创建所有地图”按钮,选择要保存地图的文件名和目录。(如果文件类型显示TIF,请不要担心,因为我们启用了EXR按钮,它实际上将以EXR格式保存)
  17. 单击“保存”按钮以运行置换贴图生成。
  18. 您的置换贴图现在可以使用了!

关于ZBrush的和Multimap之导出插件的说明:
在ZBrush 4R6之前的版本中,Multimap之导出插件只允许出口32位中的TIFF格式-这Maya和3ds Max中可发生问题。因此,如果您在4R6之前的版本中使用Multimap Exporter插件,您可能必须在Nuke或Photoshop中将生成的32位TIFF转换为EXR,然后才能在Maya或3ds Max中使用它们。如果在Photoshop中转换为EXR,请确保图像模式(图像菜单 - >模式)设置为RGB颜色而非灰度,因为这也会导致问题。

结论

希望这有助于为您清理常常令人困惑的Displacement Mapping主题。这是一个非常重要的工具,可帮助您保持高分辨率资产的精益和生产友好性。

转自akin

隐藏