I found a way to do this with a simple rig (see attached blend file).
There are two armatures, one for the book, the other for the popup.
The book armature (yellow bones) above controls opening/closing the book:
- Each page (L and R) has two bones; the innermost bone controls opening/closing via simple rotation. The outermost ones are there only for targeting the IK constraints in the popup armature.
- The tails of the inner bones (Page_L and Page_R) are positioned so they are attachment points of the popup.
- A rotation constraint on Page_L and Page_R makes the book open on axis for the book binding.
- Rotate Page_L to open/close the book.
- It only needs forward kinetics for opening/closing -- no IK constraints.
This image shows the Popup armature (orange bones):
- The Popup_Center bone is the root bone; its head is where the popup middle is attached to the book and its head is where the popup apex is attached.
- The Popup_L and Popup_R bones extend to the book attachment points.
- IK constraints keep the popup attached to the book pages:
- Popup_L IK constraint targets Page.001_L of the Book armature
- Popup_R IK constraint targets Page.001_R
By rotating Page_L to close the book, Popup_L is pushed, due to the IK constraint.
Popup_L pushes on Popup_Center, forcing it to rotate towards the book.
Popup_R also pushes on Popup_Center due to its IK constraint.
Some additional notes:
- I probably could have gotten away with using only a single armature. With two armatures, I could modularize multiple popups.
- A control bone for managing the rotation of Page_L would have been nice, but I don't know how to do that.
- I probably could have been more flexible with the bone placements, using offsets, but I haven't learned yet how to do that.
- Blender is amazing. What I thought would be difficult or impossible is actually easy, once I learned how IK targets work.
- I would have liked to make an animated gif of how this works in a 3d viewport, but I don't know how do that (advice, anyone?)
Here is an updated blend file: