I have a new personal project! yay! Somewhere along my day, an image of an abandoned library came into my head, and I figured it was worth making.

Problem. Abandoned libraries still have books on the shelves. Populating bookshelves wasn’t something I’d tackled before. In the past, I’ve just done it by hand with a few books and left bare spots and knicknacks on the shelves. That wasn’t going to cut it for this project though. I needed to figure out a better way.

I knew going in the particle system was going to be my best bet. Blender’s hair particles’ “group” render mode is endlessly handy, it allows you to grow instances from a surface, where each instance is a randomly chosen object from a list. (you can do the full group on every particle too if you’d prefer, but that’s not relevant right now).

So I made a simple little book, and added it to a new group:


My first attempt at the particles was to make a system on the bookshelf itself and use a vertex group to lock it to the shelves. This was…less effective than I had hoped. Controlling where the books were emitted was insane. I tired insetting the shelves to keep them off the sides of the shelf, but they were still appearing all across the shelf, rather than in a line.

After about 6 variations on this, I decided to go for a dedicated emitter object. I at first tried a plane, but the books still weren’t separated properly, they overlapped like crazy. My next attempt was vertex emission, with a bunch of edge loops. Better, they’re evenly spaced now. To get the alignment right, I cut it down the middle and deleted edges, leaving me with my final “book emission line”:


I used the random proportional edit function to rough up the line pattern to the book stick out to different degrees.

The particle system works like this: each vertex emits 1 book, I set this by disabling random emission. (if you leave random on, you’ll get some empty verts and some verts with multiple books). Which book it takes is chosen at random from the book group. The books have a slight randomness on their size too, so I can get a greater book variety without 30000 different book models. Wonderfully, it seems you can have a particle system use a different seed for each system that uses those settings, which made varying the pattern of book easy. I also did one other little trick for that, random colors! Cycles’ “object info” node has a “random” output which will give a different value for every scene object. By hooking this to a ramp and sticking that ramp on the color channel, you end up with a shader that is a different randomly chosen color for each instance.

So finally….berks!


No final textures or materials on this yet, just a test. But the shelves are filled fully, completely, and easily.