Proximity场数据是 Blender 几何节点中最被低估但功能最强大的数据驱动工具之一。它通过计算每个顶点或面与特定目标对象之间的空间距离,生成一个连续的数值场,进而驱动变形、选择、材质赋值等操作。与简单的数学运算不同,Proximity场数据能够创造丰富的空间渐变效果,是程序化建模中不可或缺的核心能力。本文将带你深入理解Proximity的三种工作模式,并结合实战案例展示其强大之处。
Points模式:点阵驱动的大地形变与特效
Points模式计算的是几何体每个元素到目标点云中最近点的距离。这种模式最典型的应用是程序化地形生成——将多个空物体作为控制点,每个控制点附带一个影响力半径参数,当网格顶点的距离小于影响力半径时,该顶点会沿法线方向被推高或拉低,形成自然的地形起伏。
具体实现方法是使用Grid基础网格作为地形基底,通过Repeat Zone遍历多个控制点位置。在每次迭代中,用Position节点获取顶点位置,通过Vector Math中的Distance计算到当前控制点的距离。将距离值输入Map Range节点,映射到0到1的范围后再乘以强度因子,最后用Set Position节点沿法线方向偏移顶点。为了产生更自然的地形效果,可以在Map Range后串联一个Smooth Smooth节点对过渡区进行软化处理。
这种模式还非常适合制作爆炸冲击波或魔法光环等视觉特效。将点阵的动画位置输入到Proximity节点的Target Position中,配合圆周衰减函数,可以创建出脉冲波扩散的动态效果。使用Attribute Statistic节点捕捉距离的最大最小值,还可以实现自动适配任意尺寸场景的自适应衰减范围。
Geometry模式:曲面包裹与变形约束
Geometry模式计算的是几何体元素到目标网格表面的最短距离,这个距离带有方向性符号,位于目标表面内部的顶点距离为负值,外部为正值。这一特性让Geometry模式在包裹变形和碰撞检测场景中表现出色。
实战场景之一是制作叶子包裹住树枝的藤蔓效果。将树枝作为Proximity的Target Geometry输入,叶片的每个顶点都会计算到树枝表面的最短距离和最近点的法线方向。使用Sample Nearest Surface节点获取目标表面上的最近点位置,然后通过Align Euler to Vector将叶片的朝向对齐到该表面的法线方向,实现叶片自动贴合树枝的效果。再配合Noise Texture加入随机旋转偏移,就可以生成自然的藤蔓缠绕布局。
另一个典型应用是布料网格贴合复杂曲面。当使用Cloth Dynamics模拟布料下落到一个异形雕塑表面时,将Geometry Proximity的最近表面法线作为碰撞反馈力的方向参考,可以大幅提高碰撞计算的准确性,减少布料穿透复杂曲面的概率。
Edge模式:线性距离的精准控制与倒角渐变
Edge模式计算的是到最近边的距离,这一模式在硬表面建模中特别实用。当需要在一个立方体网格上制作渐变的倒角效果时,Edge模式可以根据顶点到棱边的距离,精确控制倒角修改器的权重分布。
具体工作流是先用Edges to Face Groups将网格的边界边分组,然后通过Edge模式Proximity计算每个顶点到各组边界的距离。利用Color Ramp或Float Curve将距离值映射为0到1的权重,最后通过Capture Attribute将权重存储为属性,供Bevel修改器读取。这样得到的倒角效果在棱边处最宽,向面中心逐渐收窄,形成自然的机械边缘过渡。
对于需要渐变圆角的产品设计场景,Edge模式的优势更加明显。比如一个手机外壳的四个角落需要更大的圆角处理,可以通过单独的边选择组配合Edge Proximity实现角落区域的高权重圆角,而侧面直边部分的圆角权重则保持较小值。这种精细控制在传统的边选手动权重绘制中几乎无法实现,但在几何节点中只需要几分钟就能完成参数化配置。
来源:Blender 5.2 LTS Release Notes、Blender Developer Docs
