| On this page |
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 |
|
|
Make ripples travel faster |
Increase the Wave Speed parameter on the Note Increasing wave speed can cause instability in the simulation. If this happens, increase the Substeps parameter on the |
|
Make waves dissipate more quickly |
Lower the Conservation value on the A Conservation value of |
|
Create stronger oscillation around the rest value |
Increase the Spring parameter on the |
|
Set a rest state |
|
|
Add continuous disturbances |
|
|
Create damping |
|
|
Use collisions |
|
|
Use a dedicated collision mask |
|
|
Drive ripples from animation |
|
|
Allow ripples to propagate across UV seams |
|
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:
-
feedbackfor carrying simulation data forward. -
passthroughfor external inputs that should not be recomputed each frame.
Note
feedback and passthrough can accept cables, not just single layers.