Previous topic

Blast UE4 Mesh Editor

Next topic

Fracture Settings

Blast Settings

Blast Material

Mainly, material sets how much health every bond and chunk in destructible object have. Every damage event can diminish health. Once it reaches 0, the bond/chunk is broken. Blast Material also allows to filter out small damage events, so that small damage events do not affect health and will not accumulate. It also allows to clamp large damage events, for example if you do not want to fracture objects in pieces with only one damage event ever.

Blast Material is involved in all types of damage except for the stress-based.

_images/BlastMaterial.jpg

  • Health Bonds and chunks health value. Applying damage decreases health. When it decreased to zero bond will be broken.
  • Min Damage Threshold Min damage fraction threshold to be applied. Range [0, 1]. For example 0.1 filters all damage below 10% of health.
  • Max Damage Threshold Max damage fraction threshold to be applied. Range [0, 1]. For example 0.8 won’t allow more then 80% of health damage to be applied.
  • Generate Hit Events for Leaf Actors A leaf actor is a chunk with no children. When enabled, events are generated per chunk. Off by default as the chunks cannot fracture more and tracking events has a performance cost.

Impact Damage Properties

Impact damage happens on collision of Blast Actor with any physical object, both kinematic and dynamic (marked as physically simulated). To do that, a Blast Actor subscribes to its OnComponentHit callback, so all the usual UE4 rules of collision callbacks apply.

_images/ImpactDamage.jpg

  • Enabled If enabled, all collisions from OnComponentHit will be processed and impact impulse will be applied as damage. Note: You must also set ‘Simulation Generated Hit Events’ to ‘true’ in order to capture physics collision events.
  • Hardness Hardness of material for impact damage scenario. Damage = Impulse / Hardness. This damage is capped by the material’s health.
  • Max Damage Radius The maximum radius to which full damage is applied. The damage radius is given by MaxDamageRadius multiplied by the ratio of damage to material health. Note: Damage can extend beyond this radius by an amount determined by AdvancedSettings.DamageFalloffRadiusFactor.
  • Physical Impulse Factor When damage leads to splitting and new chunks being created, impact impulse can be applied on a new actors. It is not physically correct by any means and will look more like a small explosion, but can be a useful effect. ApplyRadialImpulse will be called with damage radius (<= MaxDamageRadius). Set it to >0 to apply impact impulse (1.0 will apply the same impulse).
  • Advanced Settings In most cases you don’t need to tweak advanced settings, start with basic first.
  • Use Shear Damage Use shear damage program (otherwise simple radial damage is used).
  • Velocity Based If ‘true’ masses will be ignored and impact impulse would be velocity based. If ‘false’ impulse will be mass * velocity, so masses of the objects have great influence on the impulses.
  • Self Collision If set ‘true’ own chunks could damage each other. Otherwise self-collision events are filtered out.
  • Min Damage Threshold Minimum damage fraction threshold to be applied. Range [0, 1]. For example 0.1 filters all damage below 10% of health. It is recommended to leave some small value to filter out small impact damage events.
  • Max Damage Threshold Maximum damage fraction threshold to be applied. Range [0, 1]. For example 0.8 won’t allow more then 80% of health damage to be applied.
  • Damage Falloff Radius Factor Damage attenuation radius factor. See the MaxDamageRadius description. Given a radius R calculated for full damage, damage may be applied outside this radius up to R * DamageFalloffRadiusFactor. The damage applied in this “falloff zone” is linearly attenuated down to zero at the outer radius. The default value should always look fine, tweak in case you know what you want.
  • Kinematics Max Contact Impulse Max contact impulse on kinematic (say bound to world) actors. The idea if for example you have a glass which is hit by something heavy and it is shattered with impact damage setup above. You do not want heavy object to repulse back, but to keep it flying through instead. To do that you can limit max contact impulse. The problem though if you set it too low the object can get through even if it wasn’t fractured. If you use non-velocity based (bVelocityBased is ‘false’) set it somewhere around Hardness * Health, because that is the approximate amount of impulse required to break destructible. Also take a consideration of a mass of objects you hit with versus mass of dynamic chunks that would be spawned on that place, it would make more sense for chunks to have much lower mass. For velocity based impact damage it’s trickier and vastly different masses can still lead to artifacts, so use carefully. Works only on kinematic actors, so use it only if ‘bSupportedByWorld’ set to ‘true’. Default is ‘-1’ where maxContactImpulse is not overwritten and PhysX by default sets it to infinity (max float value).

Stress Properties

On any Blast Actor/Blast Asset you can enable stress solver. The most common usage is just applying gravity force on a static construction so that it will fall apart at some point when the carcass cannot hold anymore. Dynamic actors are also supported, you could for example add centrifugal force so that rotating an object fast enough will break bonds.

It calculates stress on Support Graph every frame. The quality vs computational cost trade off can be set on both ends of spectrum with its BondIterationsPerFrame setting.

It also can be used as another way to apply impact damage, which can give the visually pleasant result of an actor breaking in a weak place instead of the place of contact.

It uses Support Graph, but optionally simplifies it with GraphReductionLevel setting. The smaller the stress graph is, the more precise stress calculation happens in the same time interval, but the overall structure representation by this simplified graph becomes more imprecise.

_images/StressProperties.jpg

  • Calculate Stress If enabled, every frame stress will be calculated and overstressed bonds would be broken.
  • Hardness Material hardness. The higher hardness the more stress is required to break bond.
  • Bond Iterations Per Frame This value is linearly connected with amount of time spent in stress solver every frame. The more iterations the better quality of stress propagation. It is recommended to tune this value first to setup how much frame time can be spent on stress solving and then tune quality with GraphReductionLevel.
  • Graph Reduction Level Determines how much smaller is stress graph in compare with support graph. The resulting graph will be roughly 2 ^ GraphReductionLevel times smaller than the original. The smaller stress graph is, the better stress propagation quality will be achieved for the same amount of BondIterationsPerFrame. But the resulting damage would be less detailed, more rough (chunks bigger).
  • Angular VS Linear Stress Fraction Determines how much of the influence angular momentum in oppose to linear momentum has on bonds overstressing.
  • Split Impulse Strength Impulse to apply after splitting as the result of bonds broken by stress solver. Velocity based. Can be used in case the result of stress solver damage is not visibly noticeable because all chunks stay still and the whole construction remains as if it wasn’t broken.
  • Apply Impact Impulses Apply/Pass impact impulses to stress graph. It is an alternative to impact damage, so it is not recommended to use them both turned on. Use stress-based impact damage if you can afford it in terms of computational cost.
  • Impact Impulse to Stress Impulse Factor Impulse multiplier if it’s passed into stress solver.

Debris Properties

You can limit chunks lifetime using Debris Filter. Intuitively it means that for example you can limit lifetime of chunks that are too small, or too separated from origin, or leave some defined bounding box. Use Debris Filter properties for that. You can define multiple filters each of them will act separately. For example you can set that all chunks which fly too far away from origin must be removed with one filter. And set that chunks on depth 5 should live 10 seconds and be removed.

_images/DebrisProperties.jpg

  • Debris Filters When
  • Debris Depth The hierarchy depth at which chunks are considered to be “debris”. Root chunk has depth 0.
  • Debris Max Separation Chunks are considered to be “debris” if they are separated from their origin by a distance greater than maxSeparation.
  • Debris Max Size Chunks are considered to be “debris” if its bounding box max size is smaller then DebrisMaxSize
  • Valid Bounds Chunks are considered to be “debris” if they leave this box. The box translates with the blast actor’s initial position, but does not rotate or scale.
  • Debris Lifetime Min Debris chunks will be destroyed after a time (in seconds)separated from non-debris chunks. The actual lifetime is randomly chosen between these two DebrisLifetime. To disable lifetime, reset both values to default (0) If DebrisLifetimeMax < DebrisLifetimeMin, the mean of the two is used.
  • Debris Lifetime Max Debris chunk maximum lifetime.