Dynamic Ripple


The dynamic ripple modifiers uses a custom physics system to simulate ripples moving over a water surface. The modifier allows for rain type drops as well as basic interaction from a mouse drag. Some helper scripts are also provided to allow you to add floating objects to the scene that interact with the ripple modifier and to provide a starting point for your own scripts to interact with the system.

Dynamic Ripple Param Description

Axis

The Axis that is up in the local space of the mesh, if the mesh is a flat plane then the system will automatically pick this value for you, but if you use something other than a flat plane then you will need to set this.

Columns

How many columns to use in the physics representation of the water surface, the higher the value the better the simulation but there is no point in using a higher value than the number of vertices across the plane, ie if the plane mesh is 64 by 64 vertices then 64 is a good value to use. Use lower values for less cpu usage.

Rows

How many rows to use in the physics representation of the water surface, the higher the value the better the simulation but there is no point in using a higher value than the number of vertices down the plane, ie if the plane mesh is 64 by 92 vertices then 92 is a good value to use. Use lower values for less cpu usage.

Damping

How quickly ripples dissipate, a value of 1 will mean the ripples go on forever, a low value of say 0.5 will cause the ripples to almost instantly fade away.

Input Damping

How quickly ripples from mouse input dissipate, a value of 1 will mean the inputs will remain deforming the surface, a lower value will cause the inputs to die away, use this value to change how much of a wake is left.

Scale

This allows you to increase the size of the ripples without changing the physics, or make very small ripples that last a long time.

Speed

Not used currently leave at 0.5

Force

How much force a drop will add to the system, increase this to get larger splashes.

Input Force

How much force the mouse input adds to the system, increase this to get deeper wakes.

Obstructions

Not used currently.

Drops Per Sec

In play mode this says how many rain drops will fall each second, use 0 to have none.

Reset Physics

The physics will automatically update if any changes to say row, columns or axis are detected, but you can force a rebuild by clicking this button.

Dynamic Ripple Class

public class MegaDynamicRipple : MegaModifier
{
    public MegaAxis axis;
    public int      cols;
    public int      rows;
    public float[]  buffer1;
    public float[]  buffer2;
    public int[]    vertexIndices;
    public float    damping;
    public float    WaveHeight;
    public float    Force;
    public float    DropsPerSec;
    public float    speed;
    public float[]  input;
    public float    inputdamp;
    public float    InputForce;
    public bool     Obstructions;
}

Dynamic Ripple Tutorial

Video of Features

Floating Objects

First test of a floating rigid body system linked to the Dynamic Water modifier in MegaFiers for Unity. Works quite nicely but I think I can improve things, but the Dynamic water modifier has a method to get the water height for a given point and methods for adding forces to the water, so anyone can code their own interaction scripts for the system.

Click the image below to see the video.

You must be logged in to post a comment.