Runtime glass fracture

The Glass destruction mode — impact-centred shard generation at runtime, every FSDFGlassFractureSettings property, the glass composite Actor and preserved material slots.

Glass cannot be pre-fractured the way wood or stone are: the crack pattern radiates from wherever the blow lands, and that point is unknown until the hit arrives. The Glass destruction mode therefore bakes nothing. When a valid hit lands on a glass pane, the framework builds a radial-and-ring crack pattern around the actual impact point, cuts the pane into shards, and spawns each shard as a real simulated rigid body with convex collision.

  • The pattern is deterministic for a given seed: the hit’s seed is used by default, so a replay reproduces the same break.
  • Shards ignore pawns by design — the player never trips over broken glass.
  • By default shards are persistent, Souls style: they settle where they fall, are frozen at rest, and count against the world budget’s MaxSettledDebrisActors.

The mode is selected on the destruction profile (DestructionMode = Glass) and tuned by one struct, FSDFGlassFractureSettings, on the same profile.

Pattern properties

All distances are centimetres.

PropertyDefaultMeaning
ImpactRadius45.0Radius of the shattered zone around the impact. Panel area beyond it is still consumed by the outer shards, so a small radius means a few large pieces, not a hole
RadialCrackCount9Cracks running outward from the impact (3 – 24). Odd counts read better: an even fan looks machined
RingCount3Concentric cracks crossing the radials (1 – 6). Rings grow apart as they leave the impact
ShardCountMin8Floor on the produced shard count
ShardCountMax18Ceiling on the produced shard count. Every shard is simulated, so this is also the body budget
PositionJitter0.35Radial displacement of each pattern vertex, as a fraction of its ring spacing
AngleJitter0.30Angular wobble of each radial crack, as a fraction of the angle between two cracks
RandomSeedOverrideINDEX_NONEOverrides the seed carried by the hit. The default keeps the hit’s seed

Shard thickness

PropertyDefaultMeaning
GlassThickness0.6Fallback thickness when the source panel is too thin to measure
bPreserveSourceThicknesstrueUse the measured thickness of the source panel when it exceeds the minimum below
MinimumMeasurableThickness0.15Below this the source thickness is treated as unmeasurable and GlassThickness is used

A shard with no volume has no valid convex hull and cannot be simulated — which is why a fallback thickness exists at all.

Shard physics

PropertyDefaultMeaning
ImpulseStrength320.0Base impulse magnitude before distance weighting
RadialImpulseBias0.6Share of the impulse pushing each shard away from the impact point, within the panel plane
NormalImpulseBias1.0Share of the impulse pushing each shard along the blow direction, out of the panel
DirectionNoise0.18Random noise added to each shard’s direction, as a fraction of the impulse
NearImpactImpulseMultiplier2.6Shards near the impact carry this multiple of the base impulse; distant ones carry 1.0
AngularVelocityMin90.0Minimum random spin, degrees per second
AngularVelocityMax540.0Maximum random spin

Cleanup

PropertyDefaultMeaning
bPersistentShardstrueShards settle where they fall and stay, like every other Souls debris — frozen once at rest, collision dropped, bounded by MaxSettledDebrisActors, restored by the checkpoint reset
ShardLifetimeMin4.0Only read when persistence is off: earliest removal delay
ShardLifetimeMax8.0Latest removal delay. Jittered per shard so shards do not all vanish on the same frame

The glass composite Actor

A stained glass window is not one destructible: it is a stone surround, lead tracery and several independent panes. When the Glass authoring preset commits a multi-material source mesh, the pipeline splits it by topological material islands and publishes an ASDFGlassCompositeActor Blueprint instead of a single-pane setup:

  • islands dominated by a preserved structural material become the frame — one Static Mesh component that deliberately receives no destructible component. In SDF, a primitive nothing owns is structurally immune, so stone and metal survive every blow by construction rather than by configuration;
  • every glass island becomes an independent pane with its own USDFDestructibleComponent. Hit routing resolves the touched primitive to the destructible that owns it, so a blow to the left pane shatters the left pane alone.

The Actor’s Blueprint-accessible surface:

MemberMeaning
GetPanelCount()Number of independent panes
GetPanelComponent(Index)The pane’s Static Mesh component
GetPanelDestructible(Index)The pane’s destructible component
GetFrameComponent()The unbreakable frame component
FrameMeshStructural mesh (read-only property)
PanelMeshesOne Static Mesh per pane (read-only property)
PanelProfileGlass runtime-fracture profile shared by every pane (read-only property)

Which materials count as structure

The Glass preset ships PreservedMaterialSlotNames = Stone, Metal, Lead, Iron, Frame, Wood. Matching is a case-insensitive substring test against the slot name and the material name. Adjust the list on your own preset to match your naming conventions.

Preserved slots on vessels

The same mechanism serves the pre-baked Glass Vessel preset: islands whose material matches Cork are released as whole fragments instead of being cut with the glass. A corked bottle breaks around its stopper; a vessel with no cork-named slot fractures exactly as before.

Limitations

  • The runtime pane generator handles thin, roughly planar panels. Curved shells — bottles, lanterns — use the pre-baked Glass Vessel path instead.
  • V1 simulates every shard; budget with ShardCountMax.
  • Network replication is not implemented, as everywhere else in the plugin.

Last updated: 2026-08-25

Type to search titles, sections and keywords.