剪切系统是基于平面裁剪(一项经典的CSG操作)的,而不是一个通用的布尔CSG库(如两个任意网格之间的并集、差集和交集)。

以下是核心流程:

  1. 将当前的骨骼网格烘焙(bakeSkinnedModelGeometry)

• 使用敌人的live AnimationMixer姿势,将骨骼网格转换为一个静态的世界空间BufferGeometry。

  1. 平面裁剪几何体(clipGeometryByPlane)

• 将烘焙的网格裁剪到一个或多个平面上。

• 分割三角形,生成新的切割面帽子,并保留材质组(原表面与切割内部)。

  1. 将结果转换为物理对象

• 每个碎片变成一个动态的Rapier体(具有盒子、凸包或复合碰撞器)。

• 对于高级场景,它还可以Spawn裁剪的骨骼网格,它们继续在物理模拟中动画。