The scene above contains balloons that are flying past a window and filling the room with color. This tutorial will show you how to create this caustic balloon effect using a Gobo light filter connected to a spot_light pointing through the window. We will also cover the shading steps used for the balloons. Thanks to Slava Sych for this tutorial.
Create a camera and point it towards the window as per the image above. Create a skydome_light and connect a physical_sky to its color attribute.
The settings for the Skydome light used in this example are as follows:
- exposure: 2.
- samples: 3.
- shadow_color (HSV): 4.213, 0.785, 0.053.
- camera_visibility: 0.
- transmission_visibility: 0.
The settings for the physical_sky used in this example are as follows:
- turbidity: 8.916.
- elevation: 90.
- azimuth: 247.229.
- intensity: 2.
- sky_tint_color (HSV): 353.299, 0.588, 1.000.
- sun_tint: 44.261, 0.177, 1.000.
Skydome lighting. The window glass is hidden and shadows are disabled for the balloons.
- Create a spot_light and place it behind the balloons. Rotate it so that it is pointing through the window.
The settings for the spot_light used in this example are as follows:
- cone_angle: 144.213.
- exposure: 19.
- samples: 3.
- radius: 44 (for softer shadows).
- shadow_color (HSV): 13.230, 0.785, 0.019.
- specular_visibility (Contribution): 0.1.
- SSS_visibility (Contribution): 0.1.
Connect a gobo filter to the spot_light.
- Set the filter_mode to Mix.
- Increase the density to 0.65.
- Connect a noise shader to the slide_map of the gobo.
The settings for the Noise shader used in this example are as follows:
- octaves: 4.
- distortion: 1.687.
- lacunarity: 2.831.
- scale XYZ: 33 (this value may need to change depending on the size of your scene).
- coord_space: UV.
- mode: vector (for RGB color noise).
To further adjust the effect you could try inserting a color_correct shader before the noise shader. In this case, the saturation was adjusted to 1.6.
Final results for the spot_light
Assign a standard_surface to the balloon objects and rename it to BalloonMat.
The settings for the Balloon material used in this example are as follows:
- specular_roughness: 0.36.
- subsurface_weight: 0.5.
- subsurface_scale: 10.
- subsurface_type: randomwalk2.
Create a layerRGBA shader and connect it to the base_color, subsurface_color and subsurface_radius of the BalloonMat.
- Create and connect a utility shader to input1 of the layerRGBA.
- Create and connect a colorJitter shader to input2 of the layerRGBA. The color_jitter will be used to further adjust the variation and color of the balloons.
- In layer2 of the layerRGBA, change the operation to multiply and the mix to 0.645.
The settings for the color_jitter shader used in this example are as follows:
- Change the type to Object.
- gain_max: 4.
- saturation_min: 0.38.
- saturation_max: 1.076.
- seed: 2313.
The settings for the Utility shader used in this example are as follows:
- Shade Mode: Flat.
- Color Mode: Object. This will use give us random colors for each of the balloons.