Mesh Topology节点系统概述
Blender 5.2 LTS引入了一套全新的Mesh Topology节点系统,为几何节点的网格拓扑操作提供了更精确、更高效的工具集。这套系统包含10个专用节点,分别用于访问和分析网格的面、边、顶点之间的拓扑关系。与传统的手动选择方法相比,Topology节点可以实时计算网格的连通性,并通过数据流驱动的方式将拓扑信息传递给下游节点。
Mesh Topology节点的核心思想是将网格的拓扑结构抽象为三个层次的数据关系:顶点与边的连接关系(Vertex-on-Edge)、边与面的连接关系(Edge-on-Face),以及面与顶点的连接关系(Face-on-Vertex)。通过这些关系,用户可以精确地定位网格中的特定元素,并基于拓扑位置执行后续的变形、选择或属性传递操作。
在Blender 5.2中,Topology节点系统被设计为与现有的几何节点架构无缝集成。这意味着用户可以将拓扑查询的结果直接连接到Set Material、Set Shade Smooth、Selection等输入端口,实现拓扑驱动的材质分配和光滑组控制。下面我们将逐一剖析每个核心节点的用法和实战技巧。
Corners of Face:面角遍历与选择
Corners of Face节点是Topology节点系统中使用频率最高的工具之一。它的功能是遍历指定面的所有角落(Corner),返回每个角落对应的顶点索引、UV坐标和法线信息。在实战中,这个节点常用于实现基于面形状的选择逻辑。
例如,当你需要从整个网格中筛选出所有四边形面时,可以将Corners of Face的Total输出与整数4进行比较,输出为True的面即四边形。同样的方法可以用于筛选三角形面(Total为3)或N边形面(Total大于4)。这种基于拓扑的选择方式比使用域转换(Domain Size)更加直接和高效。
更高级的应用是结合Evaluate at Index节点,获取每个角落的顶点位置信息。例如,你可以遍历一个面的四个顶点,判断它们是否共面(即所有顶点到面的距离差是否在容差范围内),从而快速检测出非平面面。这个技巧在模型修复和拓扑优化场景中非常实用。
在属性传递方面,Corners of Face还可以作为Face Corner域的入口。当你需要为每个角落单独存储数据(如锐度标记、UV协调权重)时,可以通过这个节点建立面与角落的映射关系,实现属性在域之间的精准传递。
Edges of Vertex:顶点边拓扑分析
Edges of Vertex节点用于分析指定顶点的邻接边信息。它返回与当前顶点相连的所有边的索引,以及每条边的长度和方向向量。这个节点在程序化建模中的边界检测和边缘环选择方面有广泛的应用。
一个经典的用法是检测网格的边界顶点。通过Edges of Vertex的Total输出(即与顶点相连的边的数量),可以快速判断一个顶点是否位于网格边界。对于封闭网格,任何顶点的相邻边数量都应该等于其相邻面的数量乘以某个系数。当相邻边数小于期望值时,该顶点就是边界顶点。在模型修复中,边界检测是自动孔洞填补的第一步。
另一个实用的技巧是利用Edges of Vertex配合Sort Elements节点实现边缘环的选择。通过获取顶点在所有相邻边中的方向排序,可以筛选出构成环形路径的边序列。这个方法在硬表面建模中的倒角边缘选择场景下特别有用,可以自动识别需要倒角的硬边,无需手动框选。
Edges of Vertex配合Length输出可以实现边缘长度的实时分析。在减面优化中,你可以根据边长度筛选出短边(通常出现在密集三角面区域)并执行Collapse Edge操作,从而在保持整体形状的前提下减少面数。
Vertex of Corner与Corner of Edge:双向拓扑导航
Vertex of Corner节点提供了从角落(Corner)到顶点的单向导航能力。它接收Face Corner域的输入,输出每个角落对应的顶点索引。这个节点在将面角数据转换为顶点数据时非常关键。例如,当你需要根据UV角落的法线信息调整顶点位置时,可以通过这个节点建立角落与顶点的映射。
Corner of Edge节点则提供了从边到角落的导航。它接收边的索引,返回与该边相邻的所有角落。在平滑组(Shade Smooth)控制的场景中,这个节点可以帮助你根据边的相邻面的法线夹角自动决定是否给边添加锐度标记。从实践来看,当相邻面的法线夹角超过30度时,一般需要添加锐度标记以获得清晰的视觉边界。
在程序化建模中,双向拓扑导航实现了一个重要的能力——属性域映射的自动推导。例如,你可以从顶点域开始,经过Vertex of Corner到达Face Corner域,再通过Corners of Face回到Face域,从而将顶点属性传递到面域。这种多跳的属性传递链在复杂的程序化模型中是必不可少的。
Face of Edge与Edge Angle:边缘面分析
Face of Edge节点返回与指定边相邻的所有面的索引。对于网格内部边,相邻面数量为2;对于边界边,相邻面数量为1。这一点在边缘检测和锐度判断中非常关键。通过与Edge Angle节点配合,你可以获取每条边相邻两个面的法线夹角,从而自动计算出边的锐利度。
Edge Angle节点是拓扑系统中新增的专用计算节点。它接受边和相邻面的拓扑关系作为输入,输出每条边的角度值(弧度)。在实践中,Edge Angle与Face of Edge的配合可以实现自动倒角选择:当选中的边的面夹角小于某个阈值(如0.5弧度,约28度)时,自动应用Bevel节点。这种拓扑驱动的倒角策略比手动选择更加精确和可重复。
在布尔运算后的模型清理中,Face of Edge可以帮助你识别和修复非流形边缘。非流形边是指相邻面数量不等于2的边——当三条或更多面共享同一条边时,网格将无法正确打印或渲染。通过Face of Edge检测到这样的边后,可以结合Merge by Distance节点进行自动修复。
实战:半自动倒角选择系统
综合运用以上节点,我们可以构建一个半自动的倒角选择系统。系统的核心思路是:遍历所有边,计算相邻面的法线夹角,根据夹角值自动选择需要倒角的边,并控制倒角的半径大小。
首先,使用Mesh Primitive节点创建基础几何体(如一个立方体经过Catmull-Clark细分后的控制笼)。然后,通过Edges of Vertex和Face of Edge获取所有边的拓扑信息。接着,利用Edge Angle计算每条边的面法线夹角。将夹角值映射到倒角半径:夹角越小(平缓过渡),需要的倒角半径越小;夹角越大(硬边过渡),需要更大半径的倒角来柔化过渡。
在实际项目中,这套系统最适用于工业品外壳和机械零件的建模。传统的倒角工作流需要设计师手动选择每一条需要柔化的边,而通过拓扑节点驱动的自动选择系统,可以在几何体发生修改时自动更新倒角结果。这不仅提升了建模效率,还确保了倒角的一致性和可重复性。
来源:Blender Developer Docs
