Motion Design Hacks | Mark Fancher | Houdini HIVE Worldwide

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] all right next up we've got mark Tantra from already been chewed welcome mark hello so tell us a little bit about yourself I'm currently a senior motion designer at a studio based outside of Dallas called Rd been chewed and we I mainly specialize in working in Houdini there and I also do the I also do a course with mograph comm called stop being afraid of Houdini so I'm instructing that sort of after hours answering questions and stuff like that and during the day I'm working in Houdini pretty much full-time so stop being afraid of Houdini you see a lot of people afraid of Houdini out there well you know it's kind of funny because like at least in motion design circles it seems like there's a lot of users who are really comfortable in cinema 4d but want to achieve these level of effects that are really hard to do without a lot of plugins or hard to do without just Houdini in the first place and I think like there's this stigma that the learning curve is really high and all that stuff with Houdini and I think that part of the philosophy is that you know Houdini is a tool that gets you to a final result that result should be what scares you if you're going to be creating something massively complex that's the part that's scary I don't think that the tool itself is scary just like how pen and paper pen and paper is a really simple concept for a lot of people to understand it's it's simple there's nothing scary about pen and paper you can draw a smiley face with it or you could you know come up with general relativity and be the next Einstein or whatever you know it's all about the tool being as easy as it is for you to get to these crazy results that you're after so that's sort of what my kind of philosophy is about Houdini when I first joined the company years ago I heard this steep learning curve steep learning curve steep learning curve and and so one of my goals over time has been to like yourself make it more approachable make it it's just another software application that that you have to learn just like any other software application you start learning the interface then do something simple then do something less simple than the next level in the next level is its its stages just like any other piece of software yeah totally and I think like one of the things is a lot of people find nodes to be really intimidating like oh my gosh like what are all these wires hooking together and like honestly you know having been in both types of apps for a while I've worked in Maya and cinema 4d and Houdini I think that it's actually more apparent in Houdini to see what somebody did to achieve a certain effect if you open up their project file you get a flowchart that is a logical order of operations tells you exactly all the steps a person took and in what order to get to the desired result and I think with a lot of these hierarchical applications or everything's buried in menus and stuff like that that apparent that connectivity is not as apparent as it is in Houdini so I really think it's about you know yeah a big node tree can be kind of scary to look at it first but really if you think about it it's it's all laid out for you so there's nothing to really worry about you just got to take your time and go node by node and just see what was done to get to a certain result and I think that once you kind of get past that fear of you know node trees and and a fear of a new workflow you actually see that you're just taking a bunch of really small steps to get to something really beautiful at the end you know yeah thanks and so today we are your presentation what we're gonna be covering so I think what I'm gonna be doing is I'm gonna um you know briefly I'll be talking a little bit more about sort of my approach to Houdini and then I'm going to be going into doing some breakdowns of some work that we've done it already been chewed lately a lot of I think what happens in motion graphics is we work really fast and we have to come up with tricky solutions to get around issues that we can't fully troubleshoot so I'll kind of focus on a little bit of some of the hacks that I've come up with to kind of get around tight turnaround when you gotta just sort of art direct something because like art directors got like a crazy request and you just have to make it sell without maybe re simulating something ten thousand times to get it to land exactly right so I'm gonna kind of do that in the context of breaking down some of the projects that we've worked on and kind of go over some of that stuff right on looking forward to it let's jump in cool thanks hello everybody and thanks for joining me today my name is Mark Rancher and I am a senior motion designer at a studio based outside of Dallas called already been chewed so a little bit about me like I said I'm a senior motion designer I do mostly work in Houdini but a lot of work in cinema 4d and After Effects as well I'm also the creator of the stop being afraid of Houdini course which is available on mograph com a little bit more is I'm a self-taught generalist background it's been a little over ten years now that I've been studying and working in computer graphics on my own and it is absolutely a hundred-percent my obsession my hobby and thankfully now my career finally so my journey now finds me working in Houdini full-time for the past three years which is a really great place to be and so I just wanted to share a little bit of my personal work so you can get more of a kind of a sense of what types of things I'm doing with Houdini so here's that [Music] all right so I just wanted to talk about the studio that I work at already been chewed is a motion design studio based out of Dallas and we work with all sorts of clients in sports apparel etc who do a lot of work that involves product launches and promo graphics and product visualizations and stuff like that so we are a team of generalist specialists there are about eleven of us and everyone sort of has a superpower and then everyone can also kind of do a little bit of everything so it is a really fun and collaborative group and it's been honestly just a great time working there so far so this is a couple images of our new studio space you can see we got a nice basketball with the TV on the back board some cool signage a lot of graffiti bricks and up there in the right-hand corner is the man with the plan my boss mr. Barton Damer he's also the founding artist and creative director I've already been chewed it's it's really funny we just finished renovating this place probably two weeks before the whole coronavirus thing went down but I can't wait to get back in there hopefully soon and so just to get a little bit better of an idea of what kind of work we do had already been chewed here is the already been chewed real [Music] [Music] [Music] [Music] [Music] [Music] [Music] [Music] so you can see we do like a lot of product videos watches launches sports related stuff and yeah it's really fun place lots of variety alright so what are we gonna be talking about today first what I wanted to do is just briefly touch on my some of my philosophies about how you should learn Houdini since I do have a course I figured I might as well talk about it for a second and you know kind of also touch on some of the challenges that people face with the software and then later on I wanted to dive into some of the problems that have come up for me when I'm working in design and some of the solutions i've come up with to get a project over the finish line and sort of a polished way so first things first Houdini is easy I say this all the time and my co-workers give me a little bit of crap every now and then when they know something they're asking for is gonna be super hard for me to do they just say but I thought Houdini was easy and so I eat my words from time to time but um I'm here now to double down and say that Houdini really is easy and I mean it like for real it's easy the fact of the matter is that Houdini is just a tool and it can be used to do easy things or can be used to do complicated things just like that example that I mentioned earlier I think in my intro about pen and paper just remember that you're the one who got yourself into the mess of having to do a Phoenix water horse backflip explosion it's not Houdini's fault so things to keep in mind Houdini is a sandbox I think many people are actually kind of afraid of the critical thinking and outside the box type mindset you have to have when approaching such an open-ended sandbox like software I think like one of the things that frightens a lot of people is a blank page you know it's you have almost too many options of something that you can do and I think that you know just sitting around and in working in Houdini and going through tutorials and learning things and repetition you eventually get used to like what types of moves you can use to accomplish certain tasks and I think that you know you'll eventually get into that kind of sandbox mindset the more experience you have with it you just have to be kind of patient and give yourself some time to get there next thing is maybe slow down a little bit I think a lot of people have a maid like field this major pressure and this major rush to have Houdini fully learned and be making insane Sims day one and that's absolutely just not how learning Houdini works I think that if you do dive right into the deep end and start learning VEX right away you might overwhelm yourself and get frustrated whereas if you take in like a more you know step by step approach easing yourself into the software learning the interface learning some of the basics ops nodes before getting into simulation stuff like that I think is all like you know really important to kind of you know help your approach feel more more fluid and and ease yourself into it the next thing is remember it's not the tool that's difficult it's the project that's difficult when you see a beautiful painting you know at a museum or something nobody thinks oh my gosh like how did they learn paintbrushes I mean that's amazing it's it's really not a paint there's nothing amazing about a paintbrush what what is amazing is what people are able to do with the tools that they have and that's sort of on you that's your responsibility you know I think that this is sort of kind of a thing that plagues our industry at least a little bit it's people obsessing over what tools somebody use to make something you know oh did you use do what render engine did you use how much what was the render time at the end of the day is the image look beautiful yeah and it probably doesn't matter what render engine they used because the artist is good enough at whatever software they're using to make a beautiful image that makes you happy when you look at it and lastly remember that you still have to be an artist this kind of goes back to what I was saying in the paintbrush example but I fall into this trap all the time I'll sim something and I'll think I'm gonna sim this I'm going to let the computer do all the work and it's going to look amazing but that isn't always you know the case for example Brian our lead animator at already been chewed he works mostly in vanilla cinema 4d but people assume a lot of the shots that come out are that he produces he they're assuming that they were made in Houdini and I think that that's because Houdini has sort of the word Houdini has sort of mutated into an industry buzzword for quality and while it seems you may have an advantage in our industry if you do know Houdini I don't think it's a hundred percent of golden-ticket you still have to be yourself to make pretty and polished results and at the end of the day and that's kind of what the rest of my speech is about fixing crappy renders you made in five seconds in Houdini and that's sort of why I'm calling it motion design hacks I call them hacks because I'm not entirely sure if they're the most efficient way to do whatever it is that I'm trying to do but they seem pretty straightforward for me and hopefully they don't feel too convoluted to you so I pulled this quote that I think is pretty great and this has to do with computer programming and coding but the quote is the first 90% of the code accounts for the first 90% of the development time then the remaining 10% of the code accounts for the other 90% of the development time more or less when you translate this into a 3d language it's yeah you know setting up the initial prototype might take you you know a couple hours and it feels really satisfying and then I feel like the other 90% of the time that you're working on a project you're actually just troubleshooting what went wrong with your initial prototype and trying to get it to work dealing with render issues missing frames all that stuff it's it's a lot of troubleshooting so that kind of brings me into what challenges we face in motion design when we're trying to make when we're trying to use Houdini and use simulations to make our make our animations so sims are glitchy and erratic but we need smooth motion a lot of times all like run into RBD sim and it's kind of glitching the collisions are a little bit glitchy or the movement is a little bit glitchy so that's one of the challenges we have is kind of smooth out some of these sim issues Sims also tend to have a life of their own and we need to art direct them this is sort of one of the things Houdini's famous for is its art direct ability your ability to kind of get in there and have control over literally anything other challenges we have a lot of fast turnarounds and motion design so a lot of the you know fixing the glitches and stuff that's actually gonna happen post sim versus riesen so instead of orissa mean this thing what we're gonna do is we're gonna find every possible way we can avoid read running the long simulation and just try to fix it you know fix the cache data you know if we can and then also good enough is a relative term I think that in a lot of these tricks that we're doing will work for maybe commercials or product launches there's something like that but they might not be suitable for for like a film project or something like that and I think also you know having not worked in film I'm not entirely sure but I think that you know there might be some things that you could get away with in film that you absolutely can't get away with in motion design so I think it's all sort of relative depending on what perspective you're coming at but I'll mostly be focusing on the motion design end of it in fact entirely today so alright so the first example is going to be going over polishing effect and the basically what we did what we're gonna look at is a technique I developed for a recent project and that was more or less to illustrate a Bluetooth connection so we got a project where the goal is to show Bluetooth connectivity between two objects and one of them was a phone and the other one shall remain nameless but when I'm briefed they'll usually get some information like hey we want to show data particles that represent a Bluetooth connection so okay that's great you know we have a lot of creative freedom in that and I decided like I'd seen this magnetic dipole effect done before and I thought that might be a cool approach so magnetic dipoles sort of like this image in the background this is where the the inspiration came from was showing maybe like this image right here like we have our one of our devices and it is sort of connected but that to the phone via these arching lines so I know that this has been done in Houdini I've seen people do talks on it I think Simon Fiedler did a talk about this briefly maybe a year or so ago and I just thought you know this is a cool time maybe I should take a crack at it so I went looked around on the internet and like you do you end up finding the formulas and I kind of didn't really know what was going on with some of these formulas but these are what I came up with I found this one this is an electric field formula and more or less this is a vector that points between the current position in space and one of the charges and then this is the radius of that charge and this electric field is determined by the ratio of those two squared and then we have a constant here which I ended up throwing out I think in my example because it didn't really seem to have an effect a lot of this is trial and error so and then in the case of a dipole since we have two of those it's just you add this up so so this first one you know this is this is the positive charge would be e1 and then the negative charge would be e2 so let's get into Houdini to kind of see what this project ends up looking like all right so here you can see I've got a set up here I've got my - I've got my two spheres here and basically what I want to do is connect those lines coming out of this one and leading into from the one on the left into the one on the right so what I found was this I created a little volume here just a box volume and initialize it to a velocity vector and then I used a volume or angle here to sort of implement that formula that we were talking about on the other page so here we've got this the the I'm just setting the velocity vector equal to that q1 over the radius raised to a power of two which I'm determining down here so when we put a volume trail on that you can kind of see that we have that sort of magnetic field looking result and so more or less I've just scattered points and I'm trailing them along through that velocity so if I grab this node and kind of reposition those particles you can kind of see how they react in this sort of magnetic field looking way as this wrangle is looking up the point locations of each one of those spheres and then determining those force vectors and the radiuses and doing its thing alright so the next step in this setup is to I want to grow these lines I don't want them to just like already have been appeared like this but as as these spheres are sort of moving apart from one another I want to have the lines kind of grow on in a random kind of carve like way so the next node that I had was what i smooth things out do a little bit of resampling I create Mike curve here at KU I create my curve you attribute and then I do my random carve here and so this random car is more or less when it does it just takes this progress slider that I've created down here and it allows you to more or less carve the object by moving the points officially the points I'm gonna see that it actually is just moving all the points of the spline along the swine so when I go back here and turn off my points and click play you can see that we kind of have those splines growing on and then it just kind of grows into that shape that we're after cool then the next thing I wanted to do was I wanted to have a little particles kind of flaunt floating or flowing along these splines now because of the way pop I'm sure that you could do this in a pop sim but because of the way that these these lines are kind of moving around and changing position I didn't know really how that pops in would interact with that so I decided to make my own thing that sort of moves the points along those splines on its own so that would be this thing right here called the point mover so if I just play on that you can kind of see we've got a whole bunch of points they're all moving along each one of these splines if we kind of look at what the VEX is doing here first what we do is we assign a random random number of points per magnetic line so we want to have you know a number of points ranging between a hundred and five hundred say if we wanted to we could actually have some have only ten lines and then if I and then this right here is just kind of a distribution of how that random distribution is distributed across those points so then the next thing that's done is we determine a flow rate for these particles so you can see that what I wanted to do is I wanted to have a I wanted to have each spline have its own sort of speed at which the particles all the particles are moving on their own like a random speed range so that's sort of what this is determining right here and then within each primitive I wanted to have the individual particles all have their own speeds as well like if I go down here you can see some of these particles are moving faster than others but the cool thing is now that this is sort of all locked in in stops so it's not really we're not really depending on a particle simulation at all so now what this basically does is it assigns an ID it determines what the random flow rate is per particle and then it advances it along by the current frame number and then it determines its UV position based off of that information using random information from its IDs and the rate per prim and rate per particle it comes up with its UV location on each primp and then we mod it by one so basically that's once the particle flows all the way along this curve and goes to the other side once it goes over one it just starts back over that's what the mod one's gonna do for us there and then we get our position vector from the actual spline itself then we add our point in the position of that UV on that spline and then we set its ID and its curve you attribute then we remove the primitive finally so that's how we end up with something like that and if I'd if I turn off the time shift you can see that all those particles are moving along with those splines and then what you would end up with is a render based off of this set up that looks like this not so great is it you can see the we've got a kind of a number of issues going on with this so the first thing is the line length is inconsistent you can see these points are all kind of jumping around here and changing their positions on the curve because that volume trail that we're looking at is kind of you know it has to reinterpret where the particles are flowing as they change throughout space and it changes the length of the line and it changes the positions of the particles on the line so that's something we need to deal with so that's the first issue the next issue is we have inconsistent end points you can see that these points up here around this sphere they're all just kind of starting in the middle of space whereas over here they're kind of converging on a singular point so I kind of want to like maybe ramp that off and kind of get that all sort of positioned nicely also another issue if you might be able to see right along and here there's some you know some very faint lines that keep popping in and out what what it is is because we're doing a velocity calculation for motion blur particles that reach the end are moving back to the beginning point and that in in the difference between those two frames it's calculating a huge motion blur a huge velocity and resulting in a huge amount of motion blur we want to sort of limit that from happening so that's another issue that we need to deal with and then it's also there's another issue that's kind of hard to see is that from a wider view some of these lines disconnect if you keep your eye up here you can see one of these strands is actually disconnecting then the particles are moving in a or moving backwards and lastly I think that the whole notion of this is a little bit rigid in terms of the way the splines themselves are moving so it'd be nice to add a little bit of secondary motion to that so here this is our initial setup right here this is sort of what I think is like the tutorial the base concept version of this effect and over here to the right is the production version of it and these little purple boxes are things that I did to address those fixes that I mentioned on the previous slide so if we zoom in right here you can see let's just go down one by one so what I wanted to do is I wanted to you know bring these end points together and also fix the length of the line so if I look at this volume trail here and you go this sort of illustrates what I'm saying about the line ends changing is this this point where all those volume trails are converging is sort of doing some chaotic stuff here so what I decided to do is just take this end emitter point the the goal point and use it as a group and delete those points so now we have just removed all those end points and you can see they're still doing a little bit of jittering around but we can fix that in the next step so here we've gotten both of our our line lengths they should be more consistent not doing so much chaotic stuff in there and it's gonna make us easier for us to sort of fix what is happening at these end points in the next step so the next step was move the end points so basically I'm just going to go through a for loop on each spline I'm gonna find the first point and the last point and then I'm going to move them to their goal positions which is converge on those little areas right at the end there cool so that kind of gets the line length situation sorted out for us so I'm gonna I'm gonna switch these two on so now we can see what is going on here it looks like the points are behaving much more smoothly and the the lot of these these arcs are looking way more consistent but this is the issue the other H I was talking about was the long line issue the long arc issue you can see that based off of what this move endpoint VEX is doing just basically taking those endpoints and putting them back into the center of those circles we have lines in this in this set up that want to detach themselves from the endpoint so if they are too far out the volume trail doesn't have enough length in it to bring it all the way back to the to the goal point so how are we going to deal with that this is an issue that sort of has come up with for me before and if I just go up here I can kind of check that a little bit more you can kind of see some of these lines they remove themselves some and then another one will remove itself and another one and another one so you'd think you know maybe I could just remove the lines that are disconnected but if that kind of is always changing some of them actually can come become reconnected as this as these particles are flowing as these splines are flowing along and that's really not what we want so the way that I came up with to solve this was what I call the kill throughout all time setup and so I've used this before on products a lot of times we have a situation where we'll have you know imagine like a shoe that it has particles falling on and around it and what we need is the product itself to look clean no matter what in the shot and we could you know try to come up with different ways of deleting particles off of the shoe or we could just say that any particle that has hit this shoe at any point in time during this scene remove it from the scene and that has worked really well in the past so I thought maybe what I could do is I could kind of backwards that and say any point that removes contact from this end point I want it to be removed for the entirety of the scene so this is sort of the next little hack here what I do is I create a broken attribute and I initialize it to zero so we know that broken denoting that the line has been broken like this would be a broken line but for our purposes everything's initialized to zero and then we jump into a solver so if I jump into the solver I can see what's going on here what happens is we bring in the sphere and we bring in the splines and if things go along here so we've got our sphere and we've got our splines and what we're gonna do is we're gonna create a group out of the points that are intersecting with the sphere just using a you know group by bounding object then what I want to do is I want to promote that group into two primitive level and you can see that some of these splines that aren't connected don't get promoted to that group because they don't have points that were in that little area over there on the end so then what we can do is we can do a group combine and we can say that the broken group is actually everything but the contact group so I'm more or less just selecting the inverse of what we just had then what I want to do is set the broken attribute so that attribute we initialize up here I'm going to go in here and say we're gonna take it and we're going to set it to one so we're using the group as a mask to set the broken attribute to one then we're gonna merge it with its previous frame over time basically I said we're gonna set a value that says did it ever break and we're going to look up a primitive value of broken on prim Nam and if it and then what we're gonna say is that the actual broken attribute on our geometry is the maximum of whatever its current broken attribute is and whatever it's broken attribute was the previous frame and it seems confusing but over time that accumulates and what you're left with is all the broken pieces are gone you see before this is a piece that broke and now it's gone and it looks like this piece hasn't yet broken and it looks like it has broken but even though it has even though some of these pieces haven't broken let's look at another one like it like this one this piece right here hasn't broken yet back here but it will break in the future and you can see that it just removes any and all pieces that have broken from our simulation so we've cleaned that up using the kill throughout all time setup cool so let's enable that and then the next thing that we wanted to fix was the motion of this it's a little bit rigid as it is now so we wanted to do what I like to add to a lot of my setups is my spring solver setup and basically if we just dive in here and look at what this does what this does is it's a little solver that more or less takes the position of the previous frame computes a little bit of velocity and then does more or less a spring spring equation on it and then you can set some damping and all that stuff and it kind of results in a smoother motion so if I go back here it's gonna highlight that and click play you can kind of see that smoothing out the motion just adding a little bit of spring with a lot of damping goes a long way to make this feel a lot more organic you can see it's kind of got like just some more organic bounce to it which is kind of nice cool so then the only other issue that I think that we had at this point was what was going on with the velocity of the particles that were resetting yeah that motion blur that was really extreme going back to the origin so let's look at how we're gonna fix that part obviously we could we do a trail to compute the velocity but then what I wanted to do was more or less just use this wrangle to fix the velocity so it's a really simple setup all it does is it looks at the what we do is we offset the we offset the whole thing one frame into the future and then we compare the two values so the V 2 vectors simply whatever the velocity of the current point is in the future in the future one frame we're going to do a comparison and say if the current speed is greater than the speed of the particle one frame in the future just set its velocity to whatever speed it is one frame in the future and that sort of gets us around that issue so if I kind of illustrate this by turning on my trails my velocity trails you can see we've got some of these particles are just zooming really fast through the center of this project and then whereas the rest of them all just sort of have normal velocity vectors now if I turn on this fixed velocity you can it's kind of hard to see but that that big velocity vector that was going through the middle of our scene that Green Line has now disappeared but everything else still has a correct velocity vector on it and that's it so once you do that let's take a look at the result so you can see that the particles are all sort of moving smoothly there's any crazy streaks we've you know sort of like the points converge in a logical way it has a nice springy motion to it so this is sort of just a really hope this is just sort of a interesting example of how we can take our really basic prototypes and get them into a position where they look ready enough to put in an ad for something all right so next I wanted to talk about another challenge which is matching style boards so another recent project we had was had a bunch of interesting challenges associated with it and one of them was how we're gonna match a certain style boards we had gotten so what we did was what happened was we received a Photoshop document that was more or less just a painted version of what you see in this background here you can just you could tell that what happened on the agency side was there was just a there was a designer that did the pixels they painted them in they nudged them around how they wanted them they got the results they were after it was pretty standard stuff now full disclosure this is actually my result for this section I didn't feel like photoshopping a fake target frame for the thing I'd already made so let's just pretend that this is the brief we've received from the client and now we're tasked with creating this as a particle simulation that flows but holds this target look now that just may seem pretty straightforward at first but it ended up being a little bit more complicated than we initially thought so naturally you might think okay I'm gonna take this head you know alright we're going to take our input geometry I'm going to block out my lighting to match that frame and then I'm gonna turn it into a particles hit sim light the particles and we're done so let's take a look at what that might look like if you were to do that so well you can see here is we've got our head obviously emitting these particles and we've lit it but there's absolutely no definition there's no way that this even looks remotely like a head or like the style frame so we need to investigate this a little bit further obviously the particles are not like showing like I mean they're reacting for the lights but there's just no contour of a face in here at all so I thought at this point it would be good to just go back and look at what maybe we can just try to get this using a basic scatter you know let's not sim it for the moment let's just trying get there and see what we're dealing with by looking at the particles themselves on the emitter so this is what the head looks like with 300,000 particles you can see that the lights are picking up over here and that they're picking up over here but the problem with this is that this is way too dense so you'd think maybe you only can reduce the density and see what that looks like you know we want to have some holes in the in the face you want to have some particles larger than others we want it to be a little bit broken up and this is way too uniform so reducing the density you can see we start to lose definition at a hundred thousand particles this almost doesn't look like it's lit at all it just looks like sort of I mean there's a little bit of lightening happening but it's just more or less you can't even really tell that that's a face and then reducing it even further to ten thousand particles which is really closer to our target you can see that there there's really no it's it's just even harder to tell what's going on and we compare that with our style frame we are very much not there it looks like this is actually kind of a combination of these two looks that we're after you can see like we've got the actual lighting showing up over here in our frame but we don't have the data but we don't have the right density the density needs to be something more like this so I'm gonna hop over new Houdini and just kind of give an overview of how we conquered this little challenge all right so here you can see we got our base geometry for our head of our man that we got off of I think it's a 3d scan and then we did our pop sim and I got our cache here and you can see that it's just it looks there's just no way to tell that that is a person even if you zoom in and you know look really closely at it so so this is the thing that we want to fix now the thought that I had was what if we decide what if instead of using actual lights to light this head we used lights that we used sort of information about the positions of the lights to adjust what the particle scale was based off of the these positions of the lights in relation to the body so over here I created a couple point here I added a point up here and one down here and these are going to be our new light locations and I'm just gonna set an ID for each one I'm gonna call it light ID and then what I'm gonna do is I'm gonna move it into this for each look I know what the for each loop is gonna do is it's gonna take well first off its going to copy a sphere onto each light location that has about a million points scattered on it so you can see that sphere right here it's just so a sphere that has a ton of points scattered on it and we're actually going to use these points to project rays onto our geometry so if I take on single pass you can see that it's taking this light location up here and we are projecting points from that sphere onto the object it really kind of looks like lighting more or less this is taking care of sort of where these particles are appearing on our on the head of our guy here so what we do is we just we simply set normals based off of the positions of the particles you can kind of see we've got the we've got the normals there those normals are all facing away from the light and then we project them along those normals until they hit the object and then on the Ray what we're doing is we're saying let's create a ray hit group and inherit the normals of the object that we just hit so that's how we've got these new normals on all these particles now if we zoom into this little circle you can kind of see that there's a little cutout of a head in there that has been projected onto this geometry down here so if I then then what's happening here is I want to actually use the normal vector that has appeared here and I want to also compare it with the light sample direction so I have a light sample direction vector here in yellow and now basically what we can do is if we take the dot product between the normal of our new particles that have been projected on here and we we do a dot product of that with the direction of the light that it came from we can create our own illumination attribute and use it to control the specular fall-off of our light so if I just go over here to visualize I'm going to turn off this visualizer in this visualizer you can see we have this light illumination attribute that we've created here and now I could actually control if I remap that I can control how that light falls off from that dot product just by remapping its range to an attribute like so and because of the way this loop is set up it's designed to create the attribute on the fly based off of whatever it's light ID was so if I just set this to not single pass it will do that for both lights and you could potentially add as many lights as you want to do this but for our case to work so now what I wanted to do is actually take this particle sin that we had and apply this sort of a trapeze attributes to it I'm gonna just work with the single scatter and not the simulation for right now just to kind of illustrate this point but more or less we're going to do an attribute transfer we're gonna transfer all those light attributes back on to this object and then we're going to color them like so so this one is simply this this R angle right here is just adding the illumination attributes that we got from each of our particles back together then over here to kind of get a better idea of how that works with lights if you were to assign an individual color for each one of those attributes you can see we actually have a much more defined kind of look that we're getting really close to what we had for our style frame based off of this dot product fall-off type thingy that we're doing with these attributes so when I switch this back to our simulation even though we're simulating all these points right here because we're doing an attribute transfer and kind of masking off just around the areas where this is going to show up our particles are now kind of flowing through this lighting setup as they pass through this attribute transfer node and pick up those actually those lighting attributes so now that we have those lighting attributes we can use them to our advantage to kind of create more you do a little bit more work to bring this to bring this thing home but before we do that first things first now you might notice that from this angle everything's looking pretty good but if we decide to remove maybe we say decide to delete the dark particles so now we've got many much less particles we've had before what we had was four hundred ten thousand just using this little vex threshold here I'm just going to kind of blast away particles that drop below a certain black point you can kind of see that then you can kind of see through the object and you can kind of see that depending on what camera angle were at we're actually seeing particles that were illuminated on the back end of this guy's head so the next thing I came up with was a similar trick to try and deal with occluding the back facing geometry of this particle soon so to do that what I ended up doing was a very similar setup this time I did it with a grid I took a grid I scattered a whole bunch of points on it I think yeah another another million points onto the grid and then I looked up our camera so here what I've done is I have assigned the camera that we have in our scene so back up at object level we have our camera position here and then if I go back in here you can say what I'm doing is I'm going to look that up and I'm going to do the Optra norm more or less I'm going to build the transformation matrix attribute based off of whatever the transform of this camera is then what I'm going to do is I'm going to use the crack transform formula to pull out the vector of the camera position and then I'm going to create a point there and so if I you can see I've got my camera here and inside this particle setup I've now instantiated a point right at the right where the camera is right where the camera lens is so I'm going to do is I'm going to copy this grid with this scatter onto those points and just offset it a little bit so you can see we've kind of got this projection going on in front of the camera if I hop into that camera you can see it's kind of covering my entire field of view now what I wanted to do is I wanted to project along the normal so I'm going to create a normal attribute for each one of these points that's based off of its current position minus the position of that camera point that we had up here and so if I hop over if I hop out of this real quick and kind of show the normal as you can see that the normals of all those points are pointing away from the center of that camera lens cool so next thing to do we just project it back onto that geometry like we did before and you can see that it punches out a little hole in all those points as it projects it on to this head and if we go back around this head you can see that it kind of shadows itself nice it's almost like there's a spotlight on the on the camera that it is sort of casting a shadow or casting light onto the geometry of this man's face and then the next thing we want to do is we're just going to delete the Ray group and then create the camera shadow attribute the camera shadow to attribute we're just going to initialize it to one basically saying any particle that is in this system is a camera shadow attribute and we're gonna use an attribute transfer to mask off where the other particles were so if I go over here and turn on visualize you can see our mast camera attribute is only these particles but there's other particles that are occluded from view that we want to mask so if we throw in the mask cam shadow you can now see that we can't see through this now if I hop through into my camera position lock my camera and change position it is reprojected those particles onto the face in masking out the particles that are facing away from us so I can kind of do a little bit of before whoops and do a little bit of a before and after if I turn this off you can see through the head turn it on you can't you can see as I tumble takes a second and just updates this is one of those things there's there's probably a better way to do this but whatever it ended up working for this project so I thought that was kind of cool with that out of the way the rest of this is just the normal cleanup we're going to randomize the skill the particles where we're gonna randomize the skill the particles based off of the you know just based off of its ID attribute then what we want to do is rename random particles so that it isn't just like fully constrained to the areas where this light these lighting attributes have hit the geometry so I'm just going to turn some of those back on and then I want to scale them by the color which we've we've which we've determined here based off of those alighting attributes so we've got particle scale based off color and if kind of look at that you can kind of see what we're looking like here I'm just using a little sprite attribute to kind of show we got this random scale going on so if you just check out a playbook of this real quick you can see kind of the issue here with just taking the setup raw is that it's got this popping on and off that happens as these particles are traveling through this illumination attribute some of them are jumping into illumination and jumping out of illumination really quickly and therefore they kind of their P scale is being adjusted very very drastically so the way I like to get around that is I just hacked my own spring set up let's look at light zero for example if I just go in here and look at this basically I did it as instead of using vectors to determine like the springiness of the positions between the different points in time I just said it all the floats and told it to adjust the P scale accordingly now right here you can say actually modify that up top to put in any old attribute put in light zero for this one and put in light one for that one and then I did it for the overall piece scale as well just because I ended up using these individual light attributes and I rendering setup as well so I just did I just did I just added damping to all of these things and then cashed it out so you can see those particles gradually drift on and then fade and sort of vaguely adhere to this shape of this head in a way that very much looks like a particle simulation but also very much looks like it is being illuminated by real lights but it's not it's cool we've actually used fake lighting setup to kind of you know trick our shader or our particles our P scale values into acting as if they were affected by some sort of lights all right and as we go into the last section of the presentation I just wanted to share a project breakdown of a cool project we worked on recently for Malibu boats 2020 digital campaign basically what we were doing was we were going through a we're going through a factory in a kind of an abstract way and forming the elements of this boat so before we get into the full-on breakdown let's take a look at what that what the final product looked like [Music] [Music] [Music] [Music] [Music] [Music] so for this project a couple of co-workers flew out to the factory where they make this stuff and grab some reference you can see here this is some fiberglass and in fiberglass seems like it comes in a couple different forms one of them is this like sort of dusty fibery kind of crystallized looking form and the other one is this very organized sort of it almost like a carbon fiber pattern look to it but we wanted to also kind of incorporate this fiberglass look with the resin look basically the fiberglass is like spread over the surface and then resin is applied to the fiberglass so that was sort of our challenge in the type of thing that we are after in this project so R&D what we did was we kind of looked at this and tried to recreate these elements in 3d the best we could more or less in my world that was creating a lot of splines a way to make the splines grow and then instancing little tiny crystals all over them to try and achieve this type of look that you see on the left here so here's a couple other examples of of shots that we created trying to recreate the fiberglass effect some macros of those little crystals this was sort of a combination of that carbon fiber weaving pattern in the middle here with the crystals on the outside and the more randomly scattered fibers all around the outside of the screen and then zoom in close up of that weaving going on and then when it came time to apply the resin we wanted to come up with some other abstract effect to apply the resin to the fibers so we did this sort of pyro simulation it was a pyro simulation with gravity and then we just meshed it and then advective bubbles through it all so I knew that in my career it was only a matter of time before a client had requested the remake of Dave Stewart's famous invisible paint brush goop simulation and so this is sort of my take on that but hat tip to you Dave that was obviously clear source of inspiration for a shot like this so yeah resin pouring this paint brushing resin spreading effect this pyro down here pyro effect and then also of course the the fiber weave these are just sort of the next phase in the R&D is uh kind of get it rendered and see what it looks like so I just wanted to do a quick little breakdown of one of the shots that I thought was kind of fun and that was the power wedge liquid metal formation I'll often get a brief like we need this to form out of welded liquid metal and but there's no welder and the parts need to come out of nowhere and so then I kind of just get to figure out what that might look like and it's a lot of freedom and it's it's really fun to kind of sort those things out so I'm gonna kind of talk through my thought process on this shot you can see it's this sort of hot glowing welded and some Sparks and you're just forming what is the power wedge the power wedge is actually a little like underwater spoiler that comes out of the back of the boat that helps keep the boat the the back end of the boat down into the water so it creates a bigger wake so that you can you know wakeboard and if you're wakeboarding you get like you can get more air off of the wake because it's it's got a steeper slope to it but yeah um so this is the effect I wanted to kind of go over how I came about making it so let's go on to see what that was like okay yeah so in the development phase I thought to myself well cool what we could do is we could just flip gravity upside down and create an inverted Collider out of this thing and just sort of fill it up with fluids and adding some extra divergence to a flip sim and filling it up from the bottom to the top because if gravity's facing upwards this is the actual this is actually the bottom of it up here but um yeah adding some divergence to the emitter it caused it to fill up and then fully encapsulate more or less the shape of that power wedge piece of geometry but you can see there's some problems with it there's some vertical or kind of swirling going on over here and it just generally isn't like the perfect shape of the power wedge so the next step that I would do to make that look better is I would do the boolean fluid surface I basically take that fluid sim and then I boolean it using the new boolean that's it's been in there it's been in Houdini for the last couple versions but it's super solid and I use that boolean to kind of create a clean outer shell to that fluid simulation you can see that it forms the geometry perfectly and we also get the UVs back so that we can have like our power wedge texture on there and everything another thing while doing the while we're on the topic of boolean is I added a boolean seam as well so you can kind of see that here the boolean seam kind of travels along with that fluid sim right on the edge of where the original fluid sim meets the actual geometry so that that was this this comes in handy a lot later on when we start to do things like use it to create the hot attribute so wherever that boolean seam was I was transferring the attributes of its location back onto the power wedge here and using it to create this hot fall-off which is that red attribute that you can see there that red attribute was then used as a scatter for pop fluids and then this is this is how we're gonna create that sort of magma like stuff pop fluids has been really great for sort of large-scale surface tension setups previously like using surface tension and flip is really is really amazing but it's really hard to do at scales that are like more than just a couple droplets in this sense this is pretty large pop fluids ended up being perfect for this and it seemed really fast and it gave us a nice little globular kind of shapes that we were after and then this is just a visualization of the age fall-off for the heat in that kind of magma liquid metal that that sort of like liquid metal form that it has the next thing would be if it's for welding we've got to have Sparks so similarly use the boolean seam as the source for the emitter for this and then just use a really high substep pop sim I think it was like eight sub steps that's high for me eight sub step pop sim with some really high frequency noise so that these trails that we created here weren't so linear they kind of have a little bit of erratic curling to them then the next thing was to apply a wet net based off of that leading boolean seam edge and that wet map just is a kind of a fall-off to kind of show the the the metal cooling down you can see down in the lower right hand corner of the UV space version of that so that wet map was sent through cops in output as a emission texture that we used in our final shader and then next Li you kind of see all those elements coming together here but all of these all these things the sparks and the the liquid and everything was used as a source for another pyro simulation just to kind of add some smoke to the shot and lastly I just wanted to kind of wrap the whole thing up with a behind-the-scenes view of that spot just because there's a bunch of cool clay renders that we like to do to kind of show some of the process that goes into making making these spots [Music] you [Music] [Music] [Music] [Music] [Music] [Music] alright so that is it for my presentation I just wanted to say thank you all for checking it out and I will catch you next time
Info
Channel: Houdini
Views: 22,142
Rating: undefined out of 5
Keywords:
Id: qSkG0ac5RmU
Channel Id: undefined
Length: 63min 55sec (3835 seconds)
Published: Thu May 21 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.