new ConvexObjectBreaker( [minSizeForBreak] [, smallDelta])
凸包可破碎物体几何剖分器构造函数
Parameters:
| Name | Type | Argument | Default | Description |
|---|---|---|---|---|
minSizeForBreak |
number |
<optional> |
1.4 | 碎块可再破碎的最小边长(米) |
smallDelta |
number |
<optional> |
0.0001 | 判定点共面/贴平面的距离阈值 |
Example
const breaker = new Glodon.CIMCube.Utils.ConvexObjectBreaker(); breaker.prepareBreakableObject(obj, mass, vel, angVel, true); const debris = breaker.subdivideByImpact(obj, impactPoint, normal, 1, 2);
Methods
-
cutByPlane(object, plane [, output])
-
用平面切割凸包,得到两侧碎块
Parameters:
Name Type Argument Description objectObject 源对象 planePlane 切割平面(Cesium.Plane,源几何局部空间) outputObject <optional>
输出容器 Properties
Name Type Argument Description object1Object <optional>
正向侧碎块 object2Object <optional>
负向侧碎块 Returns:
含 object1、object2(任一侧为空则为 null)的结果- Type
- Object
Example
const plane = Cesium.Plane.fromPointNormal(point, normal); breaker.cutByPlane(obj, plane);
-
prepareBreakableObject(object, mass [, velocity] [, angularVelocity] [, breakable])
-
标记可破碎对象(写入 userData:mass / velocity / angularVelocity / breakable)
Parameters:
Name Type Argument Default Description objectObject 凸包几何对象 massnumber 质量(kg) velocityCartesian3 <optional>
线速度 angularVelocityCartesian3 <optional>
角速度 breakableboolean <optional>
true 是否可破碎 Returns:
object- Type
- Object
-
subdivideByImpact(object, pointOfImpact, normal [, maxRadialIterations] [, maxRandomIterations])
-
按撞击点 / 法线细分可破碎凸包
Parameters:
Name Type Argument Default Description objectObject 已 prepareBreakableObject 的对象 pointOfImpactCartesian3 撞击点(与 object.position 同一坐标系) normalCartesian3 撞击法线 maxRadialIterationsnumber <optional>
1 径向切割次数 maxRandomIterationsnumber <optional>
2 随机切割次数 Returns:
碎块列表;无法细分时返回 []- Type
- Array.<Object>