FillMyShelf - Generate books to fill your bookshelf

4 votes
Date Updated: 

Image and video hosting by TinyPic
Version 2.0
Some tweaking making the script more efficient
Look at additional info for updates and changes

Comments and Suggestions are still welcome...

Version 1.0
My very first script that I contribute to this wonderful site :)

I came to this idea when modelling a library. There was no way I could model all the books one by one and place them so they looked nice but natural.
That's exactly what the script does, it creates books to fill up your bookshelf.

I'm only a beginner in maxscript, so don't be surprised if there are some flaws in my script. The file is encrypted because I'm not very comfortable with all you guys seeing my beginner programming skills :p

If it turns out people like it, and there is need to post the unencrypted file, I might upload it.

Experiment with it, give me some feedback(!) and start Filling your bookshelves!


Additional Info: 

Version 2.0


-- No more issues with names. You can use any object name without it interfering
with the book generation

-- Improved indicator of progress

-- Some code tweaking

NOTE : If the scrip seems to 'hang', this is because of the number of books
(geometry) being created. Be patient and the script will finish :)

Version 1.0
Some points to consider when using the script :

-- The script only generates books, no shelfs!

-- It's best not to have any objects named "Book..." or "Shelf..." since the
script is attaching the created books into one object

-- All books are created at origin (0,0,0)

-- Be patient when the script is generating books, there is a progress-bar
estimating the progress

books.jpg286.94 KB
fillmyshelf_by_pj_2.0.mse32.31 KB


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
pieterjanvc's picture


HI Scanapieco,

First of all, thanks for the nice comments!

The reason I created this script in the first place is that at the time I wrote it, no similar concepts were available. I have searched the internet for a long time to see if anyone had scripted something like this but found nothing.

I can see now that in the meantime some guys have taken this concept up to a higher level. They allow you to use your own geometry and scale this according to the size of the bookshelf.

Check this:

So I guess there is no point in me trying to adapt my little concept since someone already did it :)


Scanapieco's picture

Awesome script!

It's a very useful script, thanks man! The only thing that I may adjust, that create the books from a custom object. I think the size randomizing method could be solvable by a simple scale transformation. But I'm not a great scripter, so It's just an idea. :) Thanks again for the script

pieterjanvc's picture


Hi Amar,

The suggestion is good indeed!

I've been thinking of improving the look of the books (boxes) before but I think it would slow the whole process down even more.
My idea is that with material options (like round corners in ambient occlusion) the rounding can be done much quicker without really using more verts.

I'm absolutely no expert in materials (I even suck at it :p) so if I'm wrong with this please say so and I'll take a look how to improve the concept. If you got any other suggestions they are welcome! It's nice to have some feedback.

Thanks again for your interest!


amar's picture

Very useful

Hi pieterjanvc

That is quite an interesting script you have generated. I really think you can consider taking this to the next level. Is there a possibility you could add a bend towards the spline of each book. That way when lighting, it could generate nice highlights on the spline making it even more believable and realistic. If you could do this, your script could be facilitate to a very large sector of people and companies.

Let me know your thoughts, I look forward to hearing from you.

Kind regards

Michele71's picture

It 'a really interesting

It 'a really interesting idea! Well done :)

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.