Destruction FX | 1 | Fracture the Geometry

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
in this video um we're going to take our procedural house that we modeled in the last one and we're going to prepare it for a simulation and we're going to do everything inside sops we're going to prepare it for the simulation in sops and we're actually going to simulate um the both most part of the sim and sops too recent versions of houdini um side effects have promoted a lot of the dynamic tools into sops so you can do a lot of stuff up here simple stuff without actually having to go into a full dynamic network so i'm going to demonstrate most of this uh purely in sops just to see how far we can actually push it and to talk about some of the limitations as well so um before we do that i want to uh prepare this geometry um for the simulation by breaking it up or pre-fracturing it and then applying constraints to effectively glue it together so we can then control how it falls apart so before i do that this network takes quite a while to process i just like to write out this geometry to disk and to do that i'm going to hit tab and type rop and choose a rock geometry output this is quite an old school way of writing out geometry but i'm just going to change the name here we'll go all the way up to where it says bgeo and we'll call this um house model version one then we can hit save to disk and that will save our single frame now in order to read that back in i'm going to use a file node and what i like to do is just copy the parameter right click copy parameter here on output file and on the file node here it says geometry file right click paste relative reference this just makes sure whatever i read out right out from here is always being read into the file node and uh this has effectively um cached it up really or saved it to disk now we could have plugged in the file node directly and changed this to right read and write and write it out from here but i don't like to do that i like to see a physical break in the network because i know here visually that i've broken the proceduralism but it's a purely a matter of style how you want to work in houdini that's the wonderful thing about houdini it leaves all these wonderful frameworks for you to choose how you want to work so you can just pick your own style it doesn't really matter so what we want to do now is we want to process this whole house geometry here and i want to break up the bricks to look like bricks and the glass tiller glass etc etc and in order to do that i need to separate out those individual elements now fortunately we made all our groups if you look here we have our bricks our door our door frame etc and this will allow us to separate out the bits we need and to do that i'm going to use a split node so let's hit tab and type split there we go let's just plug this into the split node so what the split node does it does like a combination of um a delete node and um a merge node that kind of thing and it works quite easily quite straightforward what you do in the group here you put the group you want so say let's choose out bricks and then that's what it displays it separates out that group for you so out of the left hand input comes the group you've chosen outbricks and out the right comes everything else now to preview that i can actually add a null i like adding nulls to preview what comes out of outputs here so i plug this first output and we can see that is in fact the house building and if i plug the second output we can see that is everything else so these split nodes will allow us to partition off what we want so i'm going to call this null so i know what what it is bricks in i like to label and put nulls in so i know which branch is doing what so now that we've got um that bricks in um if we middle click you'll see that we've got just our bricks geometry but we've preserved all the empty groups here um out of the other when we branch off each piece of geometry we'll keep all the groups but we'll obviously keep the group that has our geometry in it now this may or may not cause problems i just like to tidy this up really when we combine it all at the end we'll get all our groups back but for now i'm going to do a delete group node or rather group delete node let's plug it in and on here i can simply say just delete the empty groups the unused groups and if we have a look that's just tidied it up um that'll just save us having big menus when we use groups a bit later on or it might it may or may not cause issues later on i just like to tidy things up but anyway what we're now going to do is i want to fracture up this house or fracture up all these bricks and to do that i'm going to use some of the new newish nodes that we have in houdini if you hit tab you'll see we have this rbd section and here we have all the rigid body dynamic tools and all of these can be used in sops we even have a solver so we can do some simulation up in sops without the um full license or even going anywhere near dops which is great so they've basically packaged dops up and promoted a lot of the attributes up to this level for people to uh manipulate so uh like i mentioned that's the pipeline we're going to look at entirely doing it in sops so there's a few little hoops we have to jump through to get things to work but we'll discuss those as we come to them but the first thing i want to do is prepare this geometry and to do that i'm going to use this node here the rbd material fracture node so if i uh select choose the rbg material fracture node it takes a second or two to evaluate and i'm not going to connect it in yet because it can be a little slow to process especially on a lot of geometry here so what i'm going to do is just explain very quickly some of the settings i'm going to change before i plug it in first of all here we've got two tabs that's because it's doing two sets of recursive or doing one set of recursive breaking which means it will break all the geometry first and then it will do a second pass where it will break all those ju all the fracture geometry again and that's what can be really slow and i don't really want that kind of effect on this building so i'm just going to set the fracture level here instead of two to one that means i'm going to get one level of fracture that should speed it up a little bit now what i'm going to do is just plug that in and turn it on and that will take about a minute to process or just pause the video while that does its thing now that's processed um it's fractured up my building um but we'd like to uh preview this so um there's a couple of ways we can preview this first off we can um use an old-fashioned exploded no well not old-fashioned i'll explain why in a sec so we can use an exploded view node so the exploded view node just lets us separate geometry based on this name attribute the name attribute is quite important in houdini because it allows a houdini to know which geometry or which faces belong to the same piece of geometry basically any face with the same value in the name attribute gets treated by houdini as one individual piece so they're quite important if we plug our first output here this first output actually let's pop another null in so this first output here is actually the geometry we're going to render but plug in the second output we'll notice that's the constraints holding all the pieces together and the third output is the proxy geometry that bullet's actually going to simulate with okay but we can only we can preview the first one here if we look at the exploded view we can see that our geometry has been fractured in some areas some bricks are solid and some are now let me just delete these two nodes there is actually if you type rbd exploded there is an exploded view node for the rbd tools and this will do several things for us if we just plug in the three inputs remember to plug in the three can hold shift click click and click to select three and then just plug them down and let's turn on the exploded view so um this is a relatively new scheme in houdini to have multiple inputs and outputs now because we're passing different sets of geometry in between as you saw our rendered geometry is on the left our constraints are in the middle and our geometry that bullet's going to use for the sim is on the right we'll we'll manipulate these different geometries to affect the sim shortly but this exploded view now it's calculated shows us everything all on combinations of what's in these three inputs at the moment it's showing us inputs one and three so the full geometry and the proxy i'm actually going to turn off the proxy here which is the last input and now we just see what we saw with the the um basic exploded view which was just the um fractured bricks that we're going now the other nice thing about this exploded view node is we can turn on show constraints amongst other things and this will show us the constraints connecting those bricks together and we can see those in white now if i zoom out a little you can see it's quite concentrated in some areas on the house and not in others some areas are not affected the way houdini works out how to fracture on the material fracture node is based down here in this tab in the uh fracture level tab and it's particularly to do with these cell points and this fog volume what it does it creates a basically a volume of the geometry and adds some three-dimensional noise and you can kind of see the noise pattern if you imagine the white areas are white and the areas where it's not broken is black you can kind of see the patches of light and dark and you'll see it's quite a big pattern we've got a big splodge here and another splodge here and another splodge here um now there's a couple of things i want to do i actually what i want to do is really fracture all the bricks into pieces and then i'm going to stick them back together again to look more like brick patterns so what i want to do is just affect this noise ideally i'd like to turn the noise off so all the points are scattered everywhere but we can't really do that so the other option is to make it a very high frequency so it changes quite often and therefore we'll get a much more even scattering now again if i change all these numbers it's going to be quite slow to do um let's and the other thing is i do want to mention is particularly the na the um giving things unique names um that way you can deal with stuff later on in the network much more easily we're going to be working in parallel meaning i'm going to branch off again in a second makes a fracture up other pieces of geometry with the own fracture node and then we're going to merge everything at the end we'll talk about the advantages of working parallel over series in a moment um i'll explain what that is shortly but for now we're going to have multiple rbd material fracture nodes and if we're using concrete fracture they're all going to have sort of the same group name here unless we change it so it's good to give this unique name i'm actually going to call this bricks fracture so this will group up these um fractures for us and give them this name and the other thing that's good to do is to create some name spaces so if you turn up on up the top here if you turn on see that is processing i didn't want to do that let me abort it to stop it processing every time you make a change what you can do is come down the bottom right here and click where it says auto update change that to manual now it's not going to update the graph and we can change what we like so change up here turn on the fracture namespace and we'll check change this to bricks as well so it definitely has a unique name and um we want to change the scatter points here let's have slightly less and the noise frequency i'm going to put that to a high number like 50. so like i say it's going to be black and white dots quite high frequency noise and therefore the points should scatter much more uniformly i'm going to turn this from manual back to auto update which will force the network to evaluate and that'll take a minute or so to draw while that's doing that i'll just explain again that we're going to be working in parallel and what that means is i'm going to be branching off like i've done here for another piece of geometry off this split and so on and i'm going to have several branches each working independently of the other branches and then we're going to merge the result together back into one stream and that's what we call parallel because we have these parallel streams not dependent on another one now the advantage of that is and we can obviously change one element in one stream and not affect the others whereas normally when you work in houdini you put nodes in a straight line and if you affect a top node all the nodes below it have to be recalculated with this sort of top-down dependency so working in parallel can break up um all that processing as long as you can merge it again in later so so as long if you're calculating something heavy in one branch you don't need to evaluate the other branches for example and the advantage is you can cash out those particular operations so um let me just pause the video while this catches up there we go the house is caught up and because we increased our frequency there to 50 we can see our points are scattered much more uniformly throughout the house and every brick appears to be shattered and broken up now that's uh too pulverized for me really and not the kind of look i was after so what i mentioned was well actually let me show you what these name spaces have done if we right click on the node the geometry or the node here rather than the fracture node and we uh right click and choose spreadsheet you'll notice that the spreadsheet doesn't really have what it does here in the names you'll notice it's added bricks that's this name here in front of our name we had it called bricks to begin with so it's just putting an extra prefix in front of that just to make sure that things are separated out and we can also see here bricks fracture inside bricks factor outside so this is creating different groups for the inside and outside faces of our fractures here these smooth bits being the inside and the recipe in the outside that way you can add a procedural texture to the inside of your cracks there um that's really good now i'll explain a bit more about the material fracture node on the next piece of geometry because it's not so heavy as this building here but we'll leave the settings as is for now there's a few other nice detailing settings here and we could get some control over these white constraints that get made but we're not going to bother with this yet we're going to actually manipulate these constraints a bit later on i'll show you how i like to do it but what i do want to do is actually connect some of this back together again because you know when bricks explode or wall falls apart some of the bricks will break but some of them will stay glued to the others with the mortar so i want to simulate that and the node we can use that with again if we look in the rbd menu it's called rbd cluster so um there it is rbd cluster just pop that in now we don't we want to plug that in before our exploded view i'm actually going to leave the exploded view in there so i can literally just slide this guy in and it will connect all three for me we'll give that a second to kick in for some reason the exploded view note took a very long time to display that so i hit escape to abort it i'm actually going to break the connections because the cluster node shouldn't take very long to display at all so um in the cluster node if we just disconnect the exploded view node here in the cluster node we can click on the little visualizer here whenever you see this icon it's a visualizer if you click it on it'll preview and what's happening here and we can see our cluster going on what i can do is just plug the first input here to the uh rbd exploded view and that will preview the geometry exploding out for me we can see um how what the cluster is doing so if i disable the cluster we'll see all the pieces are separate and if i turn it on it bunches them together based upon this noise let's see that all close together again and you can change the uh the look of this if you want you can play with the size if you make it bigger you'll see a bigger noise pattern and you'll see random bricks are being detached they've got random colors if you turn that off here the random detach um then you won't get that sometimes that can look a little odd as you get some strange holes and stuff so i like to turn it on just the last minute what i'm going to do is have a small size of the noise in other words a higher frequency and you'll see we get a much more even scattering there see that looks interesting we've got a few bricks stuck together but um lots of broken with jaggedy edges if we explode that apart then this looks kind of um looks kind of cool for me maybe i'll do 0.5 oh it's probably better if i just preview it here let's check that to 0.5 see how that looks yeah we've got slightly bigger chunks there so that looks kind of cool for um how a brick building might break up got some bricks stuck together um and some bits falling apart excellent so i'd be quite happy with that i think um should we put the random detach on let's see how that looks now that just breaks it up a bit too much i think turn off random detach i'll leave it off for now okay you can always turn the visualizer off by turning it off here on the interface down here this is this is global this will turn off all the visualizers in the scene but you're better off doing it locally because you want to see the other the other ones and there we have our bricks fractured just with these a couple of nodes so the important thing was in the material fracture to give it a namespace and to give it a unique name and we use the cluster to join those things back up together so what i'm going to do is i'm actually going to write this to disk let's create an rbd io so this is a rbd input output and this will allow us to write out this geometry to disk now the advantage of this is you can plug in all your data and it will write it all out for you at once and you can choose here what you write out so pack geometry constraints and proxy we're writing everything out from here all three channels but you could just choose the geometry which is the left output or geometry and points which is the left output and the far right one there's other reasons for doing those a bit beyond the scope of this lesson but we'll write everything out and we don't want a frame range actually we'll change this to save current frame we want a single frame and i want to give this a name so we'll call this house fracture because that's what we're doing we'll get rid of the dollar f we don't need a sequence here so we'll call this house fracture and uh this will be version one there we go and we'll just save to disk and then with this node we can just turn on load from disk and now it's not processing anything upstream so we don't have to recalculate this heavy node again let's move the exploded view there i'm actually going to color if you tap c or click on the color palette up here you bring up the little color palette and you can select a note and just give it a color so i'll make that um a sort of bluey color so i can tell i've written it out here cool so uh there's my bricks written out to disk and saved and you'll notice it's created groups again here for me so i can texture the inside outside of the fractures and the actual bricks and uh if i wanted to get hold of those separately so what we'll do now is we'll actually uh pull out another branch because we want to model another piece of the house here so um let's start with the glass so i'm going to create another split and it will plug the output here into this split so remember this was all the other geometry including our glass so like we did before we can go up here and choose uh our window glass there it is and then that's what we get out of the left output so let's um we can basically copy these two nodes here so to do that i'm going to select them hold down alt and just left click and drag let's just plug those in and we're going to call this glass in and uh this group delete will still delete the empty nodes the empty groups there good so we have our um glass geometry here so i'm going to make another rbd material fracture and uh we'll talk about some of the settings on this now give it a second to come in there we go so let me just plug my geometry into the left we don't need to worry about these other outputs because we haven't made them yet this node will make uh those for us the constraints and the proxy so again before i um turn this node on i'm going to hit minus to the fracture level actually let's leave the fracture level on and we can see what it does let me turn this on should be a little quicker because there's only uh a few bits of geometry and what we'll see is um each one looks broken it doesn't look too bad that kind of looks a bit glassy but the rest look a bit odd so what it's doing is creating one level of fracture and then it's fracturing those pieces again and this scatter point dictates how many uh fractures we start with let's put one in and let's see what happens so if i put um one in that didn't really oh there you go it did it we get basically one fracture point cast somewhere and it creates voronoi cells around those um and that's spread across all three so we're treating basically this as one object what we um that'll demonstrate i can demonstrate that a bit clearer actually so at the moment we're fracturing it like concrete and we can change the mode up here to the material that we like and that gives us that very sort of voronoi type shape we actually want this to be glass so we can change this to glass and if we change it to glass we'll see now that it breaks with radial patterns and the settings change here look we can affect sort of the number of cracks of more or less cracks can change the variance of those cracks and make it more similar or less similar you can change the c just where it goes and again we're getting a group so we can access the radial stuff separately from the concentric the radial the lines that go outwards and the concentric of the lines that go around so again with the concentric cracks now we can sort of make a minimum width or bunch them closer together with a smaller width you can change the spread of the impacts and make them go further or closer from the center here these radial cracks and you can add noise to those here just to that gives you this staggered effect now you will notice we've only got one fractured in the rest of got lines that's because this node really treats these as one object so scattering one one point where's my impact points there we go one point amongst all of these objects which is not great we want to treat them as separate objects with the uh house that was one big sort of brick wall thing here we want to treat these as in individual panes of glasses now fortunately for us we have already made a name attribute and uh this node will use that name attribute to treat each one as a separate object but in order to do that we want to turn on this fracture per piece if we turn on fracture per piece look it uses the attribute with this name our name attribute and if we look at the spreadsheet actually on the group delete node you go to the primitive tab here's your name attribute and look you'll see all the primitives with glass zero so zero to five primitives that's on this input geometry here if we turn on the primitive display we can see that um there you go so this is this one here it's got zero one two three four five so those six faces make up this one primitive and that's window glass zero then the next primitives here 6 to 10 that's this one make up this so this is glass 1 etc so that's how houdini knows what solid objects so we're using that name attribute and we're treating them now individually so scattering here one point on each one and that gives us the fracture that we're after if it looks if you don't like the look of it you can change the scatter seed here and that just adds a bit of variation in there so now they look all a bit more different so i could put two points in and we'll get two points of fracture on each glass or even three and uh yeah you could read attributes in to get different one on each one but we'll leave it at this because this is just going to get shattered by an explosion shortly we're going to do all of our pyro in a sops as well you can add some chipping so here we can chip little pieces off um this can be quite slow so i and create some very very small pieces so i don't like to use that very much unless we get very close to the glass here it's just going to get pulverized so there's no real point adding the chipping uh where's my exploded view so here i'm just going to plug in the one output just to see the glass exploded and i don't know if we saw much change in the chipping there let me turn the chipping off and uh not really just get little bits maybe popping off at the edges there cool so we've got our sort of fractured glass i'm going to leave it at that obviously you can come back and tweak this further if you want to let's have two points of fracture on there so that'll just get pulverized as we go and we didn't have to have glass actually we could have chosen wood which we'll do in a minute i'll demonstrate the wood on this because it should be fairly quick and there's the wood fracture and it gives you a nice wood pattern if you look in the exploded view because it sort of shards it up or shatters it up now the wood fracture is quite interesting actually it has a built-in cluster so if you turn on cluster here you'll see it holds it back into these shapes just so you get cracks and it's got these noises that give you this nice jagginess so we've got the grain so if i turn off grain you'll see that's the up and down lines and if i turn off cut that's the zigzaggy ones and together they give us sort of that broken look here and again some experimentation to get the look you want we've got grain spacing so smaller spacing means they get tighter together so let's just put a smaller number in there so you see got more grains in there and obviously bigger grains are bigger you can change the noise here of the grains as well um and then again in the cut you can change the spacing or the cut make them tighter together um something like that zero cut or a small cut you can drop the splinter density down or have a high splinter density or even a higher one which allows it to shatter up more so it kind of gives you those that nice shardy look so um and then in the clusters you can if we visualize we're visualizing it already again you can put a high frequency noise there sorry a low high frequency noise is a small size small noise pattern there we go and that will break it up a lot more so it's a lot more broken up here and as we make the pattern bigger we'll clump it together more so you can get the wood to split roughly how you like so with this tool we can make wood concrete and glass which is pretty cool i'm going to set it back to glass actually because that's how i want these and we don't need to cluster it because it's just going to explode into shards really so now that we've had a little tour of the material fracture and we've created our glass we want to write it out again with another rbdio node so i'm actually just going to copy that one with alt let's just break those connections and just connect these back up so this guy's displaying the house let's turn off load from disk and instead of house fracture let's call this um glass window fracture and actually before we save to disk on this material fracture here in our primary fracture we changed the name of the group here we didn't do that on the glass so let me set the material fracture here and i'm going to go to cracks and here it says glass radial um we've only got window in there anyway that's probably be all right to leave it let's call it window anyway so i'll just put the prefix window glass in front of both of those groups oh let me just copy and paste this ctrl c and then ctrl v there we go window not window gas window glass there we go fantastic so uh now i've made sure those have got unique names oh yeah and the fracture name space up here we'll call this window glass fracture so this says oh that just says bricks now we'll just call this um windows then actually record the material is let's call it glass that'll probably be better so we know that's glass and then i'm going to write this out again save to disk and i'm going to click load from disk and then we've loaded in our glass so on the material fracture give it the name space of glass and then the other one says bricks so we know which ones which we can sort those out a bit later on now how do we combine all this back together because we've got a lot of inputs here and you'd probably think you need a lot of merge nodes but you don't really there is a node designed for this and it's called the rbd pack node and this will allow us to pack up um all of this different geometry our render geometry our constraints and our proxy into one data stream so i'm just going to create a pack there let's create another one on this side so we have two packs and then we can simply merge those two pack primitives all those uh packed constraint networks those pack networks back together again and look there we see all our geometry uh or rather our glass and our house fractured so um this is how you sort of start working in parallel we're working in these parallel streams and then we can merge them all together at the end here the advantage of working this way is obviously if i've got something heavy like this i only need to process it the once and write it out and then something lighter like these i can make these changes without having to evaluate all this again because if they're in series then you change a node everything below that node has to be reevaluated whereas here we've split them up so these are not dependent on these they don't need to be reevaluated so for heavy networks it's a good idea to if you can run them in parallel like this and bake out certain things as you go you'll certainly speed yourself up or you can bake out stuff like we've done here at one point we're actually gonna can set up all the constraints and physical properties using a series network so you'll get to see working in series but at the moment for this heavy geometry i like to work in parallel just because i think it's a bit more efficient when you're re re-changing stuff later on but again it's a mattress style and with the wonderful thing about houdini is you can choose your own style it gives you such an open framework you can work any way that you like so now that we've got the windows in let's uh dig out the window frames and fracture those up using wood so again same process i'm going to create another split node just plug that in and there we go we can see our frames in fact i'm going to treat um yeah let's uh do the window frames so up here i'm going to come and choose window frames and there's my window frames being isolated and again we want to treat these as separate separate nodes and this this fracture is already set up to oh we'll create a new one actually we'll just copy over the um null and the group delete so instead of glass in we'll call this a window frame in and then what we'll do is we'll create our rbd fracture node and what i'm going to do is turn off let's go to primary fracture here we'll make a single level of fracture and we'll turn on fracture per piece and we're going to set this to wood and let's just plug it in so now it's going to fracture each one of these based as if they were would and we can see the clusters there if you want to test it again again i'm just going to plug in the first input into the exploded view because i don't need to see the constraints and then we can see how that's breaking it up what i'm going to do actually is go to the cluster section here and we'll just drop the size down a little maybe 0.5 by 0.5 by 0.5 so it takes a second for it to update and then look that's fractured a bit more i think i want them to maybe fracture more than that again so let me set this uh down here to manual and then let's put point two point two point two then we can set it back to auto update just uh and then see it redraw there you go i'm quite liking that now that's going to pulverize up a bit more got those different colors um and that should separate out quite nicely yeah i think um we could leave it something like that rather than break it up a bit too much yeah we'll leave it like that we can always tweak this later once we start with the simulation so again i want to give this some unique names so let's turn on the namespace here and call this window frames and then i'm just going to copy this name and actually in the where are we in the cut if we scroll down there's the fracture id so we'll call that window frames would cut oh okay it's trying to process again so let's set this to manual just so i can fill this up quickly so it's window frames would cut and then if we go to grain there'll be one at the bottom there so window frames would grain just make sure things have unique names that way you can access them much more easily later on in the pipeline so we'll turn the cluster off the visualizer off for the cluster there it doesn't want to turn off interesting we can turn off the global one oh that's because it's still on manual right let's set this to auto update that's the problem with it manual nothing updates so that's why the clusters weren't turning off there we go so now that will update the network accordingly oh i turned the main visualizer off here the global one there we go good so that's uh the next bit of geometry so again let's um copy over our rbdio and rbd pack those will steal the nodes we've already made just going to use y to break the connections there then we'll just wire this back up so again that's still reading in the glass but if we turn it off it's now got the frames and then here i can just paste in that name window frames fracture then we can hit save to disk and then load from disk there we go we have our frames and then we can plug the rbd pack into the merge now we can see our frames fractured and next to our glass in the cavities of where the glass should go let's just select these nodes and do shift l to tidy them up a little there we go so now we have another branch that's created our window frames and i'm basically going to keep repeating this to um populate the rest of my scene here so now that we've done the window frames let's do the door and the door frame so again another split node we'll just feed that off we'll come up here oh let's select the node now we'll choose outdoor and again we'll steal these two nodes so we'll call this uh let's call this door in so we've got our door in we've tidied up our groups and then again we want to add our material fracture just wait for that to calculate and then again i'm going to set this to wood and um let's plug that in and see the result of it this is a wooden door there we go that looks um pretty ugly there now it's looking pretty ugly because um it's separate pieces and it's not having a great time with that what we really need to do is say fracture per piece so it it realizes that they're separate planks and that's going to fracture it much more nicely for us so we've basically fractured each plank separately rather than trying to treat it as a whole that has gaps in it and internal faces so if we plug that in now you'll see it's fractured each plank if we plug in our exploded view and i'm okay with the presets here i'm just going to go to the clusters again maybe drop the uh cluster size down here something small let's try 0.3 so i want those to really break up yeah something like that so if it does explode we'll see the planks split up um like this which looks kind of interesting as and we need to give it the unique names up here the fracture namespace let's call this a door and then down in the cut we'll call it a door wood cut and then in the grain door with grain so we've got our unique names again that's important and then again we'll copy over the rbdio and the pack node so again in the i o let's turn off load from disk and then we'll change this to a door fracture we'll save to disk and then we'll read it back in again if we look at our pack we have that and then we can plug that back in to our merge now we have our door in situ and uh next we're going to do the door frame so let's create a uh another split node for the door frame so we'll pop in our split node like before so if we turn that on we'll see our door frame and our roof sections so we'll choose door frame we'll partition that off and like we did before we'll just grab these two nodes and just rename this to a door frame let's go to the end to remove the one we've cleaned up the groups here this is our door frame group and again um we'll fracture it with the wood we'll copy in fact this whole these other three nodes as well i'm just going to hit escape to stop that processing let's get rid of the console there we go so we'll just uh plug in our group delete so on the uh fracture here i'm going to turn off let's set this to manual so it doesn't update so we'll set this to leave that on wood turn off the fracture piece we'll call this door frame and then we'll just uh rename the names in the fracture idea at the bottom here in the grain and the cut sections make sure everything has a unique name it just will save problems later on otherwise houdini gets confused which is which and remember to turn off door fracture piece there is only one piece here so i set the manual back to auto update that will um refresh for us and we should see if we turn this node on we should see our fractured um there it is our fractured frame and i'm just going to plug the first input into the rbd exploded just to preview that so yeah we could preview it that way or again we could just turn on the cluster visualization and see how that might break up let's break that up a bit more let's drop this to maybe 0.2 by 0.2 by 0.2 so i guess it's just going to fracture into more pieces there excellent i'm happy with that so again to the rbdio let's change this from door to door frame i cut i copied so i can paste the name in and uh i don't need to turn off load from disk i can just hit save to disk and you'll see it writes out the new version which it loads in and again we can plug the obd unpack into the merge and we'll see our door frame if we hit wireframe we can see everything fractured and um all we've got left to do now is the roof section again i'm just going to tidy up the nodes with shift l and then we've got the uh two bits of the roof there the ridge tiles and the actual tiles themselves so uh we'll we'll start with the tiles doesn't really matter the order we'll do them in so again we'll create another split and this time we'll choose our roof tiles so we just have the roof tiles here and uh again let's just [Music] copy these two nodes over i'll null and now group delete i'll call this uh roof tiles in there we go so let's create a another rbd material fracture so again before i um plug this in i'm just going to change some settings we'll leave it on concrete because these could break to like concrete and again i'm just gonna hit the minus sign here to have one level of fracture and um let's set this down to three and put the noise up to 50 by 50 by 50 just like we did for the brick wall so it's going to break each and every um of those roof tools for us i'm going to turn on the fracture name space and call this roof tiles and again i'm going to copy this name so i can rename the group here roof tile fracture and i'll use that same name to name it when i save it to disk so let's plug it in and see what that does so you want to be able to set these things quickly without hitting escape and waiting long times between things first once or twice you do obviously you have to wait but once you know what you're doing you can either not connect it and fill it out or you can turn it to manual and uh and then connect it afterwards so there you go that's fractured let's turn on the exploded view and look we can see all of our tiles have been uh broken up there just how we want them to be excellent i'm gonna leave it at that again copy these last two nodes over from the other network the rbdio and the rbd pack and look we can connect up these connections in a different way actually if you hold down j you get like this little um sword or pencil icon if you just slice between the connections you'll see it connects them for you just need to draw a line and you can do that through multiple nodes which is pretty cool i think that's a new feature of 18. so here we're going to change the frame here to um roof tiles oh i still have a door there there we go roof tiles and then we'll just save it to disk and there's our roof tile model it's getting packed up and we'll again merge the pack into everything else and we can see how now fractured tiles joined in and last but not least we want those ridge tiles so i'm basically just going to copy the entire group over because we want to fracture them in pretty much the same way i'm going to hit escape to stop that processing and then we'll just connect in the last bit of the split because uh if we have a look at that that is just the roof tiles the ridge tiles so we'll just put a ridge here in the name let's just check the fracture out so if we just plug that into the exploded view i think we can live with that they just break into a few pieces which is fine so again don't forget to give it a unique name so roof ridge tiles here in the name space and also in the group name here for the constraints for the fractures the roof ridge tiles fracture here and then don't forget to write that out here in the rbdio so that's still showing the roof but if i save to disk we now write out and read in our ridge tiles and again we can use the pack and join that into the merge so we have everything connected together and again if we just preview everything through the exploded view um it will show us the separate pieces it won't show us the pack pieces because we've packed them up but it just shows us the separate groups but you'll see we do have all the individual pieces there let me just delete that exploded view because we don't need that anymore so just to recap we've used the split node to break up our geometry into these individual streams which are running in parallel just to remind you again in houdini if you um edit a particular node every node below it is dependent on it so these all these nodes have to be reevaluated if it had done all this in series and i wanted to change some say um this guy and it was at the top then everything else would have to be reprocessed every single time which is not very efficient with heavy geometry like this so um it makes sense in this case at least to me to do this in parallel split them up do them in parallel because that way i can process each one individually cache them individually and um it'll just help me work a bit quicker and then we can work in series now i don't mind working in series now actually because we're just going to be building constraints which isn't too heavy and then i can also illustrate how you would work in series um the way you would work in series basically is you just plug them in series and you would use the group here so that the node only affected the particular geometry you wanted to and in this case i think it's harder to read to have all the streamer geometry here whereas here using the nulls i can quickly see which branch is uh creating which effect of the onto the geometry there custom constraints to define the relationships that we don't have we already have some constraints in there but we want to build some more and then what we'll do is we'll build some attributes for those constraints and some physical properties for the materials before we simulate again we're going to do everything inside sops including all the simulating of the rigid bodies and even a pyro explosion to blow it all up so what we're going to do now is work in series um as you saw before we've worked in parallel creating this heavy geometry and the benefits as i mentioned of doing this is uh we've split up um the network in in parallel not in series so what does that really mean well when you're in series like this if you edit a node say for example here every node below it is dependent on this node that you've changed so all the ones below have to be evaluated so if all these guys are in series remember this one for the whole house was very slow to process if he was at the top and i made a change then every node below has to be processed and that would include all the others whereas if i put this at the bottom of the network and i changed any one of these at the top i would have to process this one again every every time i made a change which could really slow us down especially if there's quite a few heavy nodes so it makes sense in that case to split them up in parallel so you can just process them one at a time and then write them out or cache them up and then join them back together and carry on working in series later on so and we can work in series it's entirely up to you that's the wonderful thing about houdini is it's so open and flexible in the way that you want to work and we are going to work in series from now on just so you can see how that would work and if you wanted to work in series with these fracture nodes it's very simple you just specify the group here that you want it to affect and it it will only affect that geometry so that's how you'd partition them up in series but if you want in parallel you can just split up the geometry like we've done here i prefer this i think it's easier to read in this case but it's entirely up to you so now that we've combined it all into a stream one data stream here and we've combined all of our uh main geometry our com constraints and our proxy geometry into one one stream here and then combined all of those so we need to access those again so to do that we can actually use an rbd unpack and that's one of the uses of the rbd pack and unpack is you can flatten down all the data into one stream and then you can access it again with the unpack and then work in series or parallel after this point and we could have cashed it out here as one thing if we wanted to but i prefer to do them individually again doing them individually in this case makes sense because some are much heavier than others rather than having to process them all at the same time at one point so now that we've unpacked it again we can access if we just pop a null in there we can just access in here our original geometry that we're going to render the constraint network of everything here and the proxy if i look at the constraint network i'll just plug that in we can see we've created them but there's a slight issue here you'll notice that um especially on the roof tiles the uh constraints here are for the individual tiles let me just template that for a minute you'll see the broken tile bits are constrained together but there's no constraint joining the actual tiles to each other likewise there's no constraint joining the ridge tiles to the roof or the windows to the frames or anything like that these rbd material fracture nodes they generate let me select one of them here in the constraints they generate the constraints for us but they only do it to the fractured pieces now on the roof where's the roof roof tiles here remember we gave them a name here in the primary fracture rooftop fracture this is so we can access these these constraints separately so we can do that down here with a split node just to demonstrate that so i plug the constraints into the split and then i come here and then do the uh where is it roof tiles fracture you'll see we're just left with those constraints holding the individual pieces of the tiles together but like i said there's no constraint holding the whole roof together so um we're going to need to build one to define the relationship between all of these um roof tiles so let's do that it's quite easy to do if you hit tab and look in the rbd menu you'll see we have rbd from rules constraints from rules here so this will help us build constraints between pieces let's plug the inputs in and have a look at the result and what you'll see here is it will go dark where it's made the constraints so you'll see look everything's gone dark and we get these little white lines which are the constraints now if i just plug my null into this output for the constraints we'll see that we've got this extra white mesh everywhere if i compare it to the one before and then the one after you'll see we've got um constraints everywhere that's because by default this is making constraints everywhere literally and like i said when you work in series you tend to use groups to only tell it which geometry you want it to affect and we can do that here with the input group i just want this to create constraints just for the roof tiles so if i click on the drop down i can find my roof tile group here and instantly you'll see it only creates that webbing on the roof tiles themselves now as always we want to give this a specific name so we can access it later and change its properties and we can do that here with group name so don't forget to turn this on see my little flashy circle and they all get the same default name of connector so we want to give this a unique name so i'm going to call this um ridge tile no i'm going to call this all roof tiles constraint so all roof tiles constraint because remember i've got the individual ones the fracture but this is like all of them and we can access that now with the split since we made the group let's get rid of this group name here and we can find the one we've just made which is all roof tiles constraint and there we go you can see we've got constraints connecting all the roof tiles to each other or rather all the pieces of roof tile to each other i just turn the template on you'll see the fracture pieces are included but the advantage of this is you could have obviously a weak force um holding all the tiles to each other so that they would all separate as whole tiles and a slightly stronger constraint holding the pieces together so that they'd break up as individual tiles but when they were hit with a stronger force it actually smashed into big pieces so we can manage that now because we've got two sets of constraints so what i'm going to do is and you'll notice if i display this now only the dark ones get the constraints and we'll get those little white lines which is uh not so easy to see i like to split them out so what we're going to do now is work in series and create a bunch of constraints for the ones we're missing uh and then what we'll do is we'll then create another network to adjust all the physical properties in a separate place and that's the way again i like to work that's my style and it's entirely up to you the order that you work with these nodes in i just find that logical just to fracture it build the constraints and then play with the physical properties and again i'll talk about the advantage of why i do it that way when we get to it so um what i want to do is now if you think about it these ridge tiles are not glued to the roof again if we look back at the original constraints let's plug that into the from this node above so let's plug the null into the constraints on the node above so we'll see our ridge tiles here have constraints joining together but they're not fixed to the roof likewise the roof isn't fixed to the walls etc so we'll go and build all those relationships so i'm going to start at the top and work my way down so the first thing i want to do now is connect the ridge tiles to the roof so let's bring in our constraint from rules let's connect it together with shift let's turn it on and again it will constrain everything to everything else so this time i don't really want to use the input group here what i can do is actually use this groups method here at the moment it's set to all so we're going to constrain everything to everything but we can change it to group to group so now i'll only constrain two groups to each other now because i've selected that and this is empty you'll notice that nothing gone dark because it's not created any constraints so what we want to do in the top one here is choose our roof ridge tiles so there's our roof ridge tile group and then in group two we just want to put in the normal roof tiles they go roof tiles and what this will do create constraints as you can see just between the ridge and the roof and the only bits that are constrained have gone dark here again we can should give it a unique name up here so we'll call this um ridge to roof const there we go and uh if i put that into the split say the output connector here into the split let's find our new group um so that's which tiles to roof const there we go now we can see our constraint there now you've got some controls actually here and if i go back to this we can change the search radius if i make it now it's only going to search for the nearest neighbor so it won't connect this to a block two parts away just the block nearest it but you can change that you can make this smaller so to make that a lot smaller you'll see some of these further chunks get missed off so you can make it a bit finer if you want if you make it too small though then it doesn't actually find the centers are within that distance and therefore it doesn't join them so only the center of this chunk and this chunk are close enough to join a constraint so you can kind of filter out the constraints if you want the other thing is you'll notice we get one constraint per center to the other center but you could have maybe two or three let's just change that number let's see if we actually see a difference there let's change this back to the default and if i put three connectors up you'll see a load more appear let's put one in you don't really want that you just either glued or not glued you don't have to break it a couple of times before it will separate there generally the defaults are pretty good for what you want sometimes i bring this number down just to make a few less constraints but the defaults are pretty cool and you must remember to give them a unique name here and it's using the center of mass here to actually do the connection for you each point there so that's good we've created our two and look it even gives you the name here what we've done so we've done the uh all the tiles to each other we've done the ridge tiles to the roof so what i want to do now is connect the roof to the bricks so again we'll use another rbd constraint from rules holding shift we'll collect the three connectors just plug them in and on this one before i turn it on here i'm just going to set group to group and then i'm going to turn it on that will stop it drawing everything it'll be a little quicker to display and this time we want to choose our roof tiles and then in the group two here we want our bricks because we want to constrain the roof to the bricks so when we do that now we can see that um these tiles around the edge are connected on both sides to the bricks there again we should give it a unique name here so call this uh roof let's just call it tiles tiles to bricks const for the constraint again and again if you want you can preview that in your split i like to check things as i go so call that uh that was proof uh where is it gone that was a told to brick constraint actually i'll call that roof to brick constraint rather than tiles let's call it roof to bridge constraint just change that name to roof so it finds it again there we go and again in cases like this you might actually want that a bit smaller so you see we get less constraints if i bring that down we just want some of the bricks really attached to the roof there so that's good so we work out don't want to go inside there so we work our way down slowly um constraining everything to everything so now we've got the roof con connected to the bricks so um let's start thinking about um the glass let's do the windows next so what i want to do is uh constrain the windows to the frame so let's have a let's do that so we're putting another constraint from rules here so again i'm going to set this to group to group because we want to uh constrain our freight our glass to our frames and then let's connect in those three outputs so turn this guy on it's not going to do anything so again we'll choose our uh where our window glass we'll connect that to our window frames and then we can see the constraints there let's turn on the name we'll call this uh glass to frames const constraint there we go and again we can preview that in the split so let's have a look at the glass to frames constraint and there we go see the little constraint holding let's template that our pieces of glass so again that's quite large and long let's maybe reduce this down we just want a few shards that will stay connected what i like to do with this really is you'll see we've just got the the closer shards connected so what i like to do with this is the glass will just totally blow out but i tend to make these ones here quite strong so these always stay stuck in the frame so you get that kind of jaggedy look so um that's how i like to sort of manage that constraint there so that's good we've got our glass to frames let's just do shift l to tidy those up a little bit so next after glass to frames what we want to do is actually take those frames and constrain them to the bricks so again we'll do another constraint from rules here we'll change this to group to group and then we'll just connect this together so this time i actually want to treat all the frames at the same time not just the window frame but also the door frame because i think the frames will be connected to the bricks in the same way regardless of doors or windows so i'm going to do them all at the same time here so in group 1 i'm going to choose my door frame and i'm also going to choose the window frames so you can have more than one group here if you want and then we can choose bricks and then hopefully we'll see there we go let's tap w for wireframe we can see all the frames can constrain to sort of the near brick so remember these are clusters so this big one it's not constrained to that brick up there it's constrained to this cluster remember that was a solid cluster these three or four bricks but again we could reduce that down a bit so they're still kind of glued in but they might break out a bit easier so maybe we'll have a smaller number yeah that might do and again we want to give it a uh sensible name so we'll call oh let's turn on the uh group name here we'll call this frames to wall constraint let's get our frames to wall constraint and again we can use our split to preview that so that was the frames to wolves constraint there's f uh frames to wall constraint there we go so we can see all the frames are connected into the bricks now it's good we slowly work our way down creating the ones we want so now that we've done that we actually want to um glue the door to its frame so let's do another one constraint from rules so turn this on oh there you go i didn't set the groups to or groups it took a while so group to group so again we'll choose uh door then we'll choose door frame now what we can see is we've constrained the door on all the edges here now actually i don't well let's give it a name actually let's call this uh to frame cons there we go door to frame constraints now in this case i don't want them all constrained around the edges here i want to actually just constrain this one side you know like a hinge it can just burst off from one side there and uh we could probably change the constraints and make them soft and give it a hinge effect later on but for now i just want it connected to one side and we can actually do that on these constraints there's a way we can limit at the moment this was just doing everything in the group to everything else in the group but we can actually use bounding regions here to specify where where we want to go let me turn on the bounding region and you'll see we've lost the constraint because the geometry is not inside this bounding region so what we can do is actually change the center of that uh by either using the ladder or if you actually select the node and hit enter you can manually edit it so if i just bring that face forwards until it grabs some of the front there there we go and you see whatever geometry is inside the bounding box gets attached to the constraint let me just bring that back in a bit forwards there we go so what i want to do really is bring this side in all the way over because i just want that one side of the door here let's just make that slightly wider i just want this one side of the door here so is that going to let me make that wider there we go so i just want this one side of the door here affected by the constraint so we'll just grab the top here and pull that up there we go so we can see i've only allowing it to create the constraints within that bounding box and you can look this last noggin allow this last input allows you to put in a bounding a geometry bounding box you can put in your own manual one so you could put in a bounds node if you wanted like we've done before so there we go let's check that out in our split node that was door to frame constraint so let's find that so let's door to frame constraints there we go we can see we just got that little sort of connection to the side here again maybe make that a bit smaller because i just want it a little bit connected there we go something like that will do and um so we've done the uh glass to the frames the door to the frames the frames to the walls the roof to the walls ridge tiles to the roof all the tiles um that's really good so the last thing we need to really do is the whole door and remember these individual planks are glued together but they are glued to themselves that you know their own broken bits but they're not actually glued to each other so the last thing i want to do is just glue the entire door to the entire door again so again i can have the door come apart in planks and then adjust the constraints between the planks to be stronger so they'll break on impact somewhere else so we can control how that breaks up a bit better so to do the door constraint the whole door constraint again we'll just use the group here it's just one thing so we'll choose door and there you go now we've created all the constraints by combining the entire door to itself and we'll just call this um hole door constraint can't spell hole very well oh actually let's call it all like we did with the roof all door constraint and again if we split that off we can uh look at our constraint here all door constraint there we go we see all the door is uh constrained together let's not template that so we've built all the extra constraints that we need plus we've got um the original constraints on all the bits themselves like the clusters and the tiles and stuff and then we've added all these extra ones so again these can take a second or two to process so again i like to write this out at this point so again we'll use an rbdio because um i don't necessarily need to change these clusters unless i change the geometry let's make this a darkish blue and we'll call this again we just need the one frame so we don't need dollar f we'll call this um house constraints version one something like that there we go and remember to change this to a safe current frame because we just need the one frame we'll hit save to disk and then we'll click load from disk so now we don't have to process all of that again if we do obviously we need to save it out again uh the advantage of this is um it'll just speed us up a little bit get rid of these nodes and um what we're going to do now is set up the physical properties now that's fairly quick because we're just changing attributes and i'm not going to write that out i'll leave that live and feed that directly into the simulation this is why i like working this way because when you run the simulation you want to change the physical attributes quickly and see the result fast so all this is generating geometry up here and this as well creating the constraints so i like to write all this to disk so i don't have to process any of these nodes again and then the last bit i'm just changing attributes and i can re-sim change some more re-sim and that's why i like doing it this two-way process so you could add your properties at this point but again you've got lots of extra notes to process when you're making iterations so again i like to bake out all the geometry and then just have a network where i'm changing attributes because that will be quick to make the changes and then we can see the result in the sim so the first thing i'm going to do actually is configure the physical properties of all the bricks and the glass and all the other materials and to do that again we can do all in stops with these rbd tools so this time we're going to use the rbd configure node which is here and this will allow us to configure certain physical properties now a lot of these settings are actually in the rigid body solver which we go to rbd is here the rigid body solver that's what we'll eventually be using that's kind of a simplified dot network that can be run in sops and uh there's a lot of properties that you can affect there but they'll affect all the geometries at the same time whereas here we can create local attributes that will affect just the geometry that we want and again we'll do that through groups you could make multiples of these nodes um which you can do but in this case i'm going to actually make use take advantage of the groups and these extra tabs here so let's see how this works now it's quick to process so we can just literally plug in our inputs here you can plug this last one in but we don't have any points there so there's nothing there and here's my parameter pane i just hit p to bring that up so let's turn on the configure now all this is going to do it's going to create attributes for us so it's not very um slow to process which is why i don't mind doing it after the cache so what we can do is we can set up as i mentioned certain properties so the first thing i want to do is talk about my bricks at the moment it's applying properties to everything and we can define here in the group what we're applying stuff to so first of all let's click on this drop down and choose bricks and now we've applied these physical properties just to my bricks i'll show you that in a minute now one of the things i want to change actually is to come down here and look we can set concrete glass wood or metal these are presets by the way if you want to put in your own numbers you can simply turn on user density and then you can put in your own number and this is in kilograms per meter cubed it tells you there which is a standard unit you can look up on the internet so i'm actually going to change this to brick and it's decided that this should be about a thousand in uh sorry about 2 000 in density there which is a bit less than concrete and again it's put in bounce and friction but you can put in presets here or customize it yourself but we'll live with the presets we'll set this to concrete brick material okay now what we'll do is i'll create a couple of these and then we'll see where those variations are different i'm going to click on the plus tab here to create a second tab if i click on the second tab i can choose another group so the group i'm going to choose is let's do all the word so if you remember all the word was the frames so we want the uh door frame we want the window frames and we also want the door itself so all these things are what's made of wood and we'll assume they're all the same wood so again we'll come down here and change the preset to wood and we can change the default let's have oak let's have oak nice heavy wood for all the doors and window frames so again we can put multiple groups in there you'll see the oak here is 740 density now if we uh right click and choose spreadsheet on the configure node you'll notice we don't have any of those attributes we've just made that's because by default this is going to show you the left input here the uh let's go to the create a null for that it's going to show you this left input so if i right click on here do spreadsheet you'll see this is the same geometry what we really wanted to do was see what the simulation geometry the bullet geometry because that's where those attributes are and that's actually this third output so i plug the null in there and then do the spreadsheet on the null and we go to uh primitives here uh is it primitives no points there we go if we go to the points because they're packed primitives we'll see the attributes we've created there's the density and there's the bounce and if we scroll through we'll see there's different values there's our 2000 uh there's our 740 which is our um wood some wood and the rest are a thousand which is the default there's more 714 look you'll see that the door frames are 740. where's the door cluster isn't well that's that's uh mixed it up for a minute so we can check that we've got the right densities going on there so yeah that'll be fine so um what we then want to do is we want to put in our roof tiles and stuff and the ridge tiles so let's click plus make another three here so again we can choose uh roof tiles and our roof ridge tiles so these will be made of concrete but let's make them of a lightweight concrete so they don't crack the roof there are not too heavy so i have a lightweight concrete for those and then last but not least uh we'll do our glass so we'll create another tab for the glass here we go let's click on here and we'll do window glass and again in the preset we can choose glass and the default we'll just have normal glass and we'll leave it at that so we've configured all our different materials so again if you look in the spreadsheet you'll see all the different values there of all the different densities that we have so our glass and our wooden frames and things like that now um we do notice if we actually put the spreadsheet on for this null the um some things have been missed out we've got like thousands here for this glass and then 2000 for this glass so we'll notice some of the glasses have been missed off these properties we can actually fix that with some syntax you'll notice not only do we have the groups we also have the name attribute we can use that as well and the syntax for that is you say at name equals and then you can specify so if we look here our things are called glass something something so we can make sure anything called glass gets this attribute so we can do that with a glass here and then a star so as soon as i do that you'll notice anything that starts with glass now takes on this value of 2600. so if you notice any issues you can kind of fix that here's a thousand look the door's missing out some of it so let's go to the door here so we can say at name equals and the unique bit his door because remember that was the uh extension we used at the beginning so we can say door star and then as soon as we do that we'll see all the door those words now pick up the right value of 740 and again until i have any other thousands here let me just sort the density out into range by clicking on the name here we can sort it from the lowest to the highest or from the highest to the lowest okay let's do the lowest to highest some more thousands okay window frames i need to do the window frames as well uh that's here isn't it so windows as well so at name equals um so uh yeah we'll do star frame star if i do star frame star then anything with the name frame in it will get part of that group so that was all our word all our words were had frame in the name so look there's all the uh wooden frames now all the frames have picked up that thousand value and look we haven't got any more thousands there all the roof tiles seem to have worked for that so yeah just checking the values yeah there's no thousands there good yep so we can use the uh syntax here for the name groups to make sure we've got all the right physical properties and everything uh assigned correctly which it is now and remember you can only see those on this third output because this is the actual geometry that bullet will simulate and therefore that's the geometry if we have a look with these attributes on bounce and name etc and we can oth add other attributes for example um we can tell it all to be sleeping this is a good one to add let's put a 1 there which is on sleeping's good with bullet let's just turn them all on when something is sleeping it's not going to move until it gets hit with a force and uh it's not not only does it not move it doesn't even calculate or simulate so it's very very efficient for stuff that's at rest and as soon as you hit it with an impact then it will start to move so we'll just set them all to sleeping to begin with now there's a couple of other things we can do with this configure if we turn on visualize and turn on active and then we select this node and hit enter uh what we'll do is it will give us a display it's not showing anything at the minute because we haven't actually set an active attribute let's go to tab number one the bricks and turn on active as soon as i do that it turns everything green which means everything is active by default it's all active anyway in the solver so you don't need to turn it on here the reason i'm turning on here is because if i was a pl to apply strong enough wind my whole house will just lift off and blow away it's not fixed to the ground so there's two approaches we can fix it to the ground one is we can build a bunch of constraints um but i'm not going to do that what i like to do is actually use this active and passive when something's active it'll simulate when it's passive it's just there to be collided with um it won't actually move so what i like to do is make a bottom set of these bricks actually passive objects so they'll never move but they'll be there for collisions and i'll glue everything else to those so if that glue breaks and the building gets smashed up we still end up with a line of bricks glued to the floor or glued to something else and it gives you control over that nice edge that's left behind afterwards and that's the way i like to do it but again of course you can do it any way that you like so the way that we can and it just shows you i can just show you then how we can not just use these attributes on everything because at the moment this attribute affects everything but we can actually partition this and we can do it by using guess what bounds or bounding boxes here with the use bounds thing so let's create a bounding object first so i'm going to hit tab and create bound and we can plug it into either geometry the proxy or the real geometry it doesn't really matter because they're the same size and look there's our bounding box and i'm going to bring up the lower padding here a little bit so we're missing out these bottom layer of bricks so anything that's inside this bounds will be affected by the configure so let's plug the bounds in now to the fourth input of the configure and if you select the configure you'll see it highlights green again and where you've turned on active for the bricks in the bricks tab at the right here turn on use bounds and what you can see now if i just template the bounds is anything inside the bounds is green but anything outside is passive or black the reason we're getting this funny lines is again because of our clusters remember it's not they're not individual bricks so that i could bring the bounds down a bit lower if i select that node you'll see we just get a few bricks glued to the floor now if i bring it up a bit higher now we've got a line of more of a liner bricks glued to the floor and again we can adjust this later i'm not going to write this out as a cache so this is live and you'll see it's very quick to iterate and change stuff so i'm actually going to leave it at like leave it like that i'm going to have the uh these black guys passive and everything else is glued to that notice that the uh the frame and the doors aren't included in that because we're only working on the bricks here if i included them in this group then they would also be affected and again we can simply use bounds to uh affect all of the parameters that you can configure here if it says bounds at the right here to partition different things you can have some parts sleeping some parts not some parts active some past passive that's what i like to use it for here uh you can only plug one bounce in all the tabs have to share the same bounds annoyingly okay let's turn off the visualize there we go so now we've actually configured all the physical properties we've got different bounces different densities everything else what we want to do now is uh configure the constraint properties for all the constraints that we've made so i'll take a bit of memory work and uh to con to do those physical properties it's very easy again we can go to rbd and we can do configure constraints or rather constraint properties there it is constraint properties so this is not the constraints from rules this is the properties where we can literally affect the physical properties of each constraint so if i just plug that in we're affecting um everything here and again we can use a group here to tell it which ones to affect so uh the ones i want to affect actually is um all the roof tiles all that concrete tiles so that's all the roof ridge tiles to each other the tiles to each other and all the tiles to themselves um now actually i'll do all the concrete bits first so we'll have we'll assume that these ridge tiles and these tiles are made of the same concrete so what i'm going to do is just do all the fracture ones first and then what i'll do is i'll create a separate constraint from the actual roof ridge tiles connected to the roof and the roof connected to itself so these will just be the fractured ones you know the concrete ones so again we can come up here in fact let's give it a color so we'll give it sort of a terracotta color and if i just make a null actually we can preview those constraints you'll see it's made everything go terracotta cotter so it's overriding everything so let's find our roof tiles fracture so there's our roof tile fracture that's going to be hidden because we've got um all the other tiles there so we want anything with roof tiles and fracture in it so we've got a roof tiles fracture we want the roof rich ridge tiles fracture if actually blast these off let's create a split actually so in my split what i'm going to do is just copy these group names here and just paste them in so we have the same groups and then we can see those maybe that wasn't the best color to choose let's make that a bit brighter there we go so there's our roof tile fracture and our ridge tile fracture up the center there so if i just get rid of these you'll see what they are there we go and then we're just affecting those two fractures so that's how all these concrete tiles and ridge tiles are connected together and uh we can play with that property if we wanted to i'm going to leave it uh see we can't change the scale there i'm going to leave it quite strong we'll come back and mess with these later on sometimes you we're going to see it in green just with the null straight out it's a bit hard to see yeah but the other ones are hidden by the white network but if we split it out here we give it the same same group names you can see that it's um just those concrete bits which is what we want so the next thing i want to do is assume that the things connecting all the tiles to the other tiles are the same so the ridge tiles and the tiles themselves so let's uh make a new constraint properties for that so this was just the concrete properties of the let's um yeah the concrete properties of the tiles so we'll call this uh tile concrete so kind of see what it's doing here in the name so this next one let's plug that in oh let's just get rid of that constraint properties let's plug those together so again we're affecting everything here let's plug that into the null so this one um this time i just want to do the new constraints we made which was the all roof tiles constraint so that's all the tiles connected to the other tiles and the ridge tiles constraint so not ridge tiles to roof ridge tiles i know we haven't done all the ridgetails to each other no that's probably yeah actually yeah we do want the ridge tiles to the roof that was the one so ridge tools to roof constraint so the constraints let's again just copy this this name here ctrl c and then let's plug that into our split like we did before so we can just see those constraints so there we go so that's all the tiles connected to the other tiles and that's the ridge tiles connected to the roof that we're doing now so this is like the fixing between the tiles the first one here was the actual strength of the tiles whereas this is how the tiles are all fitted together so this is like tiles um fitted together whatever you want to type in there to remind you quite what that's doing and again let's give that a uh a funky color let's try and give it a terracottery roofy color doesn't show up very well in the gray there so again if we look at all the constraints that's uh starting to see a bit of color in there so now we can have all the tiles break up if we made this one very very strong then none of the concrete tiles would snap but if we made this one weak then they'd all fall apart into individual tiles and we can manage that to get some more interesting breakups so the next thing i want to do since we're still dealing with the roof let me just zigzag this off a bit is to actually glue now define the constraints that are between the roof and the bricks so again a constraint properties node let's just wire that in so this guy here again um we'll do our roof tiles to bricks so we we made that so where is it roof tile to brick constraint let's give that a a darker red color and that you can see if we're going wireframe that's done the right one this time probably don't need to split it so again we can give that a certain physical property if we want so that's it for kind of the roof section in fact let's make some net boxes um around this section here i'm going to make a net box and we'll call this uh constraints constraints let's call it uh constraints my big monitor it's quite hard to see what's going on there let's make that a dark purple and then here um we can give that uh maybe another mini net box call this uh roof con const so we've got like the roof constraint properties let's give that another color because we're going to zigzag off the sort of different materials here so the next thing i want to do is um the all the bricks so we'll define all the concrete of the mortar and also all the individual pieces that snap off we'll do those all at once so again we'll create a uh constraint properties let's plug that in down here i'm just going to zig down zig-zag them again so it's a bit more visual so up here we want to choose bricks and our bricks fracture so that's all the concrete brick stuff so that's the individual bricks and all the um the clusters for that and again let's give that a different bricky color maybe a slightly uh more orangey bricky color it's quite difficult to see those colors there we go and then again we can give this a a different physical property later on and again if you want to just copy the constraint group name here paste it into your split we can just plug in that constraint and just see there we go there's all our um bricks to each other bricks to bricks so um let's next let's do the wood let's define the wood notice i'm i'm putting them into sort of material groups because i know the constraints should be similar so we'll call this a bricks const properties i'll give it a bricky color and the color here for the net box already color there we go so again another constraint properties so now that we've built the constraints we're going to define them all and again because these are just attributes so they're very quick to process so that we'll start with all our wood first so let's start with the whole door or the all door so that's the all-door constraint we'll make that more of a brownie color something like that maybe and again let's just copy the ctrl c all door name check it through our split here there we go so there's our all door constraint the uh woody bits so that's holding the door together as one piece i said i wanted to control that separately from the individual planks so let's do the individual planks i'm actually just going to make a copy of this node with alt let's just plug in those inputs and um this time instead of the all door constraint we're going to do those the door cut and there is the door that's the door frame isn't it we want the uh door there is door wood cut and door wood grain so that's why we gave the unique name so we knew which cut and grain was separate so this one will give a slightly more ready color to it and again let me just copy these group names to put them in split so here you'll see that's the individual planks so i can make these really strong and the all door constraint a lot weaker and then we'll see the door break up into planks or if i make this really weak then the door will just splinter but i can control them separately here which is um the bit i wanted to do that's why i like to kind of do that and give them those unique names so again if we now create a constraint properties we want to glue outdoor to its frame so it doesn't fall out so again on this guy we can look for the door to frame constraint there he is let's give that a wild color how about a nice bright yellow and then we can see the door attached the constraint to the uh to the wall there so let's make another little net box around here we'll call this uh door constraint we'll give it sort of a brownie color or a yellowy color there we go slowly we're adding our constraint properties so now that we've done the door we've got the windows and glass and what we'll do is we'll do all the frames at the end actually rather than doing because here i could do the door frame so i've done the door to frame but i haven't done the frame to bricks but we've treated all the frames to bricks as the same so i'll do all those at the end let's do the glass and then we'll do all the frames at the end so let's do another constraint properties so uh this one is going to be our glass so up here we can choose where's we want just the normal glass and then we want where is it window glass concentric and window glass radial and again we could treat the radial and the concentric individually and give them different strengths if we really want to do but i'm going to do them all at the same time here i'm not going to bother with that but you could if you wanted to so let's give them a nice blue color for glass um so there's all our glass so obviously we then want to stick the glass to the frame so again another constraint properties that's why we built that um other constraint wasn't it the glass to frame so here if we come down to uh glass to frame constraint so again we'll give that maybe a lighter blue there we go we see our glass to frame and we kept that quite short when we built it before so now we can adjust the physical properties of this so again i could make these ones really strong so we'll always end up with shards stuck to the frame whereas uh we can make the actual concentric ones really weak so the glass just fractures out very easily so we've got that control that's why i like to break these things up and you saw up here with these constraint from rules it's very easy to make those constraints and as long as you give them the unique names you can access them down here later and work in this sort of series fashion which might be more intuitive than working in parallel but again it's a matter of style and up to you when i've got heavy geometry i prefer to work in parallel when i've got quick stuff i don't mind the series but i tend to either lay it out like this or put in net boxes so i know what each section is doing it's always clear it's always a good idea if you can do that so there's our glass to frame constraint let's stick our little net box around here we'll call this uh glass constraints and uh give that sort of a lighty blue color and then last but not least we'll do all the frames to the bricks so again one more constraint [Music] and this will be all our frames to all our bricks so let's find our not the door to frame we want the uh where is it frames to bricks frames to wall constraint there we go that's what we called it there's our frames to our wall constraint so let's give that um a nice purple or something and there we go so that's our last constraint so we might as well put a net box around it and call that a frames wall constraint give that maybe dark purple as well deep purple excellent so um what you can see here is um we've worked in parallel to fracture up our geometry and then we've worked in series to define all the constraint properties and then we've worked in uh series again to define all the physical properties of our stuff so here's the physical properties for the actual geometry our bricks our windows our glass our tiles etc and then these guys are defining the physical properties of the actual glue or the constraints holding everything together so as you heard me discuss we can make certain bits weaker and stronger and really control the way this starts to break up which is uh really quite cool so all that's left to do really now is to plug this into a rigid body solver now and then set that up for the simulation so we'll look at that in the next video
Info
Channel: Houdini
Views: 9,388
Rating: 4.9783783 out of 5
Keywords:
Id: 5vSMTNyrUHk
Channel Id: undefined
Length: 98min 23sec (5903 seconds)
Published: Mon Nov 23 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.