Reveal object gradually in animation

Help please,

Is there an easy way to revel an object? I have curved arrow that bends over an object and would like to reveal the arrow over time as if it were flowing over that object. Relatively simple effect but I fear the answer is complicated or a simple no.

Current thought is to use a containing object to hide the arrow and then move that object off of the arrow with a simple IPO. The containing object (probably a simple cube) would have to hide the arrow but not be rendered itself. Would this work?


I would think that would just reveal the arrow again!
It seems to me you need to use the depth render pass in the compositor. Use a material that makes your cube invisible, like alpha = zero, not un-render, or it won’t generate a depth value.
Might have to do something tricky with the math. Essentially trick the renderer to display from behind the arrow for the region of interest only. (Like a Romulan invisibility shield!)

Another approach might be to cast an alpha mask on your arrow, then animate that texture to move correctly. Use could use something like a camera-view-projection to ease your texture mapping task.

Third approach is a variation of the first one. Do TWO render passes, one with the occluding object, one without. Then use the compositor with the depth passes to mask those parts of the arrow that would normally hide behind the object. This should give you the most natural occlusion mask, as compared to say the alpha technique above. Your occluding object could be of any kind of complexity with this method!

The second approach is the simplest, might be your best bet for starters.

good luck

Thanks for the ideas. I’m a self taught Blender-type-person so will try the second for starters which as you say sounds the easier approach. Will report back.

Shrinkwrap can be used, in a limited manner to reveal a mesh over time.


shrinkwrap_text_reveal.blend (138 KB)

1 Like

Atom thats brilliant! thanks for this tip. How did you set the blendfile to animate when opened?

Way trick! Very out of the box. Mess with the mesh instead of the image.
I only see one issue. The missing text is not gone but smashed into a cross-section at the interface. That means a possibly undesired render artifact at the moving interface. How to remove, hmmm…

Thanks for this though. I can see how the ‘shrinkwrap’ name can limit how useful this tool can be.

@3Dementia: Just save the file while the animation is playing.

@shadowphile: It is limited because of the projection of vertices that is happening on the plane. But for a quick reveal and a slight blur, it can be used. You could also time the alpha of the material on the mesh with the plane motion. Set the alpha to 0.0 then as the plane starts to reveal the mesh, animate the alpha back up to 1.0.

I really wish the developers would add a feature to the projection mode. Like “Don’t Render Face on Projection Surface”. It would seem like such a small fix for a big bang!

Bumping this because it’s kind of similar to what I’m trying to do.

Here’s the effect done in After Effects using just some noise and a mask, but I’d like to do it more accurately in Blender if possible.

I’ve been trying the shrinkwrap trick described above, but I have the problem with a messy mesh being visible on the plane that’s doing the reveal.

Any ideas on how to do this cleaner?

I was looking at my Z-depth pass too, but the whole thing is just a grey plain. How do I configure my z-depth to be more precise?

Also, how would I add some noise to the edges as they get revealed? Do the Animation Nodes contain some kind of witchcraft that can do this?


I’d recommend doing it in materials instead. Here’s an example that can be relatively easily grouped, shoved into any material you want, even strung along in series to use as many controls as you want:

It finds the distance from an empty, and if it’s less than 1, it mixes in transparency. Since you’re just grabbing object texture coords from the empty, you can scale the empty, even non-uniformly, to change the size of the “hole”.

Doing this in the material instead of on the mesh is better, in part, because material effects are per-pixel rather than per-vertex, so everything’s smoother.

Making this fuzzy should be pretty intuitive. Rather than mixing in on a straight less-than node, you remap the length to some other value to use as a mix. For example, you could use a clamped 0-1 as the mix for smooth interpolation all the way to the center; you could remap lengths of 1-2 to the 0-1 range to use as a mix (just subtract 1 from the length), etc. You could also modulate the length by a noise texture for some randomness.

1 Like

Thanks for the fantastic response. This is super, even though I’ve no idea as to how to do the last paragragh, it’s enough to get me started for now.

I can’t thank you enough.

The math stuff is mostly beyond me but I figured out this way of doing it. It might not be very efficient, but it does the job to break up the edges for me. It’ll all probably be lost in the final result anyway, but we shall see.