Skip to content

Distortion

A Distortion emitter bends the picture of the 3D world for a moment, as if seen through moving glass. It makes a shockwave ring, a heat shimmer, or a lens that bulges or pinches. It is made from an ordinary Part with Transform as Distortion, and the Part becomes an invisible marker for the centre of the bend.

What it makes possible:

  • A shockwave ring from an explosion. Field Ripple, Wavelength 0.15, Speed 8, Lifetime 1, an Amplitude graph from 1 to 0. The explosion’s On Emit event fires it.
  • A heat shimmer over a fire. Field Noise, Mode Animate, Loop on, Amplitude 0.15, Noise Scale 6, Direction 90, Falloff 60, Transparency 0.6.
  • A view that wobbles as under water. Field Wave, Epicenter ScreenCenter, Mode Animate, Loop on, Wavelength 0.5, Speed 2.
  • A pull toward an object. Field Pinch, Lens Radius 0.3, an Amplitude graph that rises from 0 and returns to 0.

Exercise 15 makes the shockwave ring step by step.

Made fromAn ordinary Part, with ▾ ▸ Transform as Distortion
One particle isOne running field of bending. Nothing is created in the workspace.
Emit count starts at1
ModesEmit and Animate
SectionsEmission, Field, Screen, Events, Advanced
Not presentSpawn, Motion and Link. There is no Linger row and no Emit Into row.

Distortion is meant for short bursts.

Select an ordinary Part that has not been transformed. Press ▾ beside Transform, then click Transform as Distortion.

  • The Part turns invisible.
  • Meshes and decals inside the Part are removed.
  • The Part’s collision is left as it was.
  • Nothing of the Part’s look is kept. The Part only marks a place.

The Emit count starts at 1. A new Distortion plays at the first press of the Emit button.

Distances on screen use one unit: 1 is about one screen height. Distances across the screen use the same unit. A ring or a lens stays round on a screen of any shape.

Angles are in degrees. 0 points right, 90 up, 180 left and 270 down.

RowKindStarts atUnitWhat it does
ModeListEmitEmit or Animate. See Emit against Animate.
LoopSwitchOffShown in Animate mode. Repeats the effect until switched off. Switching it on starts the effect at once.
EnabledSwitchOffShown in Emit mode. Starts distortions at the Rate until switched off.
RateNumber10Distortions per secondShown in Emit mode. How many start each second while Enabled is on, or during a Duration.
LifetimeTwo numbers0.5SecondsHow long each distortion lasts. Each picks a value between the two.
TimescaleGraph1The speed of the distortion’s own clock. It slows, pauses or reverses the moving field.

The Emit, Delay and Duration boxes on the HUD fire a Distortion as they fire any other emitter. Emission and the HUD describes the shared rows in full.

RowKindStarts atUnitWhat it does
FieldListRippleThe shape of the bend. See The five Field kinds.
AmplitudeGraph0.5How strongly the picture is bent, over the life of the distortion.
WavelengthNumber1.5Screen heightsFor a Ripple, the thickness of the ring. For a Wave, the distance between crests.
SpeedNumber3How fast a ring grows, a Wave travels or a Noise drifts.
DirectionNumber0DegreesWhich way a Wave travels or a Noise drifts.
Noise ScaleNumber2Blobs per screen heightThe grain of the shimmer. A higher value is finer.
Lens RadiusNumber1.5Screen heightsThe radius of the lens.

Rows that the chosen Field does not use are hidden. The table below lists the rows each Field uses. With Distortions of different Fields selected, every row shows.

FieldWhat is seenRows it usesNotes
RippleOne ring of bending that spreads out from the centre.Amplitude, Wavelength, SpeedThe ring starts at the centre and its radius grows with time.
WaveStraight waves that cross the whole screen.Amplitude, Wavelength, Speed, DirectionA Wave has no centre.
NoiseAn uneven shimmer that drifts across the screen.Amplitude, Noise Scale, Speed, DirectionEach emit gets its own random pattern. Two that overlap do not line up.
BulgeA still lens that pushes the picture outward.Amplitude, Lens RadiusIt does not move by itself. Give it motion with the Amplitude graph.
PinchThe same lens, pulling inward.Amplitude, Lens Radius

The bend looks the same at any field of view and any screen resolution. A keypoint below 0 is kept as 0.

Past a certain strength the bend stops growing, and its peaks flatten. Amplitude and Strength together decide when that happens.

A new Ripple has Wavelength 1.5 and Lifetime 0.5. That ring is wider than the screen and hardly moves, so it shows as a broad swell. A shockwave ring needs a Wavelength of 0.1 to 0.3, a higher Speed and a longer Lifetime.

For a Wave, a Wavelength of 0.25 puts four crests down the height of the screen.

A Wavelength below 0.02 is run as 0.02.

For a Ripple, the radius of the ring grows by Speed times 0.1 screen heights each second.

SpeedThe ring growsFrom the middle of the screen to the top edge
30.3 screen heights a secondAbout 1.7 seconds
80.8 screen heights a secondAbout 0.6 seconds

Timescale multiplies Speed. A Speed below 0 sends a Wave or a Noise the other way.

Noise Scale is about the number of blobs in one screen height. A value below 0.05 is run as 0.05.

Lens Radius starts at 1.5, which is larger than the screen. A radius of 0.2 to 0.4 gives a lens that is seen as a lens. A value below 0.02 is run as 0.02.

RowKindStarts atUnitWhat it does
EpicenterListWorldPointWhere the bend is centred: WorldPoint or ScreenCenter.
FalloffNumber0StudsThe distance from the camera to the Part at which the effect has faded to nothing. At 0 there is no fade.
StrengthNumber1MultiplierA plain multiplier on Amplitude.
TransparencyGraphA graph from 0.3 to 10 to 1How present the bend is, over the life of the distortion. At 1 the effect cannot be seen.
AmplifyNumber0An experimental extra-strong mode. 0 is off. See Amplify.
Allow OverdriveSwitchOffGives permission for Amplify.
ResolutionNumber24How fine the bend is across the screen. A higher value is smoother and costs more.
EpicenterThe centre of the bend
WorldPointThe place where the Part appears on screen. It follows the Part and the camera in every frame.
ScreenCenterThe middle of the screen.

With WorldPoint:

  • A Distortion nested in another emitter is centred on the parent particle.
  • A Distortion fired by an event at a position keeps that position for its whole life.
  • If the point is off screen, the centre is off screen. A ring still sweeps into view.
  • If the point passes behind the camera, the effect fades out. It stays off while the point is behind the camera.

The last rule also switches off a Wave and a Noise, which have no centre to see. For a Wave or a Noise that must not depend on the Part, set Epicenter to ScreenCenter.

Falloff works as it does for a Camera Shake. The effect is full at the Part and gone at the Falloff distance. With Falloff at 100, the effect has half its strength at 50 studs.

Falloff applies with both Epicenter settings. With ScreenCenter it still measures the distance from the camera to the Part.

A value of 0 or less gives no fade with distance. The empty box reads studs, 0=global.

An Amplitude graph at 0.5 with Strength 2 bends as hard as an Amplitude of 1. At a Strength of 0 nothing bends.

The starting graph runs from 0.3 to 1. It ends at 1 so that the effect ends without a jump. A keypoint below 0 is kept as 0.

Keep the graph between 0 and 1. A value above 1 asks for the extra-strong mode described under Amplify.

Amplify is an experimental extra-strong mode. It relies on engine behaviour that may change. If it stops working, the effect falls back to normal strength.

  • Allow Overdrive must be on.
  • Amplify is used only when every distortion running at that moment has Allow Overdrive on. One distortion without it switches Amplify off for all.
  • Any value above 0 is run as at least 4 and at most 10. The empty box reads 4-10 overdrive, 0=off.
  • When several distortions ask for Amplify, the highest value is used.

A value below 24 acts as 24. The highest value is 96.

All running distortions share one Resolution: the highest that any of them asks for. Once raised, it is not lowered again while the plugin stays on. One Distortion with a high Resolution raises the cost of every later one.

WhatHow running distortions combine
The bendAdded together.
TransparencyThe lowest value among them is used for all.
ResolutionThe highest value among them is used for all.
AmplifyThe highest value, and only if every one has Allow Overdrive on.

At most 64 distortions run at once. Extra ones are dropped, and the Output window reads, once:

[Part-Icles] Distortion: more than 64 simultaneous effects; extras dropped this frame

An Emit count above 1 stacks distortions that start together. For Ripple, Wave, Bulge and Pinch they are identical, so the result is the same shape, stronger. Noise differs from one to the next.

EmitAnimate
What playsA new distortion for each emit.One distortion for the emitter.
Emit count and RateUsed.Not used. The Rate row is hidden.
Fired again while playingAnother distortion is added.The press is ignored until the distortion ends.
LoopNot shown.Off: the distortion plays once and ends. On: it repeats until Loop is switched off.

With Loop on, every row is read again at each pass. A Noise and a Wave carry on smoothly from one pass to the next. A Ripple, a Bulge and a Pinch start again.

Pressing Emit shows the effect in the Studio viewport. Only you see it, and it is not saved with the place.

Motion Preview draws nothing for a Distortion.

A distortion is seen by one player: the one whose machine fires it. For every player to see it, each player’s machine must fire the emitter. See Firing an effect.

Fired from a server script, a Distortion does nothing. The Output window reads, once:

[Part-Icles] Distortion ignored on the server (no screen).

Distortions are shown by one running copy of Part-Icles at a time. A second copy shows none until the first stops. The Output window reads:

[Part-Icles] Distortion: another Part-Icles engine owns the screen canvas; this engine's distortions are disabled

In the simpler version, Bulge and Pinch look the same. Resolution and Amplify have no effect.

The Events section holds On Emit, On Death and On Destruction. There is no On Hit. See Events.

In an event script, payload.Particle is nil. payload.SetColor and payload.SetTransparency do nothing. See The event script and its payload.

A Distortion can be nested in a Part or Model emitter. It then fires once for each parent particle. See Nesting.

Emitters placed inside a Distortion are never fired.

RowKindStarts atWhat it does
Anim. StepsNumber100How many times the Amplitude and Transparency graphs are read over one Lifetime. A value of 0 or less is run as 100.

The field itself moves in every frame. Only the two graphs are read in steps.

Advanced describes this row in full.

ToolEffect on a Distortion
SizeMultiplies Falloff.
TimeMultiplies Rate and Speed. Divides Lifetime.
RandomizeLeaves Field, Epicenter, Amplify, Allow Overdrive and Resolution as they are.

Size and Time and Randomize describe the tools.

  • Distortion is meant for short bursts.
  • It bends the picture of the 3D world. Screen UI is not bent, and that includes ImageLabel particles.
  • The bend fades to nothing in a band along the edges of the screen.
  • At most 64 distortions run at once.
  • A distortion is seen by one player. A server script cannot fire it.
  • No Linger row. A distortion ends when its Lifetime ends.
  • Emitters placed inside a Distortion are never fired.