On this page
Video by Jakub Spacek. Statue courtesy of Three D Scans.

Note

Although the Ripple solver is in COPs, you need DOP level permissions to use it. This means that it is not available in Houdini Core, but only in Houdini FX, Houdini Apprentice, Houdini Indie, and Houdini Education.

The Ripple solver generates 2D wave propagation based on an input height field, simulating ripples that spread outward from areas of displacement, similar to disturbances on a water surface.

Compared to other Copernicus solvers, Ripple is intentionally simple and lightweight. It focuses on wave motion rather than complex simulation behavior, making it useful for fast iteration and artistic effects. It is commonly used to create surface ripple effects, animate textures, and drive shading properties such as roughness or specular values.

Ripple also supports adjacency maps, which let waves travel based on custom surface connections instead of only moving across a regular image grid. This allows ripples to follow the shape and topology of a mesh, making them work well on curved surfaces, complex geometry, and assets with UV seams. As a result, wave motion can appear more natural and continuous across the surface.

Blocks in Copernicus

Blocks in the COP network act similar to compile blocks in the SOP network, as they encapsulate a bunch of nodes that you can treat as a single object. They typically consist of a Block Begin node and a Block End, with other nodes in between. Turning on Simulate enables simulation mode, which ties the process to the frame bar, allowing for caching and checkpointing in memory for faster recooking and scrubbing.

Another important feature is Live Simulation, which allows Houdini to continuously animate in almost real-time, providing real-time feedback for changes. This is similar to a video game world, where things play whether or not you are actively pressing anything. This mode is not tied to the playbar, but it’s still recooking all the time. So if you make a change in the network, you will see its results being played back live in the viewport.

Ripple blocks

Ripple blocks simulate wave motion using a height-based system. They consist of a Ripple Block Begin and a Ripple Block End with simulation mode enabled by default.

The solver operates on a height field, where pixel values represent displacement. Waves propagate outward from this displacement and evolve over time based on wave speed, conservation, and spring forces. Unlike more complex solvers, Ripple does not simulate fluids. It is designed as a lightweight tool for creating wave-like effects and texture-based motion.

Note

The Ripple Block Begin and Ripple Block End nodes both have a height input, but the final output of the Ripple Block End is named ripple, not height.

Inputs

height

Defines the initial displacement at the start frame. Values in this input act as the source of the ripples.

rest

Specifies the equilibrium value that the simulation returns to over time.

wavespeed

Controls how fast waves propagate. This input can also be used as a mask to limit propagation, allowing you to create collision-like behavior.

conservation

Determines how much energy is retained in the system. Lower values cause waves to dissipate over time, while a value of 1 (default) preserves all energy and prevents dissipation.

spring

Applies a restoring force that pulls values toward the rest state. This can introduce additional ripples as the system settles.

adjacency

An optional cable providing adjacency data that should be computed outside of the simulation. Adjacency nodes can be used to allow pixels to traverse across UV seams (when usually they are on opposite sides of the UV map). These are read each frame, so they can’t depend on the results of the simulation. When you wire in this input, it automatically runs over adjacency.

Using ripple blocks

Once you create a Ripple Block using the tab menu, you can define an initial disturbance using an image.

To...Do this

Create an initial ripple

  1. Put down a File COP.

  2. Set the File Name to an image (for example, butterfly.pic).

  3. Connect the c output of the File COP to the height input of the Ripple Block Begin.

  4. Press Play on the playbar.

    This treats the image as an initial displacement and generates ripples from its values.

Make ripples travel faster

Increase the Wave Speed parameter on the Ripple Block End node.

Note

Increasing wave speed can cause instability in the simulation. If this happens, increase the Substeps parameter on the Ripple Block End node, which divides each frame into smaller steps to improve accuracy and stability.

Make waves dissipate more quickly

Lower the Conservation value on the Ripple Block End node.

A Conservation value of 1 will cause waves to continue indefinitely, while lower values will dampen the motion over time.

Create stronger oscillation around the rest value

Increase the Spring parameter on the Ripple Block End node.

Set a rest state

  1. Put down a Ramp COP.

  2. Connect the Ramp to the rest input of the Ripple Block Begin node.

  3. Lower Conservation to 0.7.

  4. Press Play on the playbar.

    The simulation will gradually settle into the shape defined by the rest input.

Add continuous disturbances

  1. Put down a Fractal Noise COP.

  2. Inside the ripple block, add the noise to the height each frame.

  3. Press Play on the playbar.

    This introduces new displacement every frame, creating continuously generated ripples instead of a single initial wave.

Create damping

  1. Inside the ripple block, put down a Bright COP.

  2. Set the Brightness to 0.9.

  3. Connect the height to the source of the Bright and connect the bright to the height of the block end.

    This multiplies the height over time, gradually reducing the amplitude and damping the ripples.

Use collisions

  1. Put down a Shape COP or any mask image.

  2. Convert it to a mask if needed. If a mask is provided to wavespeed, waves will reflect at the boundary of the masked area. Setting wavespeed to0 in a region creates a hard barrier where waves cannot propagate into that area, which is useful for simulating solid obstacles or collision boundaries.

  3. Connect it to the wavespeed input of the Ripple Block Begin node.

  4. Press Play on the playbar.

Use a dedicated collision mask

  1. Put down a Shape COP or any mask image to act as a collider.

  2. Connect it to the collision input of the Ripple Block End node.

  3. Adjust the Collision Threshold parameter to set the mask value at which the collider takes effect.

  4. Press Play on the playbar.

    Unlike setting wavespeed to 0, this uses a separate collision input on the Block End node, letting you drive collision behavior independently from wave propagation speed.

Drive ripples from animation

  1. Generate animated points or masks (for example, flashing dots).

  2. Add them to the height input inside the block.

  3. Press Play on the playbar.

    This is useful for effects such as raindrops or impacts triggering ripples over time.

Allow ripples to propagate across UV seams

  1. Put down a piece of geometry with UV seams, for example Test Geometry: Pig Head.

  2. Turn on the 3D output flag by ⌃ Ctrl + clicking the display flag on the test geometry.

  3. Plug an adjacency cable into the adjacency input of the Ripple Block Begin node. The solver will automatically use this data to propagate waves seamlessly across UV island seams.

  4. Generate some ripples from animation and connect it to the passthrough of the block begin.

  5. Inside the block, create an Add and connect the height of the block begin to the bg of the add, and the feedback to the fg, respectively.

  6. Connect the blend output to the height input of the block end.

  7. Press Play on the playbar.

Limitations

  • Ripple propagation is not directional.

  • Waves spread evenly in all directions.

  • Direction must be implied through the input height or masks.

Feedback and passthrough

The Ripple Block also supports:

  • feedback for carrying simulation data forward.

  • passthrough for external inputs that should not be recomputed each frame.

Note

feedback and passthrough can accept cables, not just single layers.

Copernicus

Basics

Next steps

  • Slap comp

    Slap composite (slap comp) is a fast image manipulation you can use to view approximate and live results of a final composite.

  • Copernicus heightfields and terrains

    Create realistic terrains with Houdini’s Copernicus heightfield tools.

  • OpenFX

    Describes what OpenFX is and how to use it in your network.

  • Hatching

    Describes how to use hatching in your Copernicus network.

  • VDBs

  • Adjacency

    Describes how to use adjacency nodes in your network.

  • Filter List

    The Filter List window lets you quickly apply effects in your scene.

  • Copernicus tips

    Useful tips and information while using COPs.

Dynamics

Machine Learning

Advanced concepts

  • Normals

    Defines the normals that the Copernicus network uses.

  • Spaces

    Defines the spaces that the Copernicus network uses.