本文将介绍如何将网格重新拓扑成一个整洁的低密度模型,然后 UV 解包该网格,以便将纹理贴添加至新模型。本文还将探讨如何使用免费工具,比如 Blender* 及其 Bsurface 插件,重新拓扑雕塑的 3D 网格。
关于重新拓扑
重新拓扑指一种重新构建 3D 网格使其规模更小、设计更整洁、更便于使用的行为。重新拓扑看起来似乎只是 3D 创作人员的课间自习,但这一任务非常关键,且有利于灵活创作模型。大多数原始网格使用 3D 建模程序构建而成,经过了雕塑或扫描,可捕捉细节层以使模型变得美观。然而,同一细节会生成较大的文件,其读写操作和所需的内存对目标应用来说存在一定难度。而且大多数细节丰富的网格细节过多且不对称,生成网格动画时会产生大量奇怪或无用的折痕、折叠和移动。
为避免出现这种情况,需要将网格重新拓扑成更基础、更实用的结构,然后将该 3D 结构的颜色、碰撞和折痕等详细数据传输至“合并”的2D 材质贴图。这样可减少 3D 网格顶点的数量,缩小文件规模,同时渲染效果保持不变。在上图中,原始网格的面数从 500,000 减至 2,000,但输出的外观相对一致。
开始前的准备工作:
- PC:Mac* 或 Linux* 计算机;推荐使用英特尔® 酷睿™ i5 或英特尔® 酷睿™ i7 处理器
- 启用 BSurface 插件的 Blender 3D(免费下载)
Blender* 和 BSurface
Blender 是一款免费、功能齐全的 3D 建模、渲染和动画工作室工具。借助这款强大的工具,你可以在 Blender 中创建简单的 3D 对象或生成全特性动画影片。为实现本文的目的,我们重点使用 Blender 的建模功能。如果之前用过 Blender,建议观看 入门视频学习如何设置 Blender 以获得比较理想的结果。
如需完成本教程中的任务,需要一个高拓扑 3D 网格。出于教学目的,我们使用 Blender 中的一个网格对象 — Suzanne 猴头模型。如需创建顶点数超过 500K 的高密度版模型,请执行以下步骤:
- AddMesh,然后选择 Suzanne。
- 在 Tools面板下方选择 Smooth。
- 在 Properties面板下方点击 wrench 图标以获取修饰符。
- 添加名为 Subdivision Surface的修饰符。
- 将 Subdivision设为 5。
- 单击 Apply。
使用 BSurface 重新拓扑
本视频介绍了以下重新拓扑步骤。
设置 BSurface
如需安装 BSurface,从 File菜单单击 User Preferences。选择 Add-Ons选项卡。搜索 “bsurf”。此时右侧将显示 BSurface 插件。启用该插件时,选中插件名称左侧的方框......此时 BSurface 应已安装并启用。
要想 BSurface 将右侧的顶点与原始模型对齐放置,必须在场景中的“对象模式”下加载和最初选择原始模型。然后创建重新拓扑、添加平面,这样就可以创建一个新的素材。前往 Edit 菜单,然后选择 Snap to Features。
配置 BSurface 时,从 Tools菜单中选择 Grease Pencil选项卡。然后进行以下操作:
- 选择继续。
- 在 Data Source下方选择 Object。
- 在 Stroke Placement下方选择 Surface。
你可能会发现,可以手动移动部分顶点、边缘或平面。要想这些条目同时贴住模型表面,请在编辑模式下选择以下选项:在 Snap下方选择 on,然后在 Snap Element下方选择 Face。最后,点击右下方的 4 个图标。
现在您已准备好使用 BSurface。
创建第一个栅网
BSurface 可根据你在原始网格上绘制的一些线条自动创建网格。
- 只需朝一个方向绘制几条平行线。BSurface 将根据这些线条创建一个交叉网格。不要绘制不同方向或交叉方向的线条。
- 在 Tools面板下方的 Tools选项卡中,可以看到 BSurface。单击 Add Surface按钮。
- 如果要调整创建的内容,可设置 Cross strokes或 Follow的数量(绘制的线条之间的线条)。此外,如果你想要 BSurface 忽略除第一条和最后一条之外的其他线条,可以清空 Loops on strokes。Follow现在就是第一条和最后一条线之间的细分部分。
创建径向网格
你通常需要一个围绕某个区域(比如眼睛或嘴巴)的网格。要创建这种类型的网格,只需从围绕的区域绘制均匀分布的射线。
单击 Add Surface,然后选择 Cycle Cross,以结束径向并设置所需的环形交叉的数量。
和之前一样,可以清空 Loops on strokes以更均匀地设置细分。
角落填充
你会发现,通常网格两侧完成后,仍然需要填充两侧之间的网格。为此,可以选择两侧上的所有点。使用 SHIFT+ RIGHT+CLICK 取消选择角落的点,然后绘制缺失的一侧。在下列示例中,设置并选择顶部和右侧的边缘。按照网格点的弧线绘制底部边缘。单击 Add Surface进行填充。
连接网格
如需连接两个网格,请选择需要连接的所有点。请确保每侧所选择的点的数量相同。然后想象它们之间的一系列线条。绘制至少两条线,最后一条线在突显的顶点集上进行绘制。
现在你已经基本了解了快速重新拓扑模型所需的 BSurface。继续使用 BSurface 在高拓扑模型上创建完整的网格。
UV 解包和添加详细的纹理贴图
UV 解包是这一流程的关键组成部分,也是管道的一部分,可帮助你将高拓扑模型中丢失的细节上传到刚刚重新拓扑的模型上。
UV 解包是定义如何将 2D 图像映射在网格的所有顶点上的过程。可以想象一下地球模型,你有一个光滑的球体,并计划生成有关地球上包裹的所有特征的打印图像。对于包裹住地球的 2D 图像,你需要合理地裁剪图像,使其包裹住球体。这称之为地图投影。
图片来源维基百科:古德等面积投影的世界
对于 3D 建模,UV 解包模型支持你定义这种投影模式,从而了解如何将所有类型的 2D 信息映射到 3D 对象上。在地球示例中,你可以将信息合并成包含有关地球陆地或水的色彩、粗糙度/光泽度和高度信息的 2D 图像映射,然后使用 UV 贴图把它投影到球体上。
以下示例展示了如何 UV 映射 3D 外星人头部模型。左侧的图像称为色彩贴图,中间的图像称为法线贴图或凹凸贴图。两张图像都有在各自图像上进行扁平化处理的线框网格。这种扁平化网格模式就是 UV 贴图。
所需内容
在这部分教程中,你需要一个包含纹理细节的高多边形网格,可以是能用的文件,也可以是创建并用 Sculpt 添加纹理细节的高多边形对象。链接中的文件是雕刻了皱纹、线条和皮皱的猴子头部。
首先确保高多边形网格和重新拓扑或低多边形网格在同一空间中。使用属性面板中的转化选项将 X、Y 和 Z 轴设在同一位置。
本视频还介绍了需要执行的步骤。
第一步:标记接缝处
标记接缝处是一种选择过程,将网格裁剪或分解以使其成为扁平 2D 模式的 3D 模型。例如,衬衫或毛绒玩具等将 2D 材料缝在一起所形成的接缝处。而且你肯定不希望接缝处太多,也不希望接缝位于显眼的区域。将它们放在有大量曲面几何体以及使自然边缘看起来合理的地方。如果像我们一样合并纹理贴图,接缝处可能不会显示出来。但如果使用噪音或其他模式的程序化贴图,这些模式通常在接缝处断裂。
如果要标记接缝处,请选择“低多边形对象”,然后前往编辑模式。选择 Edge 选择工具,然后选择想要放置接缝处的位置。
- 选择 Mesh Menu> Edge> Mark Seams。每一个想要标记的接缝处都要这样操作。
模型上的接缝显示为红色边缘。
第二步:解包低多边形网格
这一步非常简单,包括解包模型,然后创建待映射的纹理文件。需要再次进入低多边形模型的编辑模式。选择所有选项,验证每个网格面是否都已选择。输入 “U”,以显示 Unwrap 菜单。选择菜单顶部的 UV Unwrap。
对于待运行的 UV 贴图,你希望它能够为即将合并或渲染的纹理文件提供指南。创建新的视口窗口,将该视口设为 UV Image Editor。在视口中的 Image下方选择 New Image。
设置所需的分辨率选项,命名,然后保存。
现在它将变成一张不包含任何内容的黑色图像。但是你可以从黑色图像上看到 UV 贴图。
第三步:合并高多边形网格的法线贴图
在这一步,将高分辨率模型的纹理信息“合并”成一个称为法线贴图的 2D 图像文件。然后将这种纹理添加到低分辨率模型的材料上。第一步是确保你的低分辨率模型有包含纹理的材料。
选择低分辨率或重新拓扑模型。在 Properties面板中前往 Materials选项卡。如果没有材料,添加材料并选择 Nodes。(请确保 Blender 应用顶部的渲染设置设为 Cycles Render。)
将其中一个视口设为 Node Editor,以打开 Node Editor。从菜单Add菜单选择 Texture,然后选择 Image Texture。
添加完这些后,将文件设为你之前创建的 UV 图像的名称。同样将其设为 Non-Color data。
接下来需要选择合并设置。在 the Properties Panel下方选择 Render设置,它为摄像头图标。滚动到 Bake部分的底部并执行以下操作:
- 对于 Bake Type,选择 Normal。
- 对于 Space,选择 Tangent。
- 选择 Selected To Active。
- 将 Ray Distance设为至少 1.00。
接下来的部分可能难度较大。你需要选择两种模式,同时需要确保首先选择高分辨率版本,然后选择低分辨率版本。务必处于对象模式,而非编辑模式。
如果处于对象模式,使用 Asset Inventory面板验证高拓扑模型和低拓扑模型是否可见,而且名称右侧是否有眼睛图标。选择高拓扑模型,使其显示为白色。右击,然后点击 Select。应看到用金色部分选择的模型,名称出现在 3D 视口中。
现在按住 SHIFT 键,然后右击 3D 视口中的低多边形模型。这样操作后,低多边形模型的名称将显示为白色,3D 视口中出现低多边形模型的名称,而且选择颜色将从金色变成橘色。完成后,在 Render面板中单击 Bake。
第四步:将法线贴图应用于模型
在这最后一步中,我们提取合并文件,将其连接至低多边形模型的材料。首先需要保存上一步的 Baked 渲染器。在视口中 UV 图像贴图的下方,首先验证保存的 UV 贴图的名称是否显示在文件浏览器中。图像应涂成蓝色/紫色,与下图类似。如果是编辑模式,左侧的图像显示的是法线贴图;如果是对象模式,右侧的图像显示的是合并图像。在 UV 贴图图像编辑器中,选择 Image Menu,然后单击 Save。
现在我们准备连接纹理和模型。
前往包含“纹理图像节点”的“节点编辑器”。将“纹理节点”连接至“法线贴图节点”。在 Add> Vector> Normal Map下方获取“法线贴图节点”。
将法线贴图模式连接至 Principled BSDF Shader 的法线插槽。现在,你应该能在低分辨率模型中看到高分辨率模型的所有细节。
现在你已完成用于游戏或 VR 软件的 3D 素材工作流的主要部分。除了模型的纹理法线信息外,还可以用其他创建真实皮肤、头发或其他材料(包括开裂的混凝土和带有刮痕的炮铜)的材料贴图制造纹理。如欲参考接下来的工作流,请使用 Substance Painter*和 Blender 等工具搜索 PBR 材料。