3. Voronoi破碎基础:从节点到细节控制

Voronoi破碎,说白了就是给模型切“拼图”。

这个拼图不是随便切的,而是基于距离场算法——每个破碎块的中心点向外扩张,直到碰到另一个中心点的“势力范围”。

我在项目里第一次用这个节点时,觉得它就是个黑盒子。后来拆开看,才发现里面全是数学和艺术。

3.1 Voronoi破碎节点详解

Houdini里做Voronoi破碎,核心节点就两个:Voronoi FractureRBD Material Fracture

我个人习惯用Voronoi Fracture,因为它更底层,控制力更强。

节点输入输出

  • 输入:一个封闭的几何体(比如一个球、一个立方体)
  • 输出:一堆碎片(每个碎片是一个独立的primitive)

关键参数

参数 作用 我的经验
Points 破碎点数量 别超过500,否则解算会卡死
Seed 随机种子 调这个就能换一种破碎模式
Bricker 砖块化破碎 做墙体破碎时特别好用
Noise 噪点偏移 让破碎线更自然,不僵硬

嗯,这里要注意:Voronoi Fracture默认生成的碎片是凸多边形。如果你想要凹形碎片,得自己加一步Boolean切割。

核心逻辑:Voronoi破碎 = 点分布 + 距离场 + 切割面

点分布决定了碎片的位置和大小。距离场决定了切割面的形状。切割面就是最终碎片的边界。

3.2 破碎点数量与分布控制

破碎点数量,说白了就是“你想切成多少块”。

但数量不是越多越好。我见过有人把Points设成1000,结果解算时直接崩了。

控制方法

  • 直接设置Points:简单粗暴,但碎片大小均匀
  • 使用密度贴图:通过Scatter节点的Density属性,让某些区域更密集
  • 手动放置点:用Add节点手动画点,适合做精确破碎

我在项目中遇到过一个问题:一个石柱需要底部碎得细、顶部碎得粗。直接用Points做不到,后来我用密度贴图,把底部区域的点密度调高,顶部调低,效果就对了。

技巧:用Attribute Wrangle写个VEX,根据模型高度调整点密度。

// 根据Y轴高度调整点密度
float height = @P.y;
float density = fit(height, 0, 1, 0.8, 0.2);
@density = density;

3.3 破碎块大小随机化

现实中的破碎,碎片大小不可能一样。你想想看,一块玻璃掉地上,有大片也有小片。

Voronoi破碎默认生成的碎片大小是均匀的,这很假。我们需要随机化。

怎么做?

  1. 调整点分布:用ScatterRelax参数,让点分布不均匀
  2. 使用Voronoi FractureBricker模式:这个模式会生成大小不一的砖块状碎片
  3. 后期缩放碎片:用Transform节点,给每个碎片随机缩放

我个人习惯用第三种方法。因为前两种会改变破碎线的位置,而后期缩放不会影响切割逻辑。

注意:碎片缩放时,别缩得太小或太大。太小会穿透碰撞体,太大看起来不自然。我一般把缩放范围控制在0.5到1.5之间。

3.4 破碎块偏移与噪点

破碎块偏移,就是让碎片之间产生缝隙。这个缝隙在物理模拟中很重要——没有缝隙,碎片会粘在一起,解算不动。

偏移控制

  • Offset:直接设置偏移量,单位是模型尺寸的百分比
  • Noise:给偏移加噪点,让缝隙不均匀

噪点参数里,Amplitude控制噪点强度,Frequency控制噪点频率。频率越高,缝隙的细节越多。

我曾经做过一个项目,需要模拟混凝土破碎。一开始偏移设成0.01,结果碎片之间完全没有缝隙,解算时卡成PPT。后来我把偏移调到0.05,再加一点噪点,瞬间流畅了。

避坑指南:我曾经把噪点频率设得过高,结果碎片边缘出现了锯齿状的切割线,看起来像被狗啃过。后来我把频率降到0.5,振幅调到0.02,效果才自然。

知识体系结构图

Voronoi破碎基础 节点详解 点数量与分布 大小随机化 偏移与噪点 Voronoi Fracture RBD Material Fracture 密度贴图 手动放置点 Bricker模式 后期缩放 Offset偏移 Noise噪点 核心:点分布 → 切割面 → 碎片控制 Voronoi破碎 = 数学 + 艺术

这张图把本章的知识点串起来了。你看,从中心节点出发,四个分支分别对应节点、点分布、大小随机化、偏移噪点。每个分支下面还有具体的技术点。

我个人觉得,掌握Voronoi破碎的关键,就是理解“点”和“面”的关系。点决定了碎片的位置和大小,面决定了碎片的形状。你控制好了这两样,剩下的就是调参数了。

最后一个小建议:做破碎时,别一上来就追求完美。先随便切几刀,看看效果,再慢慢调。我每次做新项目,都会先建一个测试场景,把参数调顺了再应用到正式模型上。


公众号:蓝海资料掘金营,微信deep3321