Skip to content
Voro
  1. Geometry
  2. Solvers

Ripple

Ripple simulates waves on a heightfield over an XZ plane. Use it for pond rings, rain, interference and plucked surfaces. Each grid location has one height, so this is a surface-wave solver without overturning waves or detached liquid particles.

Place Ripple in the Geometry view, under Solvers. Start with the default 256 by 256 grid over a 4 by 4 world area. Seed Splash On Build gives an initial disturbance. Press Drop to add a central splash, or raise Rain Rate for repeated drops.

For impacts from another node, select its points resource in Resources > Connections. To add an obstacle, connect an sdf resource and change Obstacle from Off to Reflect off SDF or Confine inside SDF.

The solver publishes the field0 height field and displaced surface points. The additional point output P_2 carries the per-point color data in the current declaration.

Connect the height field to Rigid’s field input to try buoyancy. Enable Buoyancy on Rigid and align its Water Level and Water Height Scale with the Ripple surface. This connection lets Rigid read the water; impacts back into Ripple need their own points connection.

  • Grid Cells and World Size set sampling density. Rest Plane Y positions the surface and Height Scale scales its displacement.
  • Wave Speed controls propagation. Damping controls decay. Max Substeps limits the stability substeps, so check the reported effective speed when pushing speed or grid density.
  • Source Strength and Source Radius control disturbances. Rain Rate is drops per second, with Rain Strength set separately.
  • Boundary offers Reflect, Absorb, Wrap and Fixed 0. Absorb Band controls the width of the open-water damping region.
  • Trough Colour, Crest Colour and Foam Colour shape the point colors. Foam Amount is a color effect on the surface, not a separate whitewater simulation.
  • Simulate pauses advancement. Reset restarts the surface; Seed Splash On Build determines whether a new initial splash appears. Rebuild applies pending grid changes when Auto-Rebuild is off.

Choose Absorb when reflected waves from the edge distract from the impact. Wrap connects opposite boundaries and is useful for repeating patterns.

The height field and displaced points are resources for downstream use. The current polygonal Path Trace workflow does not turn the height field into a water material or mesh by itself.

Inputs

  • geometry points
  • sdf sdf collider
  • points points

Outputs

  • field0 height field
  • P points
  • P_2 points

Ripple

Auto-Rebuild on Build Params (Autorebuild) Toggle op('ripple').par.Autorebuild
Default:
On
Options:
Off, On
Rebuild (Rebuildnow) Pulse op('ripple').par.Rebuildnow
Default:
None
Simulate (Simulate) Toggle op('ripple').par.Simulate
Default:
On
Options:
Off, On
Reset (Resetsolver) Pulse op('ripple').par.Resetsolver
Default:
None

Domain

Grid Cells X (Gridx) Int op('ripple').par.Gridx
Default:
256
Range:
8 to 4096
Grid Cells Z (Gridz) Int op('ripple').par.Gridz
Default:
256
Range:
8 to 4096
World Size X (Worldsizex) Float op('ripple').par.Worldsizex
Default:
4
Range:
0.05 to 200
World Size Z (Worldsizez) Float op('ripple').par.Worldsizez
Default:
4
Range:
0.05 to 200
Rest Plane Y (Floory) Float op('ripple').par.Floory
Default:
0
Range:
-100 to 100
Height Scale (Heightscale) Float op('ripple').par.Heightscale
Default:
1
Range:
0 to 20
Seed Splash On Build (Seedsplash) Toggle op('ripple').par.Seedsplash
Default:
On
Options:
Off, On
Rebuild Grid (Rebuild) Pulse op('ripple').par.Rebuild
Default:
None

Solver

Wave Speed (c) (Wavespeed) Float op('ripple').par.Wavespeed
Default:
1
Range:
0 to 40
Damping (k) (Damping) Float op('ripple').par.Damping
Default:
0.2
Range:
0 to 20
Max Substeps (CFL) (Substeps) Int op('ripple').par.Substeps
Default:
4
Range:
1 to 32
Drop (central splash) (Drop) Pulse op('ripple').par.Drop
Default:
None

Source

Sources (Hdrsrc) Str op('ripple').par.Hdrsrc

Read only.

Default:
"" (Empty String)
Source Strength (Sourcestrength) Float op('ripple').par.Sourcestrength
Default:
1
Range:
0 to 20
Source Radius (Sourceradius) Float op('ripple').par.Sourceradius
Default:
0.1
Range:
0.001 to 5
Rain Rate (drops/sec) (Rainrate) Float op('ripple').par.Rainrate
Default:
0
Range:
0 to 2000
Rain Strength (Rainstrength) Float op('ripple').par.Rainstrength
Default:
0.5
Range:
0 to 20

Boundary

Boundary (Boundarymode) Menu op('ripple').par.Boundarymode
Default:
0
Options:
Reflect (walls), Absorb (open water), Wrap, Fixed 0
Absorb Band (fraction) (Absorbwidth) Float op('ripple').par.Absorbwidth
Default:
0.1
Range:
0 to 0.5
Obstacle (SDF) (Obstaclemode) Menu op('ripple').par.Obstaclemode
Default:
0
Options:
Off, Reflect off SDF, Confine inside SDF

Outputs

Height Field Resource (Heightname) Str op('ripple').par.Heightname
Default:
ripple_height
Displaced Points Resource (Pointsname) Str op('ripple').par.Pointsname
Default:
ripple_points

Color

Surface Colour (Hdrcol) Str op('ripple').par.Hdrcol

Read only.

Default:
"" (Empty String)
Trough Colour (Colorlor) Float op('ripple').par.Colorlor
Default:
0.02
Range:
0 to 1
Trough Colour G (Colorlog) Float op('ripple').par.Colorlog
Default:
0.1
Range:
0 to 1
Trough Colour B (Colorlob) Float op('ripple').par.Colorlob
Default:
0.3
Range:
0 to 1
Crest Colour (Colorhir) Float op('ripple').par.Colorhir
Default:
0.55
Range:
0 to 1
Crest Colour G (Colorhig) Float op('ripple').par.Colorhig
Default:
0.85
Range:
0 to 1
Crest Colour B (Colorhib) Float op('ripple').par.Colorhib
Default:
1
Range:
0 to 1
Foam Colour (Foamtintr) Float op('ripple').par.Foamtintr
Default:
1
Range:
0 to 1
Foam Colour G (Foamtintg) Float op('ripple').par.Foamtintg
Default:
1
Range:
0 to 1
Foam Colour B (Foamtintb) Float op('ripple').par.Foamtintb
Default:
1
Range:
0 to 1
Foam Amount (Foamamount) Float op('ripple').par.Foamamount
Default:
0.5
Range:
0 to 20