Cloudscapes rendered for skyboxes, using Houdini VDBs
After playing games like Red Dead 2 I wanted to try making some skyboxes. Matte paintings are beautiful, but taking a 3D approach allows for dynamic skies, a more flexible pipeline, and can be rendered out into images for a cubemap or HDRI. For this project I used metaballs and Houdini’s cloud operators to create the clouds, and vertically aligned gradients for the background. For the skybox, I rendered HDRIs and a 6-axis camera setup to capture images for skybox textures.
Rendered in Houdini with Mantra.
The clouds are created by scattering points to populate with metaballs, creating smooth, connected shapes. These shapes are piped into Houdini’s cloud and cloud noise operators to reshape it, convert it to a volume and break up the form. Next, the density of the clouds is modified with noise and a distance falloff to simulate atmospheric effects.
The HDRI render process is pretty simple, depending on the platform. Many 3D packages with renderers now have built-in VR cameras to allow for VR production. In Houdini for example, you can easily take a 360 degree render with a single eye from the pre-existing VR camera.
Next, you can manually adjust the render and Photoshop has a tool to combine two exposures of the same image to an HDRI.
The skybox process is using a 6-axis camera setup to capture square resolution renders of the environment from the exact center. The scene is a giant cube with a gradient projected along the Y-axis to create the atmosphere. I was pretty confused at first with how to deal with perspective distortion, and why not to use a sphere; but the distortion is eliminated when the end result is a cubic skybox.
A lot of the features of this pipeline could be parameterized into an HDA. However, I have been adding and removing nodes depending on the context, so I’m not sure if it needs to be packaged.
The controls for the cloud system are:
- Sample area
- Point scale
- Infill shapes size
- Noise amount
- Random density
- Density falloff
Populating squashed metaballs to scattered points around a grid:
Converting to cloud volumes: