创建隐式扭曲贴图

通过两个链接的 UV 网格指定翘曲,将 2D 对象映射到 3D 坐标。一个网格定义 2D 对象(如导入的图像或 3D 隐式体的切片)的 UV 参数,另一个网格定义在 3D 空间中的相应位置。

  1. 隐式建模功能区,选择扭曲贴图工具。

    将显示扭曲贴图操作面板。

  2. 目标下拉菜单中,选择要进行扭曲、定位与褶皱的 2D 对象的源(通过定位 2D 和 3D UV 网格)。
  3. 选择重复复选框可重复绘制 2D 对象,就像使用线性模式一样。
    • U 计数框中输入一个值,以设置对象在 3D UV 网格跨度内沿 U 方向重复的次数。
    • V 计数框中输入一个值,以设置对象在 3D UV 网格跨度内沿 V 方向重复的次数。
  4. 选择背景复选框可声明一个背景值,所有落在 3D UV 网格范围之外的点均采用该值(如果激活了 "Clamp W" 选项,还包括第三个参数方向 W 的限制,见下文)。
    背景值中输入一个值。例如,如果目标是导入的灰度图像,像素值通常在 [0, 255] 范围内。通常情况下,0 表示黑色像素,255 表示白色像素。您可以使用这些灰度值来控制曲面的局部偏移量,其中黑色 [0] 为零偏移,白色 [255] 为 5 毫米偏移。将背景值设置为 0 后,3D UV 网格之外的所有区域都将返回数值 0,因此不会出现任何偏移。
  5. 选择 Clamp W 复选框可限制扭曲贴图在第三个参数维度 W 中的效果,该维度在每个点上都与 3D UV 网格垂直。将 3D UV 网格视为一个曲面,"Clamp W" 赋予这个曲面有限的厚度,从而形成一个影响体积。
    • Min W 框中输入一个值,可设置 W 方向的影响体积下限(负数表示在 3D UV 网格之后,正数表示在 3D UV 网格之前)。该值应以长度单位进行指定。
    • Max W 框中输入一个值,可设置 W 方向的影响体积上限(负数表示在 3D UV 网格之后,正数表示在 3D UV 网格之前)。该值应以长度单位进行指定。
  6. 扭曲贴图驱动的凹凸贴图偏移工作流程示例。
    • 首先在场景中选择一个要应用扭曲贴图驱动偏移的隐式体。这可能是为现有模型添加纹理、徽标甚至文本。


    • 选择“扭曲贴图”工具,然后从目标下拉菜单中选择创建图像文件

    • 在“图像”上下文中,单击导入图标 ,可选择先前创建的包含场信息的 2D 图像,以便在扭曲贴图操作中使用。在本例中,我们使用的是波纹图案,灰度颜色数据将用于控制球体上局部曲面的偏移量。
      注: 在当前版本中,导入图像必须使用 .png 文件格式。

      选择图像后,该图像会在与全局 Z 平面平行的平面上显示在场景中。

      注: 图像看起来可能与实际情况存在差异。这是因为归一化,也是因为图像被视为一个场而不是图像。不用担心,您可以继续执行工作流程。
    • 现在,您可以设置相关选项,以确定从图像中提取数据的方式。首先,从图像中选择最能描述所需使用信息的颜色通道绿Alpha灰度。本教程所用图像的灰度信息在红、绿、蓝三个通道中均能完整且等效地呈现,因此我们选用默认的红色通道。

      下一个选项是翻转。通过该设置,您可以选择哪些像素强度将被视为低值,哪些像素强度将被视为高值。像素强度值的范围通常为 [0, 255],其中 0 代表黑色,255 代表白色。在本例中,我们将黑色像素 [0] 视为零曲面偏移,白色像素 [255] 视为最大向外偏移。这对本工作流程来说没有问题,但如果想希望扭转这种关系,翻转选项将重新计算像素值,将其转换为 255 减去图像中存储的像素值,从而将黑色转换为白色,将白色转换为黑色。

      最后一个选项是归一化,它会将 [0, 255] 范围调整为一个新的范围。有两个选项 [0, 1] 和 [-1, 1]。隐式建模倾向于将负数视为实体的内部,将正数视为外部。因此,我们将使用 [1, 1] 约定。这也很有用,因为便于我们在场景中持续预览该图像。如果使用 [0, 1],就不会有负数,即没有“内部”。这会导致图像消失,原因是查看图像会对内部区域进行着色(通常为灰色),而外部区域则保持空白。图像上下文的最终设置应如下所示:

    • 单击“图像”上下文中的确定后,将返回“扭曲贴图”上下文。您会发现图像主体上创建了一个控制包络,如下图所示。同时还能看到图像上生成的坐标系,其中红色代表参数坐标方向 U,绿色代表参数坐标方向 V。UV 坐标与由球形小控制点定义的控制包络存在内在联系。我们将在本教程稍后部分详细介绍如何编辑该控制包络。

    • 现在可以选择将要应用扭曲贴图驱动的曲面偏移的隐式体。在本例中,我们将点击球体,也就是我们正在操作的主体。只要点击这个模型,就会出现两个变化。首先,场景中会出现一个新对象,这是一个可变形的扭曲贴图对象,可以将其包覆贴合到球体上。您会发现,它同样有配套的控制包络,有自己的红色 (U) 和绿色 (V) 坐标轴。该网格与图像对象所附网格之间的控制顶点也是一一对应的。此时,场景将如下所示:球体下方可见新增的扭曲贴图主体,球体右侧显示图像对象。

    • 在这一阶段,最好开始将扭曲贴图主体包覆贴合到球体模型的曲面。此时场景中可见对象较多,隐藏图像和扭曲贴图主体可以让视图更清晰。您也可右键单击 2D 图像控制包络的任意顶点,将其隐藏。

      现在可以开始在隐式球体曲面上定位 3D 网格的控制包络顶点。您可以完全控制这些顶点的位置。您可以选择一个或多个顶点,并通过单击和拖动进行移动。将控制顶点拖动到可见实体上方后松开鼠标,顶点就会捕捉到顶点下方最近的可见曲面(朝向屏幕内侧)。若未拖动到可见实体上,直接放置在空白区域,顶点会保留在与视平面平行的平面内。如果将鼠标悬停在可识别特征上,例如曲线的末端,它会自动尝试捕捉到该特征,除非关闭了捕捉选项。最后,您还可以使用“定位”弹出窗口中的小坐标系图标,通过输入坐标来精确定位或偏移控制顶点。
      最好先调整 3D 网格四角的控制包络顶点,如下图所示。注意,包覆后的模型可发生形变,导致图像贴附在隐式主体曲面时产生出现倾斜。若想尽量减少变形,请尽量将四角排列成矩形。“定位”弹出窗口中的选项非常有用。

    • 要了解 3D 控制包络在曲面上的贴合效果,可以旋转模型并查看控制包络的线框。包络应平整铺覆在曲面上,且网格单元数量足够捕捉局部曲率。您还可以右击其中一个控制顶点,然后选择在顶部切换 3D 操纵器,防止控制包络的顶点与边穿透模型(球体)表面显示。
      对于球体包覆,仅四个顶点不足以捕捉曲面曲率,需要在控制包络中添加更多顶点。有两种添加方式:首先,可以选择一条边,然后在弹出的"定位"窗口中单击 +,在中间添加一个新顶点,将一条边分割成两条边。或者,按住 Shift 并单击鼠标左键,直接拆分边。新添加的顶点会默认放置在相邻两个顶点的平均位置,不一定落在球体曲面。将顶点移动至曲面有两种方式:将每个顶点拖动到所需的曲面位置,或者选择一个或多个顶点,然后单击“定位”弹出窗口中的移动到最近曲面按钮。该功能会将点移动到最近的可见主体,不会将顶点移动到隐藏或抑制的主体。若仅需捕捉到一个主体,可将该主体设为场景中唯一可见对象。简单调整后,即可将 3D 控制包络细化为下图所示效果:

    • 现在可以取消隐藏图像对象及其 2D 控制包络。您会发现,2D 和 3D 控制包络的顶点之间仍然是一一对应的。若对 2D 控制包络的顶点分布不满意,可以使用方便的重新采样顶点功能,该功能会在您选择 2D 控制包络顶点时出现在“定位”弹出窗口中。

      注: 如果图像与接收扭曲贴图(球体)的隐式体重叠,可将构建历史回退至图像刚创建完成的阶段,然后使用隐式建模移动主体工具重新定位。之后,确保选择重新采样顶点,使顶点也移至图像的新位置。
    • 两组控制包络设置完成后,即可基于扭曲贴图创建场,是时候创建一个基于扭曲贴图的区域,并将该场关联至偏移操作,这样就能首次精确查看扭曲贴图的效果。此时可以接受扭曲贴图了,因为可以随时返回调整各种参数,直到满意为止。
    • 单击“隐式建模”功能区中的“场”工具,然后清空驱动对象输入,移除默认选择。现在从模型浏览器中选择扭曲贴图对象。场的输入范围值将基于图像数据。
      注: 场无法识别像素强度值的比例尺与单位,会默认单位为长度单位。如果以米为单位,可以直接输入像素强度范围 [0, 255] — 无需任何修改。如果以毫米为单位,则需要乘以 1000,即数值范围为 [0, 255000]。对于非度量单位,则需要采用类似但更复杂的转换。如果在创建图像对象时对像素强度值进行了归一化处理,那么这些值要么在 [0, 1] 范围内,要么在 [-1, 1] 范围内。因此当以毫米为单位时,场的输入范围将是 [0, 1000] 或 [-1000, 1000]。

      输出范围的值取决于需要曲面向内偏移(凹刻)是还是向外偏移(凸刻)。最小值设置最深的偏移量,负数表示曲面向内偏移,零表示没有偏移,正数表示向外偏移。最大值应设置为所需的最大曲面偏移量,并应大于最小值。在本例中,我们将使用 0mm8mm 作为最小值和最大值。这意味着图像的黑色区域没有偏移,而白色区域有最大偏移。本示例的最终输入参数如下所示:

    • 单击确定 确认这些输入。
    • 现在打开“隐式建模”功能区中的偏移工具 ,并将偏移方向选择为向外此时建议输入期望通过扭曲贴图纹理实现的最大偏移量,然后点击确定 (或按 Enter 键)。这将强制调整场景边界框的大小,以适应扭曲贴图产生的场驱动偏移。如果不这样做,可能会出现纹理剪切,如下图所示。在本例中,我们将键入 8mm 然后单击确定 现在单击应用场按钮并选择刚刚创建的场。纹理效果将正确显示在模型上:

    • 如上一步所示,纹理超出了指定的控制包络的边界。从目前的输入输入参数而言,这属于正常情况。要强制纹理保持在控制包络的范围内,需右击“隐式建模结构历史”中的扭曲贴图,对其进行编辑。您可以选择编辑,它会将历史时间轴回退至偏移操作之前;或者选择编辑配方,它会在您编辑扭曲贴图时显示偏移纹理。
    • 编辑扭曲贴图时,选择背景复选框。背景值选项会为所有位于控制包络之外(即所选 2D 图像区域之外)的点设置像素值。在本例中,我们不需要偏移,让原始曲面保持在控制包络外的相同位置。由于我们将图像像素值归一化为 [-1, 1] 范围内的值,因此合适的背景值为 -1,即该范围内的最低值。这也是根据之前创建的场映射到零偏移的值。这一更改将把纹理限制在控制包络内,如下图所示:



    • 此时纹理已被限制在控制包络的延展范围内。不过,如果旋转模型,就可以看到纹理效果穿透了整个球体,并出现在球体背面。

      要防止这种情况发生,您需要在扭曲贴图上下文中选择 Clamp W 复选框。UV 参数坐标沿控制包络横向移动,而 W 坐标始终垂直于控制包络,与曲面法线方向类似。如果选择了 Clamp W,则任何位于 Min WMax W 之外的空间区域都将被视为包络外部,并应用背景值。
      在本例中,我们知道最大向外偏移量为 8 mm,因此我们将此值用于 Max W。对于 Min W,数值为零可将纹理效果限制在原始曲面,也就是控制包络所在的位置。也就是说,控制包络上所有点的 W 坐标均为 0。正确的输入如下所示,可以看到纹理不再穿透球体。

    • 在很多情况下,使用的纹理样本图像的大小并不适合模型。可以使用重复选项,在控制包络的 U 和 V 方向平铺纹理,从而解决这个问题。需要通过设置 U 计数V 计数,输入想要查看的图像副本数。如果图像可以平铺而没有明显的接缝,重复效果最好。

    • 最后一个建议,在某些区域添加纹理而其他区域不添加可能会带来一些视觉假象。使用“隐式建模”功能区中的“平滑化”工具,并将其应用于扭曲贴图对象,可以解决多数此类问题。平滑操作的最佳时机是在扭曲贴图对象创建完成后立即执行。

    • 如果按照本示例中概述的流程操作,就可以使用 2D 图像数据作为数据源,为 3D 模型施加各类曲面效果。下例展示了将包含 Simplex Noise 的图像包覆到局部人体模型上的效果。这样的纹理既实用又美观。重要的是,只需改变 2D 图像输入,就能对设计进行更新/迭代。这为使用隐式建模进行计算设计提供了新的可能性。