Animate Visibility for Numerous Objects

I’ve been doing a cell fracture scene in which I animate my handle shattering, letter by letter. It’s going great, but now I have to put an unshattered letter in place of the shards until the bullet hits that particular letter. That’s 17 letters, and over 2,000 shards that have to be swapped for a letter on 17 different occasions. So my plan was to have all the shards on an unrendered layer, and once they’re needed move them into the rendered layer and move the intact letter out.

Except, Blender has disabled the ability to animate anything to do with Layers. So now I’m stuck with all these shards and no way to hide them. Do any of you fine ladies/gentlemen have any suggestions on how I can keyframe 2,000+ objects? Any pointers would be appreciated, even leads I can chase down. I’m not about to throw away this project, but I’m not going to hover my mouse over each shard’s ‘toggle visibility’ button and hit “I”.

Thank you! --Cuthbert

Huh, that’s odd, I wonder why they removed the ability to keyframe object layers…

One way you could do it is to make the solid letters just a little bit bigger in size than the shattered letters and/or play with their location a bit so they cover up the shattered letters. Then you would only need to hide/disable rendering of 17 objects, one at a time, as the bullet hits the letter.

The idea being that if the solid letters are the same size as the shattered letters are, when you render, you’ll get z-buffer fighting (bad render artifacts). If the solid letters are just slightly bigger than the shards, you’ll avoid that and get a good render. Then on the keyframe when the bullet hits, have the solid letter renderable, then disable the rendering on the next frame as the shards start to move. This may give you 1-2 frames where the letter appears smaller, because the bigger solid letter is gone, but at 24 fps, no one would notice.

You can’t simply scale the letters to increase their size, you’ll have to modify the mesh. Example: scale the letter ‘O’ in size and both the inside and outside of the O would increase in size. To cover the shards, the outside of the O needs to scale up in size to cover the shards, while the inside of the letter would have to scale down in size. Make sense?

To do it without resizing the letters, you’d need some python scripting skills.

Randy