Glank: Sound Effector in Practice: Glank Letters: Part 02

Photo of Joseph Herman

Instructor Joseph Herman

Share this video
  • Duration: 16:03
  • Views: 1668
  • Made with Release: 17
  • Works with Release: 17 and greater

In this video, we’ll finish the Glank 3D letters.

In this tutorial, we will finish creating the Glank Letters.
For the iron Glank letters, an ambitious Xpresso setup was created to make the neon outline draw on to a bell-like sound in the music as well as to make particles rain down inside the letters with Thinking Particles. We’ll examine both of those setups and the logic that makes them work.

Music and found object instruments by Paul Rudolph.

Less...

Transcript

♪ [music] ♪ - In this video, we're going to talk about how to make that blue neon-like outline draw around the outline of the letters. Let's hide the letters for a moment and you'll notice I've added a few things to this project. There's a sweep object here. The object that's being swept is a circle. It's being swept along these splines which are in a connect object. I'll just drag the connect object out for a moment so you can take a look at it. It's just a bunch of splines which have been connected together to form these letters. Let's drag that back in. And if I click on the sweep object, you can see that they sweep along the whole thing and they create this Glank word in a sort of tube, kind of like neon. Now to make this neon, draw onto the sound of that bell sound, the same sound that we used for the particle geometry, the 70 millimeter tank. We're going to need a pretty detailed Expresso setup. Before we get started creating it, I'd like to give a special thanks to Rick Barrett for helping to develop that code. Before we get started though, you'll notice that there is another thing here that we haven't spoken about. It's a null object that I've named "null for sweep." Let's look down and take a look at it. Here it is. You can see it right here. And that is actually going to be used by the Expresso setup. Okay, now to start the Expresso, we'll right-click on this null which I've just named neon. I'll go ahead and choose Expresso. And here it is. I've already created a sound effector here. Let's go ahead and put that audio file, that same one we used for the particles, into it. Like before, let's drag it into the Expresso window. And for its output node, let's choose object. Then, let's right click here and let's make a new node under motion graphics. Let's make a sample node. We'll connect the object output port to the effector input port on the sample node. This should look a little familiar. Then, for the output port, let's choose strength. Like we did in the Drum Lights video as well as in the particles, we're getting the sound effector or passing the sound effector into this sample node and we're going to output its strength. Let's hold on for a second and leave that the way it is. And let's go up here and let's make a new node. And let's go on to the Expresso general section and make a time node. The time node allows you to output temporal data from an animation such as the current time, the frame number as well as other things. The next node we're going to make is called a compare nod. And it's found in the logic section of the Expresso nodes. What the compare node does is it compares two values and outputs the result as a bool, that is zero for false and one for true. I want to feed the time null into its input one port. And I can set input two here. I just want to leave input two to zero. What's going to happen is that the current time is going to be fed into the compare node which is going to compare it to the number 0. If they match, it'll output a 1. If they don't match, it'll output a 0. In other words, it will output true if we're at the beginning of the animation and false if we're anywhere else. Next, we'll make a condition node. This is also found in the logic area. For those of you who are familiar with computer programming, this is kind of an IF THEN statement. What we're going to do it to is we're going to feed this output into the switch node. Then, we'll drag in this null into the Expresso editor and set its output port to be the global position x of the null. That is where the null is on the x-axis globally. Then, we'll feed that into the first input of the condition node. For the next input, we want to pass it in a number. I'll right-click here and make a new node, Expresso, general, constant. The number that we want to pass into it is zero and its already set to zero. Let's feed that in. Now these input nodes are indexed 0 and 1 and you can have many more of these if you want. In this case, we only want two. What this thing is saying is get the current time and it's going to come out either 0 or 1. Zero if it's somewhere else besides the beginning of the animation and one if it is at the beginning of the animation. Then, it's going to use that index to choose one of these two ports. If this input is zero, it will use the false output of this to grab the global position x of the null. If the output of this is true or a one, it'll go to the input port that has a one for an index and it'll grab the number zero. And it will output either one those two numbers. Either, the global position x of the null, or the number zero if we're at the beginning of the animation. Now we'll bring in that "null for sweep" again to the Expresso editor. For its input port, we want to choose its global position x and feed the output of this condition node into it. Now, you might be wondering what we're doing here and what this null is really being used for. This will become clearer as time goes on. We're using the null in a similar way that you would use a variable in programming. We're storing a value in it, but as mentioned, this will become clearer as we progress. For the output of this node, we're going to output its global position x. What's happening here? We're feeding this null's global position x through this node if the time is anywhere besides at the beginning. Otherwise we're setting this null's global position x to zero if we're back at the beginning of the animation. Okay, let's move back down to this area, where we're taking out the strength from the sound effector. Let's make a new node here. We're going to make a math node because what we want to create is a multiplier here. Let's change this from add to multiply. Then, we'll feed the sound effector strength into input number one and we'll multiply that by five. This in effect, increases the strength of the sound effector by five times. We can vary this amount later if we want to get to sleep effector to move faster or slower based on our own preference. Now, what I want to do is over here, create another math node but instead of multiply, we're going to leave it as add. I will feed the global position x of the null into its first input port, and the strength value multiplied by five into its second. What we're doing here is we're adding these two amounts together. Okay, now let's click on this node right here. And I want to copy and paste it because I want to make another one here. We're going to run out of space, so let me make this window bigger. I'll move this over to the left. I want to take the output of this node where I've added this amount to this amount, and I want to feed that back into the null for sweep, in order to set its global position x to that value. We're basically updating its position. As I said before, it's kind of like a variable that we're using to store the sweep amount from frame to frame. The next node we'll make is a range mapper node found in the calculate section of the Expresso nodes. The range mapper re-maps a value from one range to another. For example, a value of 1 to 8 could be re-mapped to from 1 to 100. I'll move this out of the way to get to the range mapper's controls here and I'll feed the output of this node into the range mapper. Now, as I mentioned before, this is the null where we're storing the value of the strength of the sound effector in the null's global position x. So in the range mapper, for the input range, we're going to want to put a number here that will be greater than the value will ever get. So I'm going to enter a value of 3000. As I said before, we can control the speed of the sweep with this multiply and we'll take a look at how to do that later. Now, for the output range of the range mapper, we want to switch to percent, from zero to 100% because that's what the sweep object, here, takes for its end growth. Finally, the last node that we're going to make is we're going to drag the sweep object inside here. And for its input port we're going to choose the end growth and feed this value into there. That's it. Let's just see if we can summarize. Basically, this area is passing out from this node a zero if we're at the beginning of the animation, so that if we are at the beginning of the animation, it will reset the global position x of this null for sweep to zero. Otherwise, it'll just pass it through. It will add this amount to it, so the null will be incremented by it. And then it will be restored for future use. Finally, we'll pass out the amount to the range mapper which will remap that value to a suitable amount for the end growth of the sweep. Like we said before, this null for sweep is basically the equivalent of variable that a value is stored in. Okay, now let's see if it works. I'll minimize this window. I'll also bring back the letters so we can see them. And let's hit play and see what happens. ♪ [music] ♪ So far so good. ♪ [music] ♪ As I mentioned before, the speed of that sweep can be controlled with this multiplier. Let me move this out of the way a bit. If I click on this multiply node which we had set to 5 before. For example, if I set it to 2 and then minimize this window, you'll notice that the sweep will happen a lot slower. ♪ [music] ♪ If we raise it, it'll obviously happen a lot faster. Let's raise it to 8 and take a look. ♪ [music] ♪ So you can change that number depending on how fast you want this sweep effect to take place. Well, that does it for the neon. Let's move on to the next video.
Resume Auto-Scroll?