5
$\begingroup$

I'm thinking of using blender to create a 3D animation where one piece starts off small, grows over time and as it grows the new parts are of a progressively different shade. See images enclosed.

I'm new and can't see how to do this after watching lots of YouTube intro videos.

Thanks for any help.

example

$\endgroup$
11
$\begingroup$

Well, you didn't tell which render engine you need, but I have a "tricky" solution which I here explain using Bender Render, but it's obviously doable even with Cycles Render. But, I used a trick, and I don't know if you can use it, too.

here's the result (colors have banding just for the gif format...):

enter image description here

how I did it?

First I created a plane, scaled it and then subdivided it a lot, and assigned it a shadeless material made by a blend texture with a color ramp, note the settings below:

enter image description here

then,I created a half circle bezier with its origin in the same place as the previous plane

enter image description here

then I've set a curve modifier for the plane, to the bezier (note the X scale, later on this)

enter image description here

then, X scaled it until it covered the bezier, and set frame 1

enter image description here

then, duplicated it to plane.001, scaled it a bit on its Y (to widen its curve, so to cover the underlying rainbow curve), and then I keyframed the same X scale at frame 1

enter image description here

then, I set a dark shadeless material which is the same as the world background, and set a key frame for X scale = 0 on last frame (50 in my example), so that during the animation it "uncovers" the below rainbow arc...

enter image description here

here is last frame

enter image description here

so, when you start the animation you see this progressing

enter image description here

enter image description here

enter image description here

and the result of the animation is what you see in the first animated gif...

here is my test file

Of course your need could be slightly different, but you could use this as a starting point...

edit: some time ago I answered another (somewhat related) question,and there I did both a Blender Render and Cycles Render colorramp... see How to make / generate the trailing effect?

$\endgroup$
7
$\begingroup$

Using a trick too...

enter image description here

It uses a curve and a bevel on it.

The curve can be beveled from "start" "end". So we animate/keyframe the end from 0 to 1.

enter image description here

The curve needs to have a lot of vertices, because the 'end' value is not linear: it is vertex per vertex.

Its texture space needs to be set to "Use UV for mapping".

Now we do the same to drive the color ramp: we animate a value (upper left below) from 0 to 1 and multiply it by the 'X' (=U) value of the UV input. So, the color will be progressively extent to all the rainbow.

Here is the node setting (Cycles):

enter image description here

$\endgroup$
  • $\begingroup$ nice. but there's a strange colorramp "movement" at the end... what could it be..? $\endgroup$ – m.ardito Mar 16 '17 at 18:29
  • $\begingroup$ @m.ardito, yes... the more vertices in the curve the less it is visible. When animating the 'end' value for the curve, I noticed it is going step by step. So there is some rounding in the UV map... not perfect!! I added this solution because it is simple, but yours is great! $\endgroup$ – lemon Mar 16 '17 at 18:32
  • 1
    $\begingroup$ oh, I see... of course it is not happening in mine, the ramp animation is totally fake :D :D $\endgroup$ – m.ardito Mar 16 '17 at 18:43
  • $\begingroup$ @Ezra uses a MixShader with an keyframed GreaterThan to switch between the color ramp and a transparent shader in this answer. I think this could also be used with the U coordinate of a curve to get rid of the vertex requirement / color ramp movement. $\endgroup$ – binweg Mar 16 '17 at 22:07
  • $\begingroup$ @binweg, I have tried but was not a success here... $\endgroup$ – lemon Mar 17 '17 at 6:11
6
$\begingroup$

A more elegant solution is to use the node editor.

First, add a plane, and make sure that the origin of the plane is on one of its sides.

enter image description here

(i'm using cycles, the same can just as easilly be achieved with the internal renderer) Go to the node editor and add a new material.

enter image description here

The main part of the material is a gradiant texture, set to radial. Add a texture coordinate node, and feed the object coordinates into the gradient texture node. You may need to add a vector mapping node inbetween to rotate the gradient texture so the 'seam' is on one of the edges of the plane and not in the middle. Divide the output of the gradient node by two, because we want half a circle instead of a whole circle, and use it as an input for a colorramp node. Change the colorramp to the colors you want, and feed it into an emission shader. Now we need to change the shape from a rectangle to half a circle. This means that we only want to keep everything that is within a certain range from the center. We can find the distance to the center by using the theorem of pythagoras. The exact setup can be seen in the picture above. Use the output of the math nodes as input of a colorramp, set the interpolation to constant, and make sure that both ends of the colorramp are white while the middle is black. Use the output as the factor of a mix shader that mixes the emission shader with a transparent shader. Next, we need to add a way to animate the material. This can be done by adding an math node set to greater than and connecting the gradient texture to that math node. Use a math node set to add to add the output to the output of the colorramp used for the mix shader. Animate the bottom value of the greater than node to be 0 on the first frame and 1 on the last frame.

This is the result:

enter image description here

$\endgroup$
  • $\begingroup$ Thanks. I like that this creates the object without using a trick or mask. I also like the quality of the result you included. I'm completely new to blender, so I don't actually understand what to do yet, but at least I have which terms to look up in the manual and see how they work. $\endgroup$ – Warren Mar 18 '17 at 6:11
0
$\begingroup$

The other (quite sophisticated) answers are hard acts to follow, but I do this sort of thing using a similar idea as @m.ardito, albeit a little simpler, using again mesh and animation. This will only render properly with Blender's "OpenGL" render. (top left of window, "Render" drop down menu)

In the gif at left the mask (at right) is selective and therefore does not affect background images/videos or 3D objects, only the arc itself.

In photoshop, Gimp etc, create (or dowload) an image with the entire frame painted with a rainbow colour range from left to right and preferably fantailed. i.e. Colour segments radiating out from the bottom center.

Make a mesh object in the shape of an arc. Give at least two faces, or more if you wish to have a face for each colour segment.

Texture it with your rainbow image or colour each segment.

That's the arc done.

For the 'growing' animation a rectangular 'Inviso mask' initially conceals the entire arc. This is rotated anti-clockwise so it's lower edge progressively reveals the arc from it's right hand end through to the other.

-=====-

Run the animation and you should see similar to the gifs above. Make sure EVERYTHING is deselected! (Press A)

An adjustment keyframe or shapekey can be used to keep the mask's leading/revealing edge perpendicular to the arc's width during it's rotation.

-=====-

Details on how to make a 2D plane an 'Inviso mask' are here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.