Simulating Water Drops on Wood




About: My name is Brian Oltrogge, I am an architect, educator, digital sculptor, fabricator, and DIY enthusiast.
When I designed and built my own CNC, this is exactly the type of project I had in mind.  A chance to play with forms and test ideas, bringing things to life that would otherwise just live in my sketchbook.

In this Instructable I am going to show you how I simulated water drops in Photoshop for shape generation in Rhino 3D and eventual output to my DIY CNC.  This technique could also be applied to any 3 dimensional artwork that you can generate using light and dark to define object depth. 

I am using water drops to show the advanced ability using layers to simulate the interaction of waves with each other resulting in a very believable final model.

The software used:

Rhino 3D

Step 1: - 23 Setting Up the Simulation in Photoshop

Step 1:  To begin you will need to find a source image of water drops so that you can study the relationship of the wave spacing and intensity.  You might find one that is better than the one I used.

Step 2: Bring that image into Photoshop and draw vertical lines at the peaks and valleys of the waves.

Step 3: Select the Gradient Tool.

Step 4: Click on the window in the options bar that shows the active gradient ramp. This opens the Gradient Editor Dialogue box.

Step 5: Click underneath the gradient bar to add more color swatches.  Add as many swatches as you have peak and valley lines.

Step 6:  Expand the window horizontally until the gradient bar spans these vertical lines representing the peaks and valleys.  Arrange the newly created swatches inline with your reference marks.

Step 7: We will now define the colors of these swatches keeping in mind the visual reference of the source water drop image.  We will be defining the depth of the waves based on white to black gradient, so we want to start with a base color of 50% on the CMYK scale.  Double click on the swatch to open the color picker dialogue box.

The values I used were the following from left to right.

10 | 60 | 10 | 70 | 20| 70 | 25 | 60 | 45 | 55 | 50

another way to look at this to get an idea of relative amplitude of the waves...

+40 | -20 | +40 | -30 | +30 | -20 | +25 | -10 | +5 | -5 | 0

If the rings are a long way from the center, the first value might be 50 (flat) and the swatches would slide farther to the right on the scale and remain relatively unchanged.

Step 8:  We will now set a transparency ramp for the new gradient.  Click above the gradient scale to create a new swatch and move it toward the end of the scale.  You should now have 3 swatches above the scale. Set the two on the left to black (opaque) the far right one to white (transparent) this will end the gradient when it reaches the edge of our ripples.

Step 9:  Click on New to add the newly created gradient to the list of Presets.

Step 10:  Now you will need to create a new Photoshop document.  Click File>New and in the New Document Dialogue box, input a width of 10000 pixels and a height of 5000 pixels.  And make sure that it is RGB color.  Rhino will not read a CMYK formatted document.

Step 11:  Insert a new layer in the layer control box.

Step 12:  Using the grid and guide lines, make a box in the middle of document select it with the rectangular marquee tool.  You could do this image full bleed, but I prefer to have a little elbow room when moving things around.

Step 13:  Set the color to 0% C 0% M 0% Y 50% K and bucket fill the rectangle.

Step 14:  Insert new Layer.

Step 15:  Select the Gradient Tool, choose Radial Gradient in the Options Bar and make sure your custom preset is selected.

Step 16:  Click in the center of the document and drag away from the center, releasing near the edge of the field of grey.

Step 17:  Now you should have what looks like a target.  We now need to set the Opacity and Fill values to 50% so layers will mix when overlaid.

Step 18:  Select the move tool and while holding down ALT, drag another copy of the layer made in Step 16.  Note the interference produced.  Also note that where two light area cross, the image gets lighter and where two dark areas cross, the image gets darker.

Step 19:  Make more copies and scale and compose as much as you like.

Step 20:  When you are done, select the field (or part of it) and select Edit>Copy Merged.

Step 21:  Go to File>New.  The values should already be automatically set for what is on the clipboard. Make sure it is RGB mode and Click OK

Step 22:  Go to Image>Auto Contrast.  This takes the whitest area and makes it white and the darkest area and make it black.

Step 23:  Save this image.

Now that we have the final image, we are ready to bring it into Rhino and use the gradients to define 3 dimensional geometry for rendering or to make an actual object.

Additional Bonus:

(If you wanted to do a 3D laser engraving of this image, you are already done as most laser cutters support raster engraving.)

Step 2: 4 - 32 Converting Flat Image to Surface in Rhino 3D

Step 24:  Open Rhino

Step 25:  Go to Surface>Heightfield from Image.  Navigate to Image saved in Step 23 and Select.

Step 26:  In the Top viewport, input the location for the start corner and type 12” for the length of the side.  This is arbitrary, as we can scale it later.

Step 27:  In the Heightfield Dialogue box enter at least 200 X 200 for sample points and 1 for the depth.

Step 28:  Select the resulting suface and go to Analyze>Bounding Box and hit enter.  This will draw a box around the furthest points of the surface you created.

Step 30:  Using this bounding box, we will use Transform>Scale>Scale 1D to make the vertical height of the waves more appropriate.  I chose a depth of 1/8”.

Step 31:  Draw the stock (what you are milling out of) with the top face of the lower left hand corner at 0,0,0 and place your rippled surface within the stock.

Step 32:  Draw a rectangle on the top of the stock that represents where you want to cut the piece out when it is done doing the surfacing.

We are now done setting up the CAD file for CAM processing.  We have defined our stock, positioned it relative to the origin and placed the geometry within the stock.  In the next steps we will choreograph the machine movements that will transfer our design from Bits to Atoms...

Step 3: 3 - 55 Writing the Toolpath and Exporting G-code

Step 33:  Export to CAM software.  If using Mastercam I have found that IGES is the best format.  If you are using RhinoCAM like I do, you don't have to leave Rhino and can begin writing your tool paths.

Step 34:  Open the Machining Operations dialogue box from the RhinoCAM menu

Step 35:  Select the 3 dimensional representation of the stock and click on the orange stock box in the Setup Menu on the MOps window and select Stock from Selection.

Step 36:  Hide the 3D representation of the stock or turn off the layer containing it.

Step 37:  Make sure the appropriate machine and post is selected based on your hardware.

Step 38:  Go to the Create Tab and go to the 2.5D menu.  With the 2D cutout profile selected, choose Profiling.  This brings up the profiling operations dialogue box.

Step 39:  First we need to tell RhinoCAM what tool your machine is holding. Select the tool from the list, or make your own.  Click on New Tool and input the appropriate values.

Step 40:  Click Save Edits to Tool.

Step 41:  Go to the Feeds and Speeds Tab.  These values will vary by the type of material you are cutting and machine capabilities.  The diagram on the right shows what these values correspond to and after some experience you will have an idea of what these values should be.

Step 42:  Go to the Clearance Tab.  This is how high above the stock or part the machine with travel when it is not cutting.  I usually go with 1/2” above the stock.

Step 43:  Go to Cut Parameters Tab.   All I changed here was to turn on the box for Use Inside/Outside for Closed Curves and checked the box, Outside.

Step 44:  Go to Cut Levels Tab.  My stock is .25” thick.  I chose the Total Depth to be .28” and my Depth/Cut to be .1”  This means the machine will cut two passes at .1 and the final pass at .08”

Step 45:  Go to Advanced Cut Parameters Tab.  Check the box next to Use Bridges.  This will keep your part attached to the overall stock and keep the part steady while it is being cut.  I made my bridges .1” X .2” and used only two of them.

Step 46:  Click Generate and view the results in the viewport window.

Step 47:  Now we will select Parallel Finishing from the 3D Operations menu.

Step 48:  Most of our settings will already be save from our last toolpath.  On the Cut Parameters Tab, change the Intol and Outtol to .0001.  This is only necessary because of the extremely subtle detail in the water drop geometry.   This setting tells RhinoCAM how close it needs to stick to the part geometry.

Step 49:  Change the Stepover to 12% of the Tool Diameter. This is about 1/32”.

Step 50:  Click Generate and view the results in the viewport window.

Step 51:  Go to the Simulate Tab in the Mops Dialogue Box.  Note the ghost of the stock returns.  Select the Mop Set 1, click on the play button to watch the simulation of both of the toolpaths.

Step 52:  If everything looks correct, Right click on the Set and select Post.  This will write the NC code for the machine.

Step 53:  Open the file you generated in Mach3.  File>Load G-code

Step 54:  Zero the machine to the stock based on where you set 0,0,0 in Rhino.  If you don't have a CNC machine you can go to  to get information on how to build one : )  Then continue to step 55

Step 55:  Turn on Router, click Cycle Start and watch the chips fly!

Make It Real Challenge

Participated in the
Make It Real Challenge



    • Games Contest

      Games Contest
    • Classroom Science Contest

      Classroom Science Contest
    • Paint Challenge

      Paint Challenge

    31 Discussions


    1 year ago

    cool thing you have done. learn from you.


    3 years ago

    This is really a nice post. I love to read this.


    thank you for your support, please advice where to find a ready made files or project like this for those who aren't talented in using 3d software.


    where to find a ready made file or projects like this to those who aren't talented in 3d SW


    where to find a ready made file or projects like this to those who aren't talented in 3d SW

    Douwe 66

    5 years ago on Introduction

    Really great idea. I tried it too and it worked out great!

    Thank you very much!

    2014-01-05 17.51.48.jpg

    5 years ago

    Just got a DIY CNC mill and I hugely appreciate your level of detail on the process flow between software packages. Knowing what the next program needs is invaluable. Thanks!


    5 years ago on Step 2

    What a awesome project! I would like to try it on my brand new cmc, but I don't really have your ability with all those softwares. So is it possible to upload some files?


    5 years ago

    Very creative, has to be an awesome look. Can you tell me what kind of tool you used & size please. I am new here & love it. You have my vote, if I can find where to vote.


    6 years ago on Introduction

    Want ot add another "beautifully done!" Thanks for your generosity in sharing your technique with us mere mortals. May I ask what version of Photoshop you used in this process? Thanks!


    7 years ago on Step 2

    Thanks for sharing. I've just started to learn cnc. Your instructable is very interesting. If it possible, can you describe step 31. I'm new with Rhino.
    Thank you.

    2 replies

    Reply 7 years ago on Step 2

    Sure! When I set up a CNC file I like to have as much real world information in the 3D model as I can. This step refers to modeling the actual material that you will be cutting. For the water drop file, I had a piece of wood (the stock)in my hand that was approximately 4"X12"X0.25". I modeled this in 3D and then I placed it at the origin. This is the center of the universe as far as your CAD program is concerned. The lower left hand corner of the the top face of this new stock model should be placed at 0,0,0 (origin). This can be done by selecting it and starting the move command, then snap to the lower left hand corner of the top of the stock and typing 0. (shortcut for 0,0,0)

    When you Zero the CNC machine, this is sort of syncing the real world with the virtual world. Giving a point of reference for all of the coordinates in the gcode. So when you zero your CNC machine, be sure to zero it at the same place as you put the origin in your CAD geometry. If you place the geometry to be milled within this 3D stock volume, you know it will be cut into the stock.

    Hope this helps!


    7 years ago on Introduction

    Hey, is there still somewhere we can get plans for your CNC in the vid? It looks really awesome!


    1 reply

    7 years ago on Introduction

    Awesome! I'm going to try this.
    Oh and BTW, I just voted for you!


    After seeing your router build over on CNCzone I knew I needed to mill some water drop patterns on my machine (which drew upon design elements in your build). Nice to see you have documented the process.

    Beautiful work as usual.


    7 years ago on Introduction

    Thank you for the great comments!

    I have done this on a larger scale, I milled an entire IKEA butcher block counter top.  It took over 16 hours to complete!

    I sort of let a cat out of the bag on this one, but I hope to do well in the "Make it Real" competition!

    Thank you very much for your votes!


    A suggestion to take this to the next level: Make a table or bar surface with this treatment, then cover it with clear epoxy. Then, you'd have the appearance of a clear, rippled top, but with a smooth finish.

    Awesome project.