实时破碎:从「空壳」到「水密」的迭代
问题
初版用「重心离散分类」做网格切割——把每个三角形按重心归到切割平面一侧。速度快,但暴露两个致命缺陷:横跨切割面的三角形被强制归边,产生锯齿;更糟的是,简单分离只剥离了表面,没生成新截面,碎片是空心的「纸片壳」,物理碰撞也异常。
思考
根本问题是把三角形当「原子」处理了。真正的切割要深入到顶点级别,做几何布尔运算——计算切割平面与每条边的精确交点,重构上层/下层壳体,并生成封口的截面。
解决
引入 SlicedHull 数据结构做精确几何布尔运算;用重心坐标插值重采样交点处的 UV/法线/切线;用单调链算法在 2D 投影上求凸包、三角剖分生成截面,实现水密网格。
反思
这次迭代让我理解了「性能」和「拓扑正确性」的权衡——朴素算法 O(N) 很快但视觉是废的,进阶算法贵但真实。真正的工程是找到那个「递归深度限制 2-3 层 + 碎片大小阈值」的平衡点,在 60FPS 下既真实又流畅。







