Fracture Body
Fracture物体可实现对对象的实时有说服力的销毁。当与某个物体发生碰撞时,一个可破坏的物体会被程序化破碎的碎片,反过来也可以破碎,直到达到所需的破坏水平。Fracture物体是相当便宜的类型,可以破碎成中等数量的碎片。
也可以看看#
- BodyFracture 类
- 物理演示视频教程的片段Fracture物体的程序性破坏
物理近似#
Fracture物体(以及它分裂成的所有碎片)实际上是一个 Rigid物体,它根据刚体动力学.因此,它具有以下特性:
物体断裂后,它的质量分布在碎片中,它们像刚体一样下落。
形状近似误差#
Fracture物体总是近似为凸包,其中可能包含过多的碰撞几何细节。通常,这是不必要的,因为高度详细的形状不会提供明显的视觉差异,同时会显着影响性能。Approximation Error(近似误差)可以控制最终碰撞形状中的顶点数量:
- 通过0的值,形状精确地复制了网格;它的整个体积都是封闭的。
- 值越高,创建的形状中的顶点越少,但跳过的细节越多,形状可能无法覆盖整个网格体积。最大值为 1。
压裂#
压裂分为三种模式:
这些模式决定了与材质的不同机械性能(例如,其韧性和孔隙率)相关的断裂路径。断裂模式可用于在脚本级别进行选择。
切片#
切片是一种断裂模式,通过平面将网格体积分成两部分。平面通过物体的指定点。切片角度由指定的法线确定。
要切片 Fracture物体,请使用 createSlicePieces() 方法。
开裂#
裂纹是一种断裂模式,涉及从碰撞点形成径向裂纹。所有裂纹块的大小略有不同,以确保视觉真实感。此外,网格还可以沿同心环断裂,模拟脉冲的传播。材质(例如玻璃)越薄和越脆,通过破裂形成的环就越多。环之间的指定距离也随机变化以提供令人信服的结果。
要破解 Fracture物体,请使用 createCrackPieces() 方法。
粉碎#
Volume Threshold#
随着物体骨折,尤其是几次骨折,小碎片可能会开始影响性能。体积阈值决定了破碎件的最小体积,从而控制了破碎水平。将不会生成小于指定值的所有块。
- 通过 0 的最小值,模拟所有碎片,直到由压裂产生的最小碎片。
- 通过更高的值,只生成足够大的块。如果没有碎片有足够的体积,则物体保持完整。
破碎的物体#
物体骨折后,它会获得一个 Broken 标志。取消设置此标志会使断裂的网格恢复到完整状态。破碎的物体仍然表示为一个节点UnigineEditor 层次结构.生成的碎块自动表示为 Fracture 体,它们继承了碎体的物理参数(如减震线速度和角速度,摩擦,归还和面具)。
骨折面材质#
破碎网格时,必须设置将应用于所有新创建的断裂表面的材质。外部骨折块的那些面保留了初始材质。
断裂面特性#
还可以为所有断裂面指定一个新属性。它们定义了游戏行为和其他物理属性,但是,物体参数会覆盖它们。
物理交叉点#
物理交叉点可用作检查可破坏物体是否被射弹击中的快速方法。您可以使用 Physics Intersection Mask 为物体启用选择性交叉检测(例如,使其可被某些射弹击中)。仅在匹配时检测物理交叉点位掩码.
性能优化技巧#
Fracture物体虽然是比较便宜的类型,但是在断片数量较多的情况下,对性能的影响可能会比较大。为避免性能下降,可以使用以下提示:
- 用Volume Threshold参数以减少断裂件的数量。
- 从场景中移除骨折的物体碎片。
一个基于代码的示例,说明了如何从场景中移除(随着时间的推移逐渐消失)碎片,可以在 Physics 部分找到UnigineScript 示例.
分配Fracture物体#
通过将 Fracture物体分配给对象统一编辑器执行以下步骤:
- 打开 World Hierarchy 窗口。
- 选择 Mesh Dynamic 对象以为其分配 Fracture物体。
-
转到 Parameters 窗口中的 Physics 选项卡并分配一个物理物体通过选择 Body -> Fracture 到选定的对象。
- 如有必要,设置物体的名称并更改其他参数。