Houdini Complex Scene: Antique Bookshelf
This project is a great opportunity for me to get hands-on experience with the workflow in Houdini and experiment with its proceduralism and dynamic systems. I decided to create a scene of an antique bookshelf full of books. RBD simulations are used in order to construct the collision between books and the shelf and to randomize the placement of books on the shelf. Lightings are established using mainly the instanced geometry lights and point lights, which are for simulating the candle flame. All aspects were accomplished in Houdini.
- style images obtained from internet -
Scene Setup & Overview
Houdini Version: 18.0.287
Average render time: 1h 10 min
Image resolution: HD 1280 x 720px
Lights: 1 environment light,
13 instanced geometry lights,
13 instanced point lights
Noise level: 0.01
Pixel samples: 5 x 5
Min/max rays: 8 / 16
Diffuse quality: 1.2
SSS quality: 1.2
Reflection quality: 1.2
I started the scene by procedurally modeling the bookshelf. This parameter interface was created to control the shape and layout of the bookshelf and books, including the overall width, height and depth of the bookshelf, the numbers of its horizontal layers, the numbers of its vertical columns, as well as the amount of books on each shelf.
Placing the Books: Rigid Body Dynamics
RBD was used in order to simulate the collision of books and the bookshelf in a physically correct way. By giving forces in different directions, the books not only collide with the bookshelf and actually sit on it, but also lean to each other and have a random titled angle, which adds a more natural and realistic look to the placement.
Here are some important parameters:
Texturing the Books: Randomize Texture
I created 4 different versions of book cover textures and randomly applied them to the books, by using two Attribute Randomize nodes. They allowed me to randomize the size and cover texture of each book based on its point location. I could also determine how many types of textures being used in the scene.
Randomize material node
Randomize size node
Building the Candles
The candle model consists of three parts: the flame, the wax body, and the metal candle hold. In the beginning, I wanted to use pyro for making the flame, but later on decided to use geometry light shader because the flame is not a hero object in my scene, and geometry light is good enough to replicate the effects.
To model the candle hold, I used two different methods. The first one was using L system (following this tutorial here). I manually defined several curve sections and duplicated each section based on the portion I give to it until it got the specific curve shape that I wanted. And the second one is to simply create a line and polywire it, and then use a point wrangle node to control its thickness.
To model the candle holder
Method 1: L-system shape generation
Method 2: Point wrangle for shape and thickness
Lighting the Scene
Lightings are established using mainly the instanced geometry lights and point lights, which are for simulating the candle flame. I also used an environment light to illuminate the overall space.