Stylish procedural countdown with Animation Nodes

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
greetings everyone eme Tedeschi here from blender ask.com and today I am going to show you how to create this fully procedural extremely flexible easy to be able to count down with blender and animation notes and today jumping on hypetrain we are going to use blender 2.8 and animation notes two point one point three so as I said this rig is extremely fast no need to bake anything no need to wait for it to you know calculate each frame it's easily customizable as you can see you can change this name number wake spread digit height wake height and these are only parameters I exposed through animation notes if you want to you can move this whole thing around scale it you know do pretty much anything with it change instance shape you can make it cylinder or cubes or whatever any type of object and it's not even necessary to be a number a digit you can plug in a text here and it works just fine as you can see here and the best part of it is that this rig is extremely simple that's it like 25 notes no sub programs noble Abarat math no no no need to program anything this year would see is all you need to to make it to make it work actually and first as always I'm gonna break down a little bit essential steps you have to perform there's three steps is first step is to generate an actual number geometry which will change every second or you know given period of time then we're going to generate let me show it to you then we're going to generate a grid and deform it with a number of modifiers and finally we're gonna set up a shader I'm going to show you in a second that responds to object position and change its color accordingly okay let's start with new file let's delete everything let's expand our animation knows tree creates a new tree I'm gonna call it main although it'll be the only tree we're gonna use okay so first thing first now to generate a number we need to turn frames in blender into second souks and that's really easy to do we just need a time info node here we need current frame and frame rate that's really simple just dividing our current frame by frame rate which is by default what make it 25 okay divide and that way we have float value right here so twenty-fifth frame gives us one second okay but we need a integer number so we have to at another math operation which is floor so we're getting rid of decimal values and we get an interval number so as you can see now every 25 frames gives us a second counter and now to make it an actual countdown we just need our you know like a starting value which is integer that'll be 10 and we need to simply sorry we need to simply have subtract or current time from our initial time and that way once again as you do as you'd expect we have our countdown now we just convert it control a convert this integer value to text and fit it to a text object which we have to create first now create text okay we can select nice bold and gothic font something like I like this one set alignment to Center increase size a bit like this and we're gonna call it something like countdown font and then text object output set it right here as a now is our output object and for the text read here press this little button here and here we have it actual geometry for our countdown now since we're gonna use a shrink wrap modifier on our grid geometry we need an actual polygon geometry because shrink wrap doesn't support font or curved objects so what we do is we get mesh input from our text object check this and fit it right back to another polygon object hit plus to create an actual object and we're gonna call it countdown mesh so so we so we know this this is a font object and this is mesh object and these are actually giving us visually same result but I'm gonna hide font but this is a mesh geometry now okay so we're gonna hide both of them from render and our countdown mesh we are going to display it as a bounce so we know there's a actual geometry for our digit but we don't need to render it or display it okay so first step of our setup is over see it's really fast and simple okay now to the second part to generating actual grid of hexagons first off we need to create an instance an actual geometry for our hexagons and for this we're going to create a circle with six vertices and voila we have our hexagons filled as an gone and just show it a bit better so like 1.5 doesn't matter and yeah throw some modifiers on it so first of all we need to make it it's a we need to set 80 solidify modifier so it's so it have some height and a battle of my fire to make it look some more organic let me change our shading to madcap yeah that'll do add some divisions here profile 21.6 you know I'm just a matter of taste and shaded smooth right click in blender to buddy it's right click and sheet smooth now we need to we're gonna set up our shader later but for now I'm just going to creates a material which is going to be which I'm gonna call block now we'll leave it as is right now maybe bit okay so this is gonna be this I'm gonna call this hexagon hexagon okay and yeah this object is now we don't need to see it now creates you know any object you want let it be playing go to edit modes and with all the vertices selected hits alt or right-click in verges mode right click merge vertices at center so we need a singular vertex here and we our actual grid object and our great object will be just an array of vertices and then we're gonna assign a DubLi object which is now called instance for each vertex you'll see it eliminate okay just stick with me go to object mode now modifiers and add we need three array modifiers oh yeah totally forgot we get a parent our hexagon tour this plane and now we're going to enable instancing which is in but a 2.79 be just wanna remind you called DubLi objects or some our duplication so we set it to verts and for each vertex now we have only one vertex for each vertex it's gonna create an instance of its child okay so in our case this is our hexagon and render instance here this matter actually and now we're gonna start to drop in some modifiers on it so we're going to uncheck relative offset since our object has no actual thickness and we're going to enable constant offset so first array modifier will offset our hexagon to actually form a minimal cluster we don't need we don't need a super precision here so we're gonna do it by eye like this okay now I prefer to name my modifiers to four just for the sake of convenience okay I'm gonna call it X like on cluster now next modifier once again constant offset and we're gonna shift it by X value and now increasing number of instances or count parameter you can already see we have our grid okay let's make it 40 so this is going to be our X array and the last one modifier for our for our Y value like this you know just a munch and yeah here we have our grid yeah that'll do okay so if we put a displace modifier here for example and set it to Z and assign some texture such as let's say clouds we can see okay that one size to something like six Victor Street we can see that by offsetting vertices of our grid we actually offsetting our instances while the shape of our instance remain intact okay so that's exactly what we want okay next step I'm gonna I'm gonna delete this this place for now next step we're gonna shrink wrap our vertices to count down mesh object so shrink wrap targets count down mesh and you can see all the vertices are now shrink to geometry of our countdown that but we need to project them so we switch our shrink wrap to project mode we set our offset for now for like 1 to see to see what it does better and switch access to Z you know we need to move our countdown mesh just a bit we need to scale it first and we need to move it slightly below our actual vertices of our grid mesh so if we look at it this perspective you can see vs. slightly above geometry of our countdown - okay and switch back to solid view and you can see it's already interactive you know you can play around with it until you get the proper results so yeah started to shape it up and yeah now we need to animate actual you know rising of these vertices so we get our nice animation each second so for this we're going to directly affect offset parameter of our shrink wrap modifier via animation notes for this we need to have a repeated value some repeated value each second okay so to get this we're simply going to refer to our set up right here and and we are simply going to subtract this rounded second rounded value of our second from this float value and what it does you see in the minutes so we're gonna subtract you were so by stripping down integer value from float value each second maybe it's better to visualize it in 3d so we're gonna create back door combined Z fitted right here and make it green so Oh super small so as you can see we got this alright and if we feed this value right into attribute outputs our grid object oh let's play what's called grid grid object if we fit it right here so we copy data path from our offset parameter here and paste it right here and feed it right here and you can see every second it rises up up to one and then switch back to zero and it's not very smooth isn't it okay so we need to interpolate this value so it would reach it peak to 1/2 of a given second and then it slowly go back to zero to the end of the second ok so we are going to use a map range don't this is one of the most useful no so we fit this value here don't change anything here just hit interpolate and we're going to built interpolation from curve and this is why near interpolation so value won't change anyhow and we're just going to draw this kind of ramp actually gonna mind if I die Hansen make vector on a handle or handle yeah doctor handle here and vector handle here so it's more smooth like okay and feed it right here and this way once again if we gonna use our vector to simply visualize the effect of this node green yep so now we have exactly what we want our sine like motion now we can fit this into offset yep it works the only problem is is that it's too low like one blunder unit it's not enough to actually give our nice offset so we simply simply use this value as a multiplication factor for our height value so number float this is going to be our actual offset height which we are going to multiply by our effect or so gonna feed it right here and now we can easily modify this value to get our desired offset height it can be even negative as you can see so something like this okay now we need to set some you know random movements for our grid as you've seen in example okay let's hide all these and just to make it a little more clear to make some frame notes damn so we gonna call this text generator this is gonna be our offset you know of something meaningful and now this value here we can call it digits offset and show it in the viewport all the notes that I used to actually you know control my rig I prefer to give them some bright colors so I can visually distinguish them okay so this one blue and call it something like counts down start viewport and here in the right panel you can see them already and you can manipulate them without actually without actually without actually expanding a node editor here okay okay now back to making this a little more organic let's and let's add a displace modifier here which we're gonna and and set a new texture here let it let's call it clouds and clouds texture depth to make it a made it we're gonna use a control object in our modifier settings object we're gonna create a new object called exes empty and we're gonna call it something like clouds displace control oh I totally forgot to create an actual rig countdown rig and to parent everything to it okay so we can you know so we can now manipulate whole rig easily okay so our MT is down down cloud displace control okay now back to our grid object clout this place sorry cloud displace and now to make it yeah z yeah to make it animate it we just need to set some drivers for our cloud displace control so we go back to transform and we simply add a new driver to to it so right in frame times something like this enter enter and now we need to set the subject as a control object for our cloud displace so now as you can see we have a heavy pretty chaotic movements here first of all we need to scale our control object a bit so we can actually see cloud texture here now let me switch it to something yeah like this now you can see this movement is starting to shape up and maybe I'm gonna copy this driver to X value as well so we've got this smooth wave-like motion now to generate these nice wakes every second we're gonna use same approach as with the cloud displace adding another displace modifier and using another texture and another control object so first off we're gonna move it up above shrinkwrap modifier so you want offset already offset it by a digital instances so then we add another texture go to texture settings and call it weight blend and it's like bland texture switch it to quadratic sphere I'm gonna use caller ramp I'm gonna put up something like something like this and switch it to ease mode and now hmm let me off early you creates another control object another empty plane axis parented to our countdown mesh so it'll be tied up to a actual digit position it's not necessary but I find it more convenient when you move a digits wake moves as well so let's call it when ache displace control switch back to our grid and modifiers objects weak displace control and let's increase strength a bit for now just see the difference now let's start to scale oh yeah we sweet we need to switch their direction to Z and by scaling the object we can see our texture affecting our geometry and as we move digits you can see it works fine the only thing is that for some reason oh yeah I forgot to set mid level to zero yeah that works perfectly fine so and you can see that by you know scaling this control object we have this nice little wake effect so we'll need to animate it's procedurally the animation notes so let's hide it when I need it anymore and set of straights and we're gonna use same old value got here with math node our 0 to 1 range to loop it through to loop it with every second so first off we need to animate scale of our rate displacement control so we're gonna find we're gonna fight our kind of a final position for our wake final width of our wake look at our scale that'll be 60 by each axis okay and number float and 16 this is gonna be our weak spread now let's show it and show it in viewport and now sorry at another another math node we're simply going to multiply our week spread value by by zero one range every second and then we can output it to scale value of our week displacement week displays control object so object transform output scale we can turn this float into vector vector from value week displays control and scale and so now you can see works fine but you know in order to you can see this see it still kind of disappears at the end of each second and we actually wanted to fade it gradually by the end of each second so we're gonna animate our displays strength parameter in in the same manner actually we're gonna use once again another float value have some space here okay just gonna be something like you know one point three once again we going to multiply it by the same value here and object actually let's just duplicate this note and alt p copy data path paste it right here displace strength and even here oh yeah we need to reverse actually reverse this value so it goes from one to zero so we're gonna use our nap range node and plug this value here and put minimum zero to one and we just simply reverse the spell use for minimum one to maximum zero and if you wanted we can interpolate this value with given interpolation you know two E's values leave it as it is and plug it in here so ya know can you know just a wake spread works fine now I can play around for these values until you get a desired result does that look as you can see now it's fully dynamic you can you know move this whole thing around and now to the final part to shader okay now we go back to our hexagon instance displayed we go to our shader editor and this one's really really simple it takes a couple of minutes let's switch to our development look mode and we're simply going to use our objects z-axis position to determine mix factor for caller object info location converter separates X Y Z like this I'm going to see and we're gonna use our Z value here for mix effect or and mix no so Z Oh color factor and you know like blue as an example and fit it right back to base color and voila right probably switch it you know you can play around with it you can control influence of objects positioned by by doing simple math operations with this Z value so for example if you want to maybe offset it or squeeze it by multiplying a bit make it more you know contrast all sort of things actually or you know reverse I'm happy with this one actually and now it's just only a matter of setting up your render so let's go to render mode and know that development look use scene lights HDR that's Sun lights with nice shadows ambient occlusion like three screen space reflections if you want you can do pretty much you can customize this rig pretty much the way you like expose in different parameters like number of copies for our a modifiers and yeah that's it I hope you'll find it useful in your personal projects I really want to hear from you guys if you want to see more tutorials on you know like basic concepts of visual scripting or maybe you want to see more complex tutorials to finish results like a finished motion graphic job from A to Z from blank scene to final render leave some feedback just let me know what you want to see like subscribe and visit my website blender Escom and yeah thanks for watching until next time
Info
Channel: Blenderust
Views: 26,598
Rating: undefined out of 5
Keywords: Blender, Animation Nodes, Motion Graphics, Procedural, Countdown, Eevee
Id: WBOuigtl6s4
Channel Id: undefined
Length: 32min 50sec (1970 seconds)
Published: Fri Feb 01 2019
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.