top of page

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.

Final Renders

- style images obtained from internet -

Scene Setup & Overview

Rendering Statistics


Houdini Version: 18.0.287

Renderer: Mantra

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

Procedural Modeling

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.


Diffuse maps


Normal maps


Displacement maps


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.

bottom of page