View Full Version : creating a turning page in a book
07 July 2002, 04:17 AM
i've got a project where I need to create an animation
of pages turning in a book. I am at the early planning stages
and need some advice on geometry and animation
This is actually for an exhibit kiosk for a 500-year-old
illustrated text, for a reputable museum. The kiosk will
allow people to virtually flip through the 1200 pages.
(The book will be viewed from above so that just
the 2 pages are visible, to simplify the entire process
(eg. having to calculate page thickness, book
My plan is to create 10-15 different page-turn
animations, then script the bitmap (scanned pages)
placement and subsequent renders, to create
in effect, one long movie.
I'd prefer using max4, as that's what I know best.
My questions are:
1) What type of geometry would be best? I'll
need to place images on both sides of the paper
without any funky seams.
2) Morph targets have been suggested but...
3) is there anyway to constrain the page dimensions
so that when I animate the page, I don't have to eyeball
or fudge things too bad.
I'm shooting for a smooth, photorealistic animation.
Has anyone here done anything similar to this?
Any and all suggestions are very welcome.
07 July 2002, 06:50 PM
Here's a simple tutorial:
07 July 2002, 03:07 AM
I recently finished some work for a client involving a similar situation; turning pages on a large old book viewed from above.
In my case, the book was supposed to be a collection of many stories but had to open to somewhere in the middle to the first pages of a specific story.
Instead of trying to cram together hundreds of geometric pages to turn in a bunch, I simply used two rectangular objects with the demension of a stack of pages and linked them to the bones which opened the binding. For the turnable page(s) (four in my case) which had to be actual page-like geometry, I simply made a copy of the facing section of one of the blocks of pages after I had finished animated them opening [hilited red faces below].
I used a morph-angle deformer on each of the blocks to cause them to curl up as the book is opened. After I copied the facing surface of the right block of pages in its opened position, I linked the turnable page to the parent bone used to move the rest of the book so it would travel wherever I took the rest of the book (binding and two page blocks). I then added a visability track to the turnable page to hide it until the book was in the open position (this way I didn't have to animate it resting against the right block of pages as they would open; it would simply appear when needed and since it matched the contour of the right block of pages, it worked out perfectly).
After animating the one turning page, I duplicated it for each page I needed to turn, offset the keys so they'd wait their turn to turn, and changed each turnable page's visibility track to cause the next page to turn to appear only after the page before it had started moving. This way, I could have as many turnable pages as I wanted and wouldn't have to move each subsiquent page slightly to prevent them from overlapping (less animation work).
This worked beautifully. Here are some pics and a pic of my bone set up.
07 July 2002, 05:57 AM
Answers to your specific questions
1.) use whatever geometry type you like! You can map opposite sides of any type of geometry differently through the double-sided material.
2.) Morph targets... You could use morph angle deformers to cause the pages to change shape when animated based on their angle so they come to rest exactly against the opposite stack of pages and curve/bend naturally as they go through the turning motion.
3.) I don't understand the third question. The page dimensions should only change when animated if you choose to animate them in a way that does so. You could a bones rig to animate the turning pages but I think that the motion of a turning page is simple enough that doing so would be overkill. A simpler way would be to start by rotating the page along the axis that follows the binding to animate it turning.
The biggest challenge I see is making the pages accumulate as they are turned (does the user have control over the advancing of each page?). Are you actually planning on creating 1200 animations to accomidate the turning of each of the pages? If so, I think a simpler route might be to create one animation of a single blank page turning and use a presentation-generation program like director to load an image of each of the pages and display it 'above' the single animation after it stops. This way you only have to store a single animation file and just an image of each pages contents. This will also ensure that each of 1200 pages is clearly legible since you won't have to worry about it laying flat enough for the user to read the pages; it will be loaded at a perfect viewing angle. This was a huge problem with having the contents of each page baked into my animation - the images HAD to be legible in my case but after putting smallish text/images through the filtering/mapping of MAX and viewing them at a slight tilt it wasn't as legible as I'd hoped.
I only had four turning pages so it made sence to create a separate animation for each page. If you don't like my suggestion, I recommend coming up with some trick to
balance managability with the credibility of the book as a real 'virtual' item.
I am really interested in seeing what you come up with! :bounce:
07 July 2002, 08:11 AM
i've decided to tackle bones. they give me the
control I'm looking for. After a day of playing with
patches, bones, and HI-IK, i've got a pleasing prototype
working. I'm really striving to capture the detail and
feeling of the paper, going beyond a "typical"
rotating plane with a little curve.
Johnny_Scott, I really appreciate your input and
advice. I don't really have to worry about the pages
accumulating, as it will be viewed from above. The
user should be able to touch the edge of the paper
to turn to the next page (animated fwd/bkwd), or use
a minimal interface to jump to a particular page (non-
I need to render out all 1200 pages, and feel confident
(famous last words:surprised ) that I can tackle a maxscript
to atuomate assigning bitmaps and rendering out
each page turning.
as for q#3, I got what I wanted (the paper not to
stretch / maintain constant dimensions) by going into
the properties of each bone, and making it a fixed length
("freeze - length" and "stretch : none"). Trying to do
this with a plain mesh was like trying to toss pizza
dough made of warm silly putty... Add morph targets
and animation, and you get headaches.
my main task now is tweaking the skinning/enveloping,
but I may not have to worry about that so much...
I'll post back in a day or two when I have something worthy.
07 July 2002, 05:47 AM
I've set up a project page here:
I'm still having trouble with the envelopes,
and the skin not being tight enough with
the bones. This causes too much stretching,
where I need the physical dimensions of the
paper to be constant. It subsequently stretches
the bitmaps placed on them...
01 January 2006, 10:00 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.