22
$\begingroup$

What is the best method to create this kind of reflection and how to animate it?

Example Image with Caustics

$\endgroup$
  • 7
    $\begingroup$ These are known as Caustics. Unfortunately these are very computationally expensive to simulate, and cycles isn't very good at it. See blender.stackexchange.com/q/8645/599 and blender.stackexchange.com/q/10434/599. You might want to try a renderer with bi-directional pathtracing and MLT, e.g. luxrender. $\endgroup$ – gandalf3 Feb 7 '15 at 20:10
  • $\begingroup$ A wave modifier can create the ripples in a surface. If it is glossy and lit by a lamp, perhaps they will cast onto another object. Never tried it. $\endgroup$ – The Beachdancer Feb 7 '15 at 20:21
  • $\begingroup$ If it's just an effect, rather than physically accurate to the scene, is there a good way to do a procedural caustic texture? $\endgroup$ – ajwood Feb 7 '15 at 20:30
  • $\begingroup$ There is a great tutorial at blendernation.com/2015/04/27/cycles-water-uber-shader (linked to Cycles | Water Uber Shader). And there has been an approach with Metropolis sampling. $\endgroup$ – Samoth Jan 22 '16 at 15:35
  • $\begingroup$ The fake Caustics shader is explained in Part 1 starting from 18:03. $\endgroup$ – Samoth Jan 22 '16 at 17:15
13
$\begingroup$

As @gandalf3 mentioned, Cycles is not great at this, if you want to make your render physically accurate; My approach can give you photo realistic results, which are not, however, physically accurate.


Water Movement

You can use a Displace modifier, a Stucci procedural texture and an empty for Texture Coordinates in order to simulate the water movement. Do keep in mind that you'll need a lot of samples in order to get a usable image and a build with the Metropolis patch.

To do this, first add a subdivided plane (Shift + A>Mesh>Plane); then, go to the Modifiers tab in the Properties editor and add a Displace modifier and press the New button to add a new texture. After that, go to the Texture tab and select Stucci; you can later tweak this setting for better results.

enter image description here

Then add a Empty, go back to the Modifiers of the plane and select Object in the drop down list for Texture Coordinates; after that, set the object to be the empty you created earlier.

enter image description here

You can then animate the position and/or rotation of the empty, in order to "animate" the water movement.

Then you can simply add some glossyness to the plane point a lamp at it and render.

Caustics Simulation

A better way is to simulate Throw Patterns on a Spotlight.

Add a Spotlight (Shift + A>Lamp>Spotlight); then add another plane, in the location of the spotlight, and move it down. After that, parent the plane to the spotlight, by selecting the plane first and then the spotlight and pressing Ctrl + P>Offset (Keep Offset). Now, go to the node editor and add a material to the plane, wich looks like the following node tree:

enter image description here

In order to animate the caustics, you can use a Vector Mapping node.

enter image description here

Here, you can animate the X and Y values, for the location, in order to move the caustic pattern around.

Now you can point the spotlight at your objects and git it a test render. Make sure the strength of the spotlight is rather high - I used 2000 - otherwise, you'll not see the light on your object. Also, you can control the softness of the throw pattern by adjusting the distance of the plane to the spotlight or the Size field found in the Lamp tab, on the Properties editor, when the Lamp is selected:

enter image description here

This gives me this result:

enter image description here

$\endgroup$
  • $\begingroup$ The ocean modifier is also good for this. However this answer doesn't really explain the caustics part (which seems to be the focus of the OP's question) $\endgroup$ – gandalf3 Feb 7 '15 at 20:45
  • $\begingroup$ Thanks for the great solutions man! I've animated the rotation and contrast value of the Voronoi Texture (using Mapping Node and Color Ramp) and the reflections look amazing! $\endgroup$ – Paul Gonet Feb 9 '15 at 13:23
5
$\begingroup$

First:

There is a great tutorial at blendernation.com (linked to Cycles | Water Uber Shader). The fake Caustics shader is explained in Part 1 starting from 18:03.

Second:

There has been an approach with Metropolis sampling.

Third:

There is a new Add-on by Eric Edelo, a "Fast & realistic glass shader for Cycles" called Prism.

PRISM - An advanced & realistic glass shader for cycles

One of its main features are:

Super-fast caustics with colors, dispersion & absorption

Realistic caustics and color dispersion

You have to pay $6.99 for it, but it should close this gap... This Post is not intended to be an advertisment and I'm not affiliated with the cgcookiemarket, I just found out about this news on blendernation.com and think, it might help you solve your question.

$\endgroup$
  • 2
    $\begingroup$ I've been playing around with prism and from why I can tell it mainly does transmissive (refractive) caustics. Not reflective caustics like in the OP's picture. $\endgroup$ – PGmath Mar 18 '16 at 15:00
  • $\begingroup$ At least they advertise it as that it "lets you build virtually any glass-like material, be it diamonds and gems, water bottles, fluids, lenses, ice and so on". To be honest, I didn't try it out on my own, but it should be possible. And it's probably possible to position a non-rendered (camera ray invisible) mirror below to achieve it... $\endgroup$ – Samoth Mar 18 '16 at 15:20
  • 3
    $\begingroup$ See my comment on the cgcookie market page you linked, he did confirm that it only produces refractive caustics. $\endgroup$ – PGmath Apr 7 '16 at 18:39
  • $\begingroup$ Yeah - so it might still be working by only using refractive caustics and a camera-invisible light source from below the water surface to fake this effect using Prism. Should be worth a try. $\endgroup$ – Samoth Apr 8 '16 at 9:08
  • $\begingroup$ As of today, November 2018, the second and the third ways don't work: Metropolis sampling addon became unmaintained in 2016 (as I understood, the creator had no time/desire to continue it), and the Prism realistic glass addon became unavailable too – the creator removed from Blender Market (it's very sad, I've seen it several months ago and wanted to try when I'll become more skilled with Blender – i.e, now). $\endgroup$ – AivanF. Nov 14 '18 at 9:45
4
$\begingroup$

Is it has to be done in Cycles? If not, check Yafaray as an option for this kind of effects.

The trick in the scene below is the reflecting material which is 50/50 mix of Water and Mirror (shiny diffuse with 0% diffuse and 100% mirror reflection). You can adjust the proportion as per required brightness of the effect.. or should I say "realism"? :-)

It is also quite important to have fairly large caustical photon radius (1 or higher) and quite small number of mixes (50 or less) to produce sharp lines.

Also equally important to create not too sharp and not too soft edges on reflective surface, so carefully watch the number of subdivisions on the surface -- too many of them will blur the result. Yarafay Caustics

$\endgroup$
0
$\begingroup$

To do caustics, I stepped to Luxcorerender and ended up with Appleseed-Render for Blender 2.8.

I did this with Blender 2.8 + Appleseed Render Add-on in a few minutes (just 200 Samples without denoising):

Appleseed Caustic Demo - Blender 2.8 - 200 Samples

Blenderfile: https://drive.google.com/open?id=1dBlC4ulL06xoMoZKYBtfs4DaEb3G3oqF

Add-on (Appleseed beta for Blender 2.8 on Discord server under: #builds): https://forum.appleseedhq.net/t/how-to-download-latest-build/808

The Appleseed-Render is already included in the Add-on

$\endgroup$
  • 2
    $\begingroup$ While it's correct that LuxCore is able to achieve correct caustics (which was mentioned in comments to the very question 4 years ago) you could include more information about how you did that, at least a screenshot of the scene layout with lights and render settings. This site is not a forum for posting pictures of results $\endgroup$ – Mr Zak Aug 19 at 18:46
  • 1
    $\begingroup$ OP was using Appleseed for that image (as mentioned), most likely with the help of the following (IMO pretty bad) tutorial: youtube.com/watch?v=G-uV4NPlggo @MrZak $\endgroup$ – brockmann Aug 20 at 8:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.