NAB 2016 Rewind - Jeremy Cox: SXSW Gaming Titles with Cinema 4D

Photo of Cineversity

Instructor Cineversity

Share this video
  • Duration: 47:45
  • Views: 5006
  • Made with Release: 17
  • Works with Release: 17 and greater

Jeremy Cox outlines several aspects on the workflow behind the title sequence for the SXSW Gaming Awards.

Jeremy Cox outlines several aspects on the workflow behind the title sequence for the SXSW Gaming Awards. Jeremy shows how Imaginary Forces created and controlled the distinct look of the piece through world-space gradients and an Xpresso-based rig which made it easy to change the color palette.

11:53Color Palettes Rig
23:41Volumetric Rays
25:19Texturing / Terrain Mask
29:02Rolling Icosa with Follow Position
37:25Collapsing Powerline / Cloth Sim & Mesh Deformer

Jeremy shows a trick for creating volumetric rays using cloned cubes, and how to use the Terrain Mask to apply texture based on the slope of an object. The Follow Position option in Cinema 4D’s Rigid Body Dynamics allowed the team to precisely control the animation of the Icosahedron hero object, and layer dynamic rotation on top. Finally Jeremy shows how a Cloth Sim and a Mesh Deformer can be combined to collapse a powerline.

Recorded Live from NAB 2016 in Las Vegas.

Less...

Transcript

- My name is Jeremy Cox. I'm from Imaginary Forces. We are a creative studio and production company based in Los Angeles and New York. I work out of the New York office. So, yesterday, I kind of went through a little more of what Imaginary Forces does. I figured that'd be a little boring to do a second time if any of you are coming back for a second demo. So actually, I've been at Imaginary Forces for 10 years, so I've actually never done my own demo reel. So I actually cut together my own demo reel for the first time since I was in college. So you're in for a treat, I hope, unless it's terrible. ♪ [music ] ♪ Thank you. As I've said, I've been at Imaginary Forces for 10 years. They hired me right out of college and it's been an amazing experience, being there. IF is actually just about to turn 20 years old, so I've been there for about half its life, which is pretty crazy. I feel like I just started there, still. But anyway, today I'm going to talk about a couple things. But the first one is, we did the opening for the SXSW Gaming Awards. We had done this last year as well. So this is the second year in a row we've done it. And if anything, the biggest challenge initially was, "Okay, we did it last year. Everyone actually really loved it, and it got a great response. And how do we top that? How do we do that again, essentially the exact same brief? What do we do? How do we take it and do it the next year?" And we kind of decided, "Well, let's just ignore that and do something from scratch. Just kind of do what we find interesting." So first, I'm going to show you the final piece, and then we can talk about a bunch of the creative process that went into it as well as some of the technical challenges and technical solutions we found to those. ♪ [music] ♪ So that was obviously a lot of fun to make. And it's funny how we kind of-- it really evolved from what we did the previous year. If you saw what we did the last year for it, it was kind of this retrospective of gaming, and this very sort of impressionistic thing. And then suddenly this year, we had all these other ideas and kind of turned it into almost a narrative short, in a weird way. It was a totally different thing that was a lot of fun to do. So the first thing I'm going to show you how to do is model that character. It took a lot of work. There's the character. If you missed that the first time, I'll zoom in on it, and you can see it here, close up. It was kind of funny that, literally, it's a d20. It was the icon of the gaming awards. So that's just the icosahedron platonic solid that comes with C4D by default. So that was a fun thing, just to spend as little time as possible doing any character modeling. So, just conceptually, where this came from, I just did a lot of, sort of, thinking about playing games and gaming in general, and what some of the themes were, and some of the ideas. Something I kept on coming back to was this idea of this spawn and re-spawn. You're playing a level, you're playing a game. And you're just playing it over and over and over again. And every time you die, you go back to the beginning, and you try and you get better and you get better, and the kind of, frustration of it. There's something about that kind of repetition, and it almost reminded me of Groundhog's Day, or something like that. It's almost like, that's kind of in a weird way, how gaming works. There is this sort of, repetition. I thought of that as almost being our narrative structure. So that's where this idea of the death and rebirth came from. This was a very early illustration that our Designer and Art Director, Max Strizich, put together. And I think this really embodied conceptually what we were thinking, and then just visually, this idea of, we needed a mission for this little character to go on. Again, it all came from this little guy. We saw this little d20, this icosahedron, as a character. He can roll around and... [purring noises] But what does he do? We kind of came up with this idea. Well, he needs a mission. He needs to be going for something. So this idea of discovering this pinnacle off in the distance. And making that his mission that he's going for. And then just, the idea of the kind of, structure of it, of having this kind of like, spiraling thing you can go up. I think this really got us off on the right track with that. So, something about this project is that there were both no limitations at all, and some pretty extreme limitations. So, there was not much of a budget, and not much in the way of resources to work on it. So that's a huge limitation. But on the other hand, the client had almost no restrictions in terms of what we did. So as long as we had fun doing it, and had something tangentially to do with gaming, they were on board. They just wanted us to do something fun and cool. So, in a weird way, although that's kind of like, the fewest limitations you can get in a brief from a client, that's the hardest. You always want some kind of box to be playing in. You want fences to guide your thinking, and when there's none at all, it's like, where do you start? What do you do? So that was actually a huge challenge. So, if anything, I really embraced the idea of, "Okay, we have no resources to work on this. How do we do it?" And use those limitations to guide what we did. So, for example, you saw these scenes throughout the piece. And the idea was, these were kind of this like almost purgatory, kind of death scene. And they would change each time. Each time he kind of dies, and gets torn apart and re-assembled, and then gets re-spawned at the beginning. The reason we actually added these was both, I thought it was kind of creative and interesting idea, and also aesthetically, we could mix it up and do some fun things with these. It actually came about because in the previous years' gaming awards, we realized-- we get people for an hour or two at a time, a day at a time. And rather than have to get them familiar with our aesthetic and our style that we're trying to create, we can just say, "Hey, go make one of these. Have fun. Here's our icosahedron character. Let's do something. I don't know, animate something." It doesn't matter what it is, because the whole point of it is that it's an eclectic style that can all mixed together. And it'll work because it's in this separate sort of, chapter of the piece that is these sort of, death animations. And then, another area that we really took that limitation, and ran with it, was the aesthetic. I'm just going to go through a bunch of these early renders. These were just as we went, these were just some things we saved, and these were us establishing what the look of the piece was going to be. It was important from the very beginning that it be something we could both render quickly, work in quickly. We knew it was going to be at least a minute long. It ended up being, I think, two minutes long. We just needed it very quick to work with. At the time, the number of people working on it, and the schedule wasn't all that great in terms of actually being able to churn this stuff out. So, really we just went through it, and just started experimenting. And we quickly arrived on the idea of this fog. And we really liked the idea of this color and depth. And the changing color as the atmosphere sort of occludes things. But doing it in a very sort of stylized graphic way, so using these kind of low-poly objects, even like sort of being inspired by the GI calculation, then going weird with it. Like going super bright and super funky with the colors. So in making this, I'll show it later, and it'll make more sense. But essentially, an important part of this process was Max who I mentioned earlier, who doing a lot of this kind of look development. He was actually largely learning Cinema 4D at the time. And so he would be just messing around, breaking things, and going crazy with it, and making images like this, which are awesome. And then, I would be sort of in the background making rigs and things that would make this easier to do. So, in terms of being able to control these gradients and these colors and things, I was sort of making it easier for him to quickly change things and sort of mess with it. But as soon as I made a new rig or something for him, he would just go nuts with it, and break something. And then I would go, "Well, I can actually control that. And that's really cool, so let's make a way to sort of make that a part of it." Like this is actually rendered through the wrong camera. This is the whole scene viewed from the outside, from like, the front view or something. It looks crazy all on its own. It was really just a quick process of very quickly iterating through different aesthetics, and trying different color palettes, and trying something with ambient occlusion and global illumination, how that stuff looks. And here, I think this is where it really started to lock in, to kind of a little more refined, kind of, "Here's the palette and the aesthetic that we're going for." And especially with these, we are starting to get some clouds and things in there. We started going a little more naturalistic, although it's really cool how crazy it went. We kind of brought it back to a little more-- some of these almost kind of look like Road Runner cartoons, which I think is really cool. But this is where we arrived at. This was like our color script for the piece. We found these six frames of all the experiments we were doing, kind of put them in order, and realized, we're kind of telling a story here through the color palette. It starts in the dawn, and then the sun sort of comes up, then it becomes this daytime. In the piece, we never actually really got to the last two, just because it kind of became more complicated than it was worth to keep on changing the color palette of each scene, and try to figure out the order of things as we're editing it. Suddenly things would be changed, and the colors would be wrong. So at a certain point we simplified it a little bit. But, this is essentially the color palette we were using. And because these are all rendered out in Cinema 4D with just a tiny bit of like, Photoshop compositing on them, we essentially were able to take the settings we were using in these and just copying and pasting them into our pre-vis that we were doing concurrently, and render it. And that was pretty much our final piece. So I'm going to quickly show you, in Cinema 4D, how we set up some of these color palettes, and specifically, how I set up controls to very quickly iterate through them. So let me open up the project file really quickly. This is the scene from the project, or close enough to an actual scene from the project. As you can see, the actual view port preview is extremely similar to what it looks like rendered. If I hit Render, you'll see it renders extremely quickly, but it really isn't changing much. It's almost like it's just slightly different as it renders. But, really, just working in the view port in doing like a hardware preview, you get an extremely good idea of what the final product is going to look like. And that was very important in terms of how quickly we worked. But, I think what's interesting here is, we built this controller system. And so, if I click on Controller... We have these environment controls, and essentially we're using user data to link to all our materials so that in one place we have all of the controls we need to set the look of our scene. So let's say right now, it's kind of this, desert-y orange thing, but let's say I want to go to maybe a more green lush with a blue sky. These gradients are controlling everything. So I can just say, "Okay, my fog color, that's like the environment." Let's go in here, pick a different color. Okay, so this is like, the ground, so maybe it would have to be more of a green color. We can go in here and find kind of a nice green. And like, instantly, we have that changed. We probably want to do a little bit more blue in the distant haze. And the sky, I said, I wanted to go kind of a little more of a nice blue. You see how quickly we can iterate through and just explore different color palettes. And, that was so important in the early process, being able to just experiment, because we didn't know what we wanted to do. It always looks like, in the final piece, it always seems, like, "Oh yeah, that's what we always meant to do. That's what it was going to be." But you don't know that when you're working on it. And it's really important to just experiment and try things, and iterate as quickly as possible through them. So, I'm going to show you how I set up this controller. I won't show you all of these, because obviously it's a lot of linking things and a little complicated, but just the basic idea of setting user data, linking it through Xpresso, and all of that. I'll show you very quickly how we set up that. There are more controls, even just the distance of the fog, like depending on where we go in the scene. Maybe you want it to be a little bit kind of closer like that. It's again, just extremely interactive, even the light color, which is what's giving us some of the definition in here, I can change that. We might even be able to... Let's see how the view port handles it. Yeah, we can even see a certain amount of interactive live shadows to see where our shadows are going to fall once we actually render it. Anyway, so I'm going to show you the basics of how we set up this rig. So I'm just going to take my environment and put in a new scene, just to start from scratch. And I'm going to take out materials. So, we're really starting from scratch here. Let me grab the sky, too. All right, so first thing I'm going to do is make a new material. And pretty much everything in that entire scene is driven through gradients. It's using 3-D gradients. So, usually when you make a gradient-- I'm actually going to use the luminance, just because that's mostly how this is all driven. So, in luminance, I'm going to add a gradient. And usually, you probably just take this and, "Oh, let's just change some colors and things." But there are a bunch of settings down here that you might not have usually touched. And, the big one we were using is these 3-D linear gradients, and what that means, is that rather than it being in the texture space on the object, it's actually traveling through the environment. So if you think of a volumetric fog, which is essentially what we were mimicking, that is what this is doing. So it's like a gradient passing through space. So, I set it to "linear," and then, you kind of need to get a little bit of spatial orientation about where you are, or where things are. So you get this kind of start-end in x-y-z. So if you think of a point in 3D space where the gradient is starting, and then a point in 3D space where it's ending, it's like, those are these two points you're setting here. But before I do that, the one thing that you'll notice is that, as in with the camera, that fog changes, because it's all in relation to where you are. So, rather than being in object space, we're actually putting it in camera space. So that means that if I zero this out, if I zero both these out, essentially, both points that I was talking about in 3D space are on the lens of the camera. So what I need to do is take the far one, or the end point, and push it way out in the distance. So in terms of coordinates, like, "y" is always up, "x" is always side to side, and "z" is the one that goes back in depth. So, it's x, y, and z, so the end, I want to make this number go way back in space. So let's just change this, and we can see what it does. I'm just going to make something big, like 10,000. And if I put this material on my environment, you can see it's a little crazy right now, and that's actually because I have this cycle turned on. So it's repeating it over and over and over. That gradient is being repeated. So right now it's still not far enough. I guess that 10,000 is a little too close. Let's try another zero. There we go. That's what I'm looking for. So you can see, as I move my view around, it gets darker as I get closer and lighter as it gets further away. Now, you may recognize this as essentially just a depth map, which you can essentially just create your own depth pass just straight out of materials like this, which would be useful if you want to change the anti-alias setting or something like that, when you're running depth pass. Anyway, what I really want to show is, this is all great, but what I was actually doing was, I was thinking, "Let's take this texture. I want to use the same one. Also my color because I want some interactive lighting, so let's paste that in there. And now, if I put a light in there..." You'll see, it gets very complex quickly, because now if I want to change those colors, there are two places where I need to change those gradients. And there's no good way of linking those together except if you link them both to somewhere else that they're both referencing. So, that's what I'm doing here. 'm just going to make a new null, and I promise this wont be too crazy if you don't know Xpresso. I think you can pick this up pretty quickly, but on this null, I'm going to make an Xpresso tag. And, Xpresso is essentially a nodal system in which you can link values together. Essentially it's just sending data around. So it's just moving data in your scene. And, again, like, my use of this is extremely simple. You can get very complicated. But, what I'm going to first do, here is my Xpresso. But what I need is a UI to actually control it. What I want is a single point in which I can change the gradients, that sort of focal distance of how far back that gradient goes, and all these things like that. So, what I do is add user data. You can see on anything in here, there is a user data menu. What you do is, you just do "user data, " "add user data." And, you can add any different type in here, but what I want is a gradient. So I can select it as a gradient. And let's call this, "fog color." And, that's all right. So, now I have one item, and I'm going to link this fog color to both of those instances in that texture, so that when I change this, it will change both of the other ones. So I'm going to quickly add my gradient here. I'm actually going to make it a little different, just so I can see when I link it up that this actually worked. So now it's going from black in the foreground to kind of pink in the background. And, so, the way you actually add things to Xpresso, is all you need to do is just drag them in. Because on this null I have user data, I can just drag the null in, and then I can drag the fog color onto the right side, which is the output. And then I need to pipe this into something, so you can think of it as, this is piping out of this into something else. So, opening up my material, and go into this gradient, and I'm going to drag my gradient in. And then I need to set the input and it's a little easier-- maybe I can do it. Yeah, I can drag that gradient into there. And then I also wanted to do the color gradient because these I want to be the same. So I can drag this gradient in and go into that one, and drag the actual gradient values themselves into here. So now all I need to do is just connect the dots. So out of that and into that, and out of that and into that. And you can see now, if I go into the user data, and I probably don't want it black in the foreground, maybe I want it like, a deep blue, or something. Now I can change all of these different values at the same time, very interactively. So the other thing I said I wanted to do was this distance. And again, because it's in both places, I don't want to have to change these one at a time. So 100,000 was the number I liked, but I'll probably want to change that as I just fool around and mess with this whole thing. So, again I'm just going to go into my null, user data, add user data. This time I want it to be a "float," which is the default, which is correct. It's essentially just a number, it just means I want to set this to some number that's a certain distance. Rather than percentage, I want it to be real, and that just means that it's not zero to 100, or something. I guess you could think of it as your normal definition of number is a real number. I'm just going to call this "far clip." And in this case I'm actually going to set it to have a float slider, and set the maximum to be something nice and big, and then you'll actually get a thing you can drag around which is very useful rather than having to punch in numbers. So, I can do the exact same thing with the Xpresso. So here, I'm going to already have-- the other way you can add things rather than dragging them in is you actually click on here and go to user data, and you'll see it right there. So there's my far clip. Now in both of these-- it's a little hard, like I can't drag that one value out, so again I'm probably going to need to use the same method here, where I click on here, go to "shader properties," "gradient," and then "End Z." So the End Z, as I said, it was X-Y-Z, is the order it goes in. And End Z will be the one I want. And then, same thing, and, "End Z." If I connect that to the far clip, because that is still set at zero, I believe, it essentially just reset it. So those are now back to zero. But now I go to my user data and drag this around. You can see it nice and interactively change the distance of my fog. Now, this is really as advanced as what I did, got. It's really just putting things in and connecting them. And ultimately, we did a lot of things like-- I'll go back to the original scene. I can describe some of the ways in which we used this. So you can see we did clouds, we did some controls for the colors of the clouds. I have them off right now for the preview. We did this sort of volumetric ray system. And this is really interesting. Again, the whole thing we were going very graphic, so you could've done a light with a Gobo or something in front of it, for like volumetric light, but that would take forever to render, and just look soft. And because we're going for this graphic aesthetic, all this is-- you can see it when I zoom out-- It's just a bunch of cubes stretched out, put in a cloner, and sort of randomized at an angle. So, it's like the hackiest, cheating way to do it, but because we're going for this really sort of, simple, aesthetic, it ends up working really well. Let's get back in here. You can see it poking through the sky right there. And as I said, like, same thing, just navigating around, you get a really good sense of what it would look like, even though the transparency doesn't exactly come through the way you'd hope. But, you kind of get a sense of the angles of the rays and everything like that. But again, we had controls for that. So you go down to-- we have ray intensity, and that won't actually preview. But then we have like a random seed, where if you just don't like where some of them are standing, you can randomize it and they'll bounce around. Then just change the angle at which they are coming at. So, just having all of this information in one place, rather than needing to go in here and say, "Okay, I'll go to my rays, I want to go to the rotation," and mess with the values in each one, you'd just have it all in one spot. And being able to build a rig things like that so you can just very quickly iterate and change them, makes you able to work that much faster. I don't think there is anything else in here. Oh yeah, so there is one other thing that I think was kind of interesting. We did a lot of work on this shader, and there's a lot of really subtle things going on in here. Again, a lot of it doesn't really preview in the view port, but if I hit "render," hopefully we can see some of them and I can show you how we did it. I don't know how well it's coming through, how well you can see it. On any vertical surface, we added these sort of vertical striations. We wanted it to feel like it's very kind of smooth on the surface, and it's clean and graphic, but then on any vertical things you almost got this kind of feeling of like a graphic version of erosion. So it's almost like you took a pencil and kind of squiggled up and down on it to get this, again, a graphic version of these vertical cliff-faces. So, the way we did that, again, it's using world space, like the idea of putting things in world space. In this case, it's putting noise in world space, and just stretching it out vertically. I'm actually using that in the diffusion channel, so you can see it's a diffusion shader, and I'll talk about that in a moment. We go under noise, it's at "world space" and then it's stretched out ridiculously tall in the "y." It's like taking a normal noise, which you can think of it as the same in all directions, and just kind of this undulating thing. But we are then just stretching it out really far up and down. So when you stick it on something, you'll just get these nice long lines moving through our geometry. What I was talking about with the diffusion shader, I skipped over there a moment ago is, we actually used a terrain mask to make it so it only appeared on the vertical sides. And this is a really interesting shader because essentially, it-- I guess you could think of it as-- it's intended purpose is, like, say you wanted to put snow on the ground, and of course snow only settles on the ground, it won't settle on vertical faces, so if I-- let me do a new shader and I can show it in there. I'll do luminance just because it's the easy way to show it. If I do a-- where is it? -- train mask, and I'll just use the defaults and put it on my environment. Now it doesn't preview in the view port, but if I render it... it seems to be appearing black. I'm sure I have something I'm screwing up here. I need to disable that. So this means that at different heights, it'll behave differently. So say you only want snow high up in the mountains, it will only apply it at certain elevations of your scene. So hopefully that fixes it. There we go. So, it's really just a mask of different angles, so it looks for angles that are pointing up, and essentially gives you a map you can use elsewhere to essentially chop things out. So in this case I had that noise that I was going to put on the side, so I'm using this to chop out the top parts and only use the vertical parts. So you can get very complicated like that with your shaders, and sort of add a lot of little details in. Or say you wanted it to have a noise or something, or a texture even, or an image that just appeared on the surface of the terrain, but not on the vertical portions. So, I think that gives you a pretty good overview of sort of our look development process. Really, it was as I said, an evolution. As we worked on it, we would kind of come across problems, we'd have little things we wanted to change. It's like, "Oh, rather than have to change that every single time we want to do it, I'll just put a control in there." And then that's our new scene, we update everything, and then suddenly, we have that control in every single scene. And really it was probably up until like, a couple days up until we delivered I was like tinkering with it and making changes because it was still saving time in delivering the final product. So the next thing I want to talk about is actually animating that character. So what I'm going to show you now is-- maybe, if it's going to play-- there we go. So this is like an early pre-vis of the piece. And really, this is-- I'm just going to talk about animation as this is playing. The issue was, we knew we wanted this sort of geometric character to walk around, essentially, as much as this guy can walk. But the problem was we both needed it to be completely directable. We needed to be able to tell it where we wanted it to go, when to go slow, when to go fast, kind of what path to go over, and even to go over complex geometry. It couldn't just go over a plane. But, it also needed to behave like it used physics, like it's rolling around. We can't just animate the position and say that's that. So really I had a bunch of different ideas on how to do this, or they sort of evolved as I worked on the project, as tends to happen with these things. And so, my initial idea was, okay, gravity goes down, so let's take the entire world and move the world around, and use physics on the object. So it's almost like one of those old marble games where you just dial the things in and they make the world change and the marble rolls around. Like, well maybe I can do it that way. And then I of course tried that and it was terrible. But, I'm going to show you a few of the different-- the process I went through in figuring this out, and then really I just came up with couple different methods in which you could use to do this. So I'm going to make a plane. This is just going to be our ground that we're walking around on. And then I'm going to, again, go through the very complex modeling process of creating our character. Just make him a little smaller, and there we go. So, obviously we want this guy to use physics. We want him to roll around like he's a physical object. We don't want to have to animate that rolling, because he's always going to intersect with the ground and it's not going to look good. So, we really want to use the dynamics in Cinema to do that, the rigid body. I'm going to make a "collider body," which is going to be the ground, and a "rigid body" which is this guy. So if I hit play, he'll just drop to the ground and roll around a little bit. So, I mean, that's fine, but that's not really what we want him to do. We want to actually have control over him. So, the first thing I actually tried was going into-- it's kind of like what I talked about-- moving the earth, except I was like, "Oh, I can just point gravity in different directions, and make gravity go this way. And if I put gravity that way, he'll roll that way." So, I turned off the gravity in the scene. You can use particle effectors to affect dynamic objects. So I thought, "Oh, well, let's put a gravity in there." And, by default, it's going to do kind of the same thing. I think I have to turn it up to 1,000. Is that the default? So, now he falls, but if I point it, you can see he's sliding. And that's because the friction isn't high enough, so he's just sliding over the surface. So if I go into both these tags and go to collision and up the friction, I could probably just put 100 or something really high, so he never slides, he's always going to roll. So in theory I was thinking, "Oh I could kind of just like animate this around, and make it so it's almost like a joystick." I could point in each direction I wanted him to go. It was like a fun idea, but then actually trying to get any sort of control over where he went was like a disaster. It was almost like we were trying to play the game that this character is trying to play, where we're trying to have him go over these like, narrow ledges and things, and it was as hard for us to do it as it seemed he was in the actual video. So this didn't last long. It was kind of a mostly-failed experiment. It was great if we just wanted him to go in one direction, and then like fly off the cliff. It was perfect for setting up that. With any sort of actual control we couldn't really do this. So the next step was-- well, I'm going to turn on the default gravity again, just because I'm not going to go back to that anytime soon. So the next thing was, well maybe gravity isn't the way to do that in here. If I look at these there's an "attractor." Attractor would probably do that. So I'll still have gravity pointing down but then I can attract it to go in different directions. So, this is the next test, and you can see-- I don't really think it's going to do much by default, I think because the value is too low, and it just can't pull it. So I think I need to turn up the strength. That's better. So you can see that's actually working pretty well. He's actually rolling around, he looks pretty convincing. The problem with this is it's still kind of an issue. If you go too fast, you leave him behind. We were also having a lot of weird bugs with it. He would kind of snap to the ground. It would be like, it feels like an attractor, like someone's pulling him, like it would go too far and then bounce back. It was kind of an unpleasant kind of animation. We actually used this in some shots and it was fine, but it still wasn't ideal. So the solution we ended up with that ended up working really well was using "follow position" in the dynamics body tag. And if you've ever used that, it means that it essentially takes the actual position of the object into account when it does the simulation. So it still tries to follow the original object, but takes physics into account when it does that. So, if I turn that on, you'll see a problem immediately. I don't know what that value should be, but let's just try it. Okay, now he's just floating because-- but you can see-- I can't really drag him around. Once there is a dynamics tag on an object, I can't actually-- I can't move it, I can't drag it, except on frame zero. So if I say I want to put a key frame here, and then a key frame over here, I can't move it to put a key frame in a different spot where I want to put it. So, this is kind of an annoying thing, where we originally thought, "Oh we'll need to delete the-- or take off the tag, put it back on every time we needed to do animation changes, " but that obviously wasn't going to be ideal. So we came up with another solution that I'm actually kind of surprised worked. That was, again, using Xpresso to link it. So, even though you can't move it and apply animation right on here, what we could do, is if I make a copy of this object-- and I'm just going to put a display tag on it, so that he looks a little different. Give him lines, and we'll make the object colored. There we go. So, what I'm going to do is-- This is going to be my controller. And I'm going to apply an Xpresso tag to it. And what I want to do, is I want to drive the position of the dynamic object through the position that I'm animating on the controller. So, just like I did earlier-- here's my Xpresso-- what I want, is I want the controller to be the "driver, " and I want the object itself to be the "driven." So I'm just going to do-- the easiest thing is actually just global matrix. And that's kind of a cryptic thing, but really that just means you're transferring all of the position, rotation, and scale data from one object to another object. So I can do global matrix out of the controller, and global matrix in on the platonic. And when I drag that over, now, that's literally all the Xpresso I need to do here. That's it. So, again, it's not going to do much, but now when I move my controller, you can see it's as if I had animated the object with the dynamics on it. But I actually don't need to because it's just linking to the other object. So I can just move this around, I can do whatever I want. You can see it's nice and interactive. The other thing you could even do if you really wanted on this, like I did before, you could set user data on here so that you could animate the value on the "follow" position. So say that you did want to have him rolling around, and then he's going to fly off the edge of the cliff, you just animate down the follow position from pretty high where he's actually following it, to nothing, and then he'll suddenly just keep on going with whatever physics wanted him to do. So it's a very nice, controllable system, where we were able to both have complete control over it but still get the reality of the physics of how this guy would actually look rolling around. I think that it definitely shows in the final piece. You feel like this guy is rolling around, yet you also feel like he is a character. And of course with any piece like this, that's the most challenging part. We wanted this inanimate object to feel like a character who actually had a mission, had a goal, was actually trying to do something. I think we were pretty successful in doing it, through using techniques like this, and also very careful editing to sort of find the right moments we were pre-vising out. All right. So sort of tangentially related to this, I'm going to move on from the gaming awards to-- this is actually just a test that I did for fun. And I was showing it to some people, and everyone was really surprised that I did it in Cinema 4D. But it's again, using physics in Cinema 4D to kind of drive things, and kind of unexpected uses of physics. So in this case, I was just curious if I could do it, and it was-- I had been experimenting with the cloth system in Cinema 4D quite a bit, and I figured, well, all this cloth stuff actually feels like something bigger. Like, if you play with the values, it actually starts to feel like a rigid object actually kind of collapsing. So, this is using a couple different techniques, but I'll jump into the project itself and show it to you, and then talk a little more about it. Woops, getting ahead of myself. And... So here's the project file for this. It runs a little slow, just because this is a very high-poly object. But if I turn them off, or if I un-link them, I guess I should say, and make this other geometry visible, I think you can get a little better idea of how I'm actually doing this. Hopefully you can see it on the screen pretty well, but the bright green object here-- this is like an extremely low-poly version of what you're seeing above. You can think of it almost as a cage, like if you think of-- this specific, it's like a power line or pylon sort of thing, and it's made of these girders that essentially-- you can think of it like a cage. So it's almost like I was making a low-poly version of that cage. And, the trick then, is how you get it from one to the other. So what you want to do is drive that high-poly version through a low-poly. And, that's just this mesh deformer. And, what I'll do is I'll copy this into a new scene, just to give you a better sense of how to do it. This pylon was just a stock model, and again I'll copy it and show you a little more. Copy the ground as well. So the one thing I did to the high-poly model is, I added a lot of cuts in it, because essentially the way it was originally modeled, all of these pieces of steel, they were completely just single polygons, stretching the entire length of them. And if you think of simulating that, essentially they couldn't bend because there was no geometry in there for it to bend along. So I just needed to add geometry in there, and I just used the knife tool. I think I just set it to... There we go. I actually just set it to "plane," and just set it to different axes, and just kind of like chopped it up in world space. And it didn't matter what it was, I just needed more geometry in there for it to deform. Once I had done that, I just modeled the low-res version, and that was super-simple, just box modeling. I was just creating a cube, scaling it in, extruding, cutting it up a few times just to make it. But again, if I show the high quality, that's really all I was creating. I could probably do that right now but it's a waste of time to watch me model this guy. But, I'll delete all these tags, just because I think it's more interesting to show that from scratch. Keep the display tag. So, in setting this up, the first thing to do is figure out the simulation on this guy. And really, it's just using again, like I said earlier, it's using the cloth system in Cinema 4D. So it's "simulation," "cloth," and if I just hit "play," it's going to fall through the floor. Or, it's not falling through the floor, but-- it doesn't have any like set points that are rigid, so it's just not doing what we want at all. It's also the values are pretty weird for something of this scale. So, the first thing to do is set some points along the bottom here as "rigid" or sort of immovable. Then go into cloth, and go to dresser, fix points-- I just want to set the ones I have selected there. I have one selected up there which I don't want so I'm going to deselect those. Select these, and set. So now if I hit "play" on it, it's a little better. You can see you're getting some deformation and things. At this point it really is just like messing with this stuff, and I wasn't worrying too much about real world values or anything, because I honestly didn't know what they were. So I was just cranking up the gravity, and saying, "Let's go really far down," and it kinda does that, and then kind of going with-- I want some wind, so I'll turn up the wind strength, and see what starts happening there. Like, "Oh, that's a little much." But, really it's just messing with these values and playing with the stiffness. And as I said, I don't actually know what any of these things really are. I just move them around until I get something I kind of like. Iterations is one I think is really useful to know, though, because this is essentially-- to me, I would-- it almost feels like its stiffness. Stiffness is at 100 percent by default, but it's never very stiff, so to me it's like I just up the iterations. I think that it's essentially-- if you think of it like-- it's literally iterating the simulation but essentially it makes it stiffer the higher you go. So, in doing this, I was really just messing with this and kind of finding a value where it kind of did what I want, and then changing up other values, and then breaking-- I was just dialing it in until I got a simulation that I liked. It's not going to look good just because I don't know what these values were and don't want to really mess with it. Another thing you could do is, you can see the map options in here, these map fields. You can set it for a text map to determine what areas are the sort of stiffer or weaker points of your cloth. So I did that, for example, up here, like this is the portion that in all the photography references I found, they all kind of bend at that point. It's like right at the top of that vertical part where they start to go out to the branching part. So I set it so that right there it would be really weak, just so that that's the part where it kind of initially broke, and it would move from that. You could even animate those if you wanted. I think in my final, I actually animated the gravity. It started with no gravity, and the gravity kind of turned on as I wanted it to collapse. Let's just make this actually collapse, because it's not very interesting when it kind of hangs out like that. That's close enough for my purposes right now. Okay, so now we have a simulation, but it's not actually doing much interesting because it's a really low-res mesh, and like you don't want anything to look like that. So, what we actually need to do is drive the high-poly mesh with this low-poly mesh. So the way we do that is, we need to-- I'll just turn that on so it's actually visible. So there's my nice high-poly mesh. And the other thing that's important is it's completely contained within the low-poly mesh around it. If there are any areas not contained, they'll do really weird stretching and breaking and things, so you just need to make sure that it's entirely sort of a water-proof contained element. If we go into high-quality geo, and I just need the-- where is it?-- the mesh deformer. So, you can kind of tell what it's going to do. This is like the most literal example where I have a mesh on the outside, and I'm deforming a mesh on the inside. And that's kind of really what it does-- is if you have animation on one mesh, you can drive another mesh with that animation. So I'm going to put that inside the high-quality mesh because that is the mesh I want to deform. And then inside this mesh I need to tell it what cage to use. And, it looks like a cage, it literally is a cage which is encapsulating it. So I'm going to take my proxy geo, drag it into the cage. And then all I need to do is hit "initialize, " and you can see it's loading into memory, and that's just, it's telling it what points on here are controlling what points in there. And, I can hide the proxy geometry right now, because all I really need to see is this high-res geometry. I hit "play" on it. And you can see again it's not a good-- the quality of the simulation wasn't done very well, it was done very fast. But, especially down here, you get this really nice kind of crumpling. If you didn't know better, I bet you might suspect that was a proper simulation, but really it's just cloth with a couple points. It's like, extremely crude. You didn't get those nice pops-- like every time I've seen reference videos of that, you get these kind of like, bends, bends, bends, and then suddenly like, pops. And the cloth simulation actually does that naturally, and gets this really nice motion to it. Back in my original file, the other thing I did-- which again, I won't show just because it takes a little bit of time. I made some wires, and I was just using spline dynamics, so it's linking points on the mesh to points on the spline. And then I have that un-linked. No, I deleted it. But if I go back to the actual render of it... You can see, you get all that really nice detail in the animation. And for having a source mesh that is that low, you actually get a ridiculous amount of detail going on there, which I was really surprised I was able to do. And even when that top part hits, it sort of crumples and has all this really nice sort of secondary animation. Even the insulators, the things that are hanging from the sort of pylons sticking out, those again, I used a vertex map on the polygons right at the very top of them, so that the moment they hit they really sort of wobble around, because that's the weakest part of it. They move around a lot. So, I hope this is kind of-- again, it's not like a finished product or anything. It'd be fun to take this to more of a complete shot or put it in a background. But as a kind of an example of the kind of simulation you can actually do in Cinema 4D that I don't think most people associate it with. And that there are a lot of interesting tools in here that if you use in interesting ways, you can actually end up with a really nice finished product. So, if you're curious about more of the work that I've done or Imaginary Forces has done, definitely check out imaginaryforces.com. If you want to chat with m
Resume Auto-Scroll?