Website powered by

Procedural Library in Houdini

This library environment was created using 2,793 procedurally generated books. I developed a procedural book-generation tool in Houdini to randomize the dimensions, detail, and wear of each book, using VEX to enable horizontal stacking as additional books were generated. I also created nine unique spine texture variations that were randomly assigned and overlaid onto each book, allowing their independently randomized colors to remain visible so that no two books were alike.

This project breakdown includes final renders, Houdini node graphs, documentation, screen recordings demonstrating the tool, material graphs, and external prop modeling and texturing completed in Autodesk Maya and Substance Painter.

Cinematic renders of the library environment

Documentation that I wrote for this project, explaining how the randomization in the procedural book tool works

Documentation that I wrote for this project, explaining how the randomization in the procedural book tool works

Documentation explaining how the stacking, controlled randomized color, and randomized spine texture assignment works

Documentation explaining how the stacking, controlled randomized color, and randomized spine texture assignment works

This is my final node graph. It contains four versions of my procedural book tool for four different randomized outputs: X-facing taller books, X-facing shorter books, Z-facing taller books, and Z-facing shorter books.

This is my final node graph. It contains four versions of my procedural book tool for four different randomized outputs: X-facing taller books, X-facing shorter books, Z-facing taller books, and Z-facing shorter books.

This is my final node graph in Solaris. It includes the import of the library structure and books, all of the scene lighting, the material network, the still cameras, and the moving cameras. All elements were merged, then I rendered the scene using Karma.

This is my final node graph in Solaris. It includes the import of the library structure and books, all of the scene lighting, the material network, the still cameras, and the moving cameras. All elements were merged, then I rendered the scene using Karma.

This is my final spine mtlx shader. I imported nine texture variants, separated their RGB and alpha channels, and used the alpha data as masks. Two central switch nodes randomly select a matching spine texture and mask, then overlay it over the base color

This is my final spine mtlx shader. I imported nine texture variants, separated their RGB and alpha channels, and used the alpha data as masks. Two central switch nodes randomly select a matching spine texture and mask, then overlay it over the base color

Library structure and props modeled and UV unwrapped in Autodesk Maya

Library structure and props modeled and UV unwrapped in Autodesk Maya

Final textures of library structure and props in Substance Painter, showing the combined material, base color, and roughness

Final textures of library structure and props in Substance Painter, showing the combined material, base color, and roughness

I decided to texture this entire scene with only four texture sheets, using tiling for efficiency. There's one for the floors, one for the plaster, one for the props, and a varnished wood texture applied to everything else in the scene

I decided to texture this entire scene with only four texture sheets, using tiling for efficiency. There's one for the floors, one for the plaster, one for the props, and a varnished wood texture applied to everything else in the scene

Original Library Concept

Original Library Concept