 Howdy guys, so in this video what we're gonna do is we're gonna walk through the process of creating all these procedural panels And then we're gonna text right here inside of Quixel mixer And we're gonna go through a couple techniques How to obviously create all these panels with all the bolts how to bake all the textures and how to create You know this really basic set of layers here for this particular look here And this is heavily inspired by the SN8 SpaceX Starship Launch I was watching all that stuff and I really like the way that the aluminum looks on the Starship And so I wanted to try to Replicate that and also make it a procedural technique and so this is basically what I've come up with so let's get into it All right, so let's get everything set up. I'm gonna drop down a geometry node here And then I'm going to go and create a tube and this tube is going to basically serve as our mesh And I'm gonna put it on to the Let's put it on the z-axis here, and let's make it a little bit taller And add a couple more rows basically these rows are going to become the splits in the main panels And then these columns are going to basically serve us For the smaller detailed panels. All right, so with that all done Let's add some normals to it so we can use them later on in the graph here So let's set it to points so we have some normals Very nice All right, and then what I need to do is I need to basically set an ID per row here There's a couple ways to do it. So you could go and drop down a Wrangle node, so I'm going to call this set ID and you could you know basically Create an ID based off of the primitive position in the z-direction. So basically I would do something like this I would say I at ID is equal to Rent and we're going to basically round to the nearest integer We're going to round the z-position. Let's do times two and let's make sure we cast that to an int as well All right, so now you can see we have this ID value. So if you have your geometry spreadsheet open And I need to actually run this over primitives. Let's set this to primitives. So now we have to have this ID per Primitive and we are getting negative numbers, but that works just fine. Basically the whole idea now is that I want to be able to Roll through each one of those rows based off of primitive name And that name is going to be this ID in this for loop here So I can just replace name with ID and if I do a single pass you can see now I have You know each row Separated out. Now you don't necessarily have to do this particular technique. You could always do it a different way So we could always do a group right by range and then we can use the rows and columns I'm up here to actually just create a Selection where we select every other ring basically and so To do that. I'm just going to get the number of columns here I think I just need that And then if we just put in that same number of here and the way to do times two we'll get every other Yeah, so we'll get every other ring right there and the way you could split it up and create this ID Right as you could do a split So let's just do let's create a Group name up here that we can actually split on so let's do even and We'll split on even up here, so let's go split even and then let's just merge them back together And the reason why I'm doing that is because I can then use an assemble node So we're using the symbol node here This will actually go and create the the name Attribute for me, right? So now I have this name attribute. So if I were to drop down that for each Named primitive here You can see by default. It's looking for name and this assemble node creates this name attribute with a unique ID in this case is a string the one that I set up was in the wrangle node was an integer So it works both ways, right? So part of plug this into this for each node here and Yeah, it should already be set up. So now we can go through each one So couple ways to do it, right? So I'm just gonna leave it on my wrangle node Solution here. The one thing you have to keep in mind when using this particular technique is to Basically do it on the direction that you're looking for. So this won't work in all cases It does work for this particular tube though. So All right, so with that all set up Let's move on to the next step So now we've got each ring basically separate separated out and we can loop through it So let's set back up that for each named primitive here and in this case I'm not going to be using the name attribute. I'm going to be using my custom one called ID And again, this allows me then to loop through each one of those particular rings So this represents the larger section of your spaceship if you will What I need to do now on each one of these is determine a procedural way to basically break it up into smaller panels All right, so let's walk through that now I am going to make myself a little bit of space here and what I'm going to do is I'm going to drop down a wrangle node and I want to create a weighted grouping in here. And so I'm going to run this over Primitives and so the first thing I need is a seed value. So I'm going to drop down a seed value And this is going to be equal to a float channel. So chf Or channel float and I'm going to call this seed All right, so this allow me to get different results per pass. So per Loop through this for each loop here and then I'm going to get a random value So I'm going to call this my rand val and this is going to be equal to our rand at prim num So prim num and we are going to add on our seed value So basically every single time we for every single ring in our loop here We're going to generate a new seed value and we're going to get a different random Value to use All right, so the last little bit of information we need here is our weight value So this will determine how much is selected. All right, so we're going to say chf and We are going to do weight Just for the name and let's create all those spare parameters here by hitting this little button right there All right, so now we've got all these values here and I'm just going to initialize my weight value to point five You can put your seed value to whatever you want All right, so this is really easy at this point All we need to do is say if our rand value is less than our weight value Then we're going to select your your primitive. So we're going to say I At group that initializes a group for you. So we're saying it's kind of shorthand for creating a group in vex And the name of the group is selected so if you Prefix your group name with this I at group it will create a primitive group in this case because I'm running over primitives All right, I'm just going to set it to one. The other way you can do it too here in vex is to set a prim group so you could use this and Follow the instructions here. So give it, you know your geo or string name the value you want and then set basically So that's quite a bit of extra to type. So I tend to use this I at group more often All right. So with that done, let's see what this gives us. So I'm going to call this my weighted grouping like so Very cool All right, let's turn on our groups by hitting this little guy right here So you can see now if I go up to my wrangle node. I can Quickly go through here. We can also change our weight value. So this weight value gives us a great way To go and select just kind of random Primitives based off this weight value All right So the next step in all this to get our paneling done is I use a group expand node So I basically use this as my initial Selection to say how on a smaller panel here and then I expand it To give it just a little bit bigger of a look, right? And so all we need to do is Look for our group. So we want to get our selected and Then I want to basically expand it And so I need to decrease my weight here a little bit And there we go. So we also need to put in the Selected for the base group. So now You can see if I change my steps I can expand that group into smaller panels or larger panels, whichever you want Or I can come up here and I can also, you know, create this kind of effect just by using my weight value Yeah, I think that'll be cool right there. Maybe a little bit less So the less weight you have in there the more panels you'll end up with Very cool. So then I just need to split on that Again here so I could split it up into different pieces this way I can work on each individual panel So I'm gonna split on selected and then just merge them back So we'll just merge it back here and the reason why I'm doing that is because it'll separate it out So when I merge it back the the vertices won't fuse together And that's pretty much all we need to do there the last thing I need to do You'll notice that if I were to turn off my single pass here and take a look at my grouping You're gonna get the same grouping for each one of those rows All right, and so we need to go and create a meta important node here, and I'm gonna call this loop data There we go and inside of our weighted grouping what I want to do is I want to Control this weighting right here. You can also go and you know change the C value might actually end up just doing both So I'm just gonna do a fit and I'm gonna do a rant We're gonna do a detail And I want to get the iteration value from my loop data node So inside of this particular node here if you were to go to the detail option You see that we have this iteration detail attribute that we can use To generate a random number from and so we're gonna look for that So we say iteration zero and I want to fit this between Zero and one because the rand function is gonna return a number between zero and one and I want to fit this between something like 0.01 and Let's say 0.5 as our max Like so and so you can see now we're starting to get some random paneling designs Right like so and maybe that's a little bit much. Let's say our max is like two five Something like that Yeah, so we're starting to get something there. Let's also Just do a rand Let's actually just copy this right here. So I don't have to type all that in anymore So just do random function or a random Value from this detail iteration value and that gives me kind of this staggered look All right, and so now we can go and change, you know our selection values But at least it gives us a nice way to just put this up into smaller panels And you can play around with your weighted grouping values as well. Maybe like 0.1 That point zero one was fine Maybe just point two. Yeah, really depends on the look you're going for All right, so with that we now have our panels to work with so let's move on to the next step Let's actually put some net boxes around these guys and I'm gonna call this my setup and This is gonna be called our grouping So do our grouping like so Very cool. All right, so with that, let's move on to the next step All right So now we need to do is make our panels because pretty much have all the groups and stuff that we need So I'm going to do a poly extrude here And this guy is going to then inset a little bit like so this basically is the paneling Thickness so the panel lines thickness I would say Very cool, and I want to output the side here so I can go and split that away. So let's split that And we will split that on our extrude side here And then I'm just going to invert it because I really just want to give My paneling lines just a little bit of a depth to it now We're also going to have to fuse These guys here. So I need to fuse this in order for this to work. There we go And then all we need to do is Go and give this a little bit of an inset. So maybe like point zero zero five And then just a tiny bit of depth and basically this becomes your paneling lines. This works really well for normal apps Stuff like that you play around with that even more It really depends on the look you're going for you can also round it out as well if you want to create More of a rounding effect. I'm gonna actually leave it this way. It'll give it a little bit more punch in the norm up All right. So with that we can go then and merge together our base panels These are our base panels And our paneling lines. So let's turn off our groups and attributes there take a look So now we got our panels now. I just want to put the bolts on this. All right And so for that we're gonna have to go an inset from our panels. So let's take care of that so I'm just gonna do a poly extrude here and Inset those guys just a little bit. Let's turn back on our wire frame on shaded there by hitting shift w And then let's just middle mouse click and drag use the increment ladder here. I'm gonna pick a position here and I don't need the side for this Very cool. So now that's basically where all of our bolts are going to go I'm gonna create a group node and get the borders the border edges. All right, so I'm just gonna call this borders And set this to edges And we are gonna basically do it by unshared edges that basically gets me a group here that I can keep Right and what I want to do is I want to get rid of all the other edges All right. So in order to do that, we're just going to use a dissolve node All right and inside of here what I'm going to do is I'm going to say exclamation mark borders And what's that saying is we want to keep everything but those border or we want to actually it's the reverse of that We want to delete everything but those borders and I also want to uncheck our remove inline point So now you can see we have just a perfect Outline for our paneling right Very cool. So what all we need to do now is just extract curves out of this So let's just use a carve node for that So I'm just gonna do that and in this carve node I'm gonna set the first to zero and the second you to one and we're just going to basically cut it all Internal you break points and this will give me primitives for all that stuff Super cool. So now I've got curves, right? So there's no more geometry here And then from there We can go infuse everything because I just want to get these back into single primitives here So I'm going to basically resample it. So I'm going to fuse all those points together and then use a polypath node to turn those back into just Regular curves that we can use to resample. So now if you look at your primnums You can see you have curves for each one of those panels Super useful. It's actually very useful for a lot of different things. This whole technique here Doesn't have to be handling. All right. So then at this point, let's just resample this This will give us our points to copy to and I want to resample a polygon edge If you don't have that on you can see you get these Corners here now you might want that I don't know it really comes down to what you're modeling All right, so now we've got a bunch of points along our curves here And so I'm gonna set this to like point zero five for now. Actually, let's do point two Yeah, that looks pretty spaced out Cool and that basically gives us our points now We also are gonna need our normals And so we need to track back into to the point where we actually lose our normals, which is at the carve node here So let's do an attribute transfer here Let's just do attribute transfer. Where are you? There you are and Let's do that Sweet and so inside of this attribute transfer. We really just need to transfer the end All right, just so we just so we know so with all that information now Let's go and create a sphere. This is going to become our bolt. So let's go and create that Let's set this to polygon and Let's make it kind of smooth here The final mesh won't have the actual bolt geometry on it Then let's clip this in the z-direction All right, so let's go and do that so z-direction the reason why I'm doing in the z-direction is because It's going to whenever we copy to a point It's going to be facing in the direction of that normal and so that is the z-direction for whatever copying onto the points Beautiful. So now we've got our bolt Let's actually use a transform make it a little bit flatter. Now you don't necessarily have to do this But I'm just going to scale it down Z a little bit make it feel more like a bolt head or maybe a rivet head Like so you can make any shape that you want there We can also control the uniform size of this as well, which is going to be very handy for our bolts And then finally all we need to do is put down a copy to points node So let's just select both these notes here and feed them in to the first input and there we go So now we got bolts all over everything and let's go and scale this down until we get a nice Size now one thing you might want to do is just a really subtle effect here is do an attribute randomize and Randomize the p-scale value So that'll control the scale of all these guys and for this I only really need the dimensions of one because it's just a single scale value And let's just make it really subtle so point seven five to one Yeah Just really subtle just to break it up a little bit more All right, so now we've done that Let's merge everything together Yeah, so let's merge our bolts in with our panels over here Do a little bit of organization and there we go So now we have bolts and panels pretty cool and actually relatively easy So but that's why I really wanted to show this particular technique because it's actually not that hard You just need a good way to extract out just the curves, right? So now we have control over our inset for the bolts here By using this slider so we can inset these guys to wherever we want them to be and then you have controls for the size of your Paneling lines here usually keep these guys pretty Pretty tight there and then you also have controls for the depth. So let's do the lines depth just so we know This is going to be the bolt off offset and This is going to be the lines thickness like so Cool, and then let's Bundle all this up in a net box here. We'll call this panel construction There we go. So with that we're pretty much good to go So all we need to do now is get our color IDs working And we just need to bake out some normal maps in our color map in our anal map So let's do that in the next step Let's now focus on getting our vertex colors all set up for the color ID mask inside of Quixel mixer So I'm going to start with the bolts and that was easy I just need to add a single color here and what I'm going to do is I'm going to sign it to my Primitives and we're just going to give it a red color. That's what I did for my example and I think the B scales a little Too much. Let's do a point eight five. I just want it to be really subtle Yeah There we go. All right, so then we need to do the actual panels themselves And so I'm going to create an assemble node here And this is actually a nice trick to get these color ID maps out quickly So I assemble it and that works because these are all separate pieces of geometry They're not fused together. And so now we get a name attribute per piece there So you can see now we got a per piece and then all we can all we have to do is drop down a color node here and Set this to a random by attributes. So I do primitives Random from attribute and that attributes is this name attribute So if I just do name and it can be any attribute as long as it represents each panel So now I have a random color for that So now when I merge these guys in here, I get all my color IDs So this will allow me to put like sections of paint on certain areas of the model And I have a way to mask out just the bolts using the bright red or a value of red Cool. So one thing we do need to make sure of is that we promote this to vertex color So I'm just going to promote this from primitive to point and the attribute We want to promote is the color attributes There we go. Cool. So the next step now is to generate the lures mesh and the UVs for it. So let's do that in the next step All right, so let's go and get our low res hooked up So I'm going to utilize an object merge node and I'm going to grab the two before we cut it up So I'm just going to call this get low And with this selected I'm going to come up to the top here And one thing we should do is actually just put down a null node here We'll call this our low mesh Just so we can represent quickly. So let's go select our object merge node again And I'm going to drag and drop that null node right into that object one right there And then turn off our transform information because we don't need it It's being created inside of this node. And so the transform information is already there So now we have the low mesh, right? It's just the two before we cut it up, which is going to work perfectly in this particular instance All right. And so in order to create nice seams for this I need to figure out how to get or select I should say one of these Edge loops here. And so I want to do it procedurally. I don't want to do it by hand So I'm going to do another group by range here And all I really need to do right is that this the point so let's set that to points there And I need to get the number of columns Because I want to select one point out of every single column here All right, so to get that number of columns we go up to the tube here I'm going to get the column value I'm going to copy that parameter And I'm going to then paste this into this guy right over here So we're going to select one of so many columns Right, so one of 49 in this case. That leaves me with this one point But you'll notice that for every single row it selects one So one of every 49 points there Right, it selects it Now one thing we should do Now this will totally work right off the bat I'm going to actually roll through this process before we split this I actually want to split it into two so I have more space on my texture sheet All right, so I'm going to call this group my scene points And I need to do a group promote because Our UV Flatnode works with edges All right, so I want to get a group promote And I want to promote this point group to an edge group And the reason why I'm doing that is because here inside of this group by range There is no edge group selection there And so I want to convert from my points to my edges And the group I want to convert is the scene points And the new name is going to be called seams Now you'll notice that I get all these edges here So I just want to include only elements on the boundary And that gets me a perfect seam I can use for the UV Flatnode So now I can drop down that UV Flatnode Like so, hook this guy up like that And then set my seams or my seamas Let's actually change that just so we're professional here All right, so seams beautiful Now I'm going to save my scene going to my UV view You can see now I have a nicely unwrapped tube Procedural UVs for a tube Now like I said before or I said earlier I want this to be split into two shells basically And so to do that I'm just going to divide this column count So let's actually click this label here to get back to the expression I'm going to divide this by two And let's go and take a look at here And you can see that it's actually kind of offset a little bit Now that's most likely because we have an odd number for our tube And that actually is not most likely That is the reason if I were to put this to 50 Yeah, so now you can see So I have to keep that number even in this case at least Not a big deal All right, so now we get perfect seams there And if I were to take a look at my UV flatten I have two shells so now we just need to do a UV layout node Beautiful, look at that, these are perfect All right, so I'll probably drop I just want to take up more space in there Now this is the only downside to this particular technique This is totally not procedural what I'm going to do right here I'm just going to scale this on X so it fills up the entire sheet there And that will totally make it really rough to actually put decals on it So in this particular case your decals will have to be meshes that sit on top of the low res mesh But in this demonstration it'll work just fine All right, so let's put an up box around this And I'm going to call this my low mesh And this is my high res mesh And all node here just to give myself some information There we go, very cool And then the last thing we need is our bake node So let's do a labs mass baker I do have the latest version of the set effects labs toolkit So you'll need that in order to use this particular node Now if you don't want to bake here inside of Houdini You can always do it in substance painter or whichever baker you are most comfortable with Or like the best All right, so with that all done We're now ready to bake So I'm going to bake this to a 2k map here And I am just going to send it to wherever the hip file is saved Into a render folder I'm going to leave this at default like so Let's take a look at our trace distance I'm going to set this to something smaller So 0.05 I don't need to cast the rays that far And then I want to make sure I generate my normal map My vertex color map and my AO map That's really all I'm going to need for Quixel mixer So with that I'm going to hit save To save the scene And then we are going to render this out And when that is done I'll be back and we'll take a look at the results All right, so let's take a look at this Looks like we need to put some normals on all this stuff So let's put our normals on here Totally forgot that step So normals, I'm just going to make sure that this is totally smooth And for our high res mesh We'll do the same Actually I'm going to put it above my null node there So now we have proper normals for everything And I'm going to have to go and bake this out one more time Because we got weird normals there Just because there weren't any normals present All right, so I'm just going to bake this one more time All right, and there we go Much better So make sure to put those normals on there All right, so that looks pretty good We have a nice AO map and we have a nice normal map So with that all done Let's jump over into Quixel Mixer And take a look at texturing this All right, so let's jump over into Quixel Mixer And get this guy textured up I won't take that long And to do that we actually need to get the FBX file out of here So I'm going to drag and drop a ROP FBX Output node here And I'm going to delete this export OBJ And just wire in the low res mesh into the FBX node here And I'm going to call this my whole Panels 002 Because I already have one created So I just want to make sure I can find this particular one So with all that, that's pretty much good to go Let's do a save to disk And let's jump into Quixel Mixer here So I've gone ahead and created a new mix Inside of a new project And I'm going to go to my setup tab here And go to custom mesh for the model settings And that particular asset is right here So it's probably going to be a different location on your machine So I'm just going to load up the FBX file So that way I can see my glorious tube here Let's go and load up our normal map So let's go get our normal map here I'm going to go into where I save those guys So now I have my normal map That's looking pretty good Let's load up our occlusion map I'm just going to increase the intensity on that It's looking pretty nice so far And then finally we need our material ID So I'm just going to turn this guy on By loading up the material ID texture as well Cool, you can see it's already automatically gone And isolated out all those colors for you So if you want to specify your own colors You're going to have to do that inside of Houdini But that's why I use that assemble node technique So let's go back to Houdini here really quick And take a look at that That's why I do this So it's really just an assemble node And then a color node with a random from attribute Just really quick way to generate a bunch of different color IDs So the first thing I did here In my local library I just went to metals And I plopped on this iron first I kind of blended two metals together So right off the bat that gives you a really cool look The one thing I do need to do is go to my placement And turn down my scale to something like 0.1 And you can also scale up your bottles inside of Houdini By just putting a transform node That actually looks pretty good And then I went and put on an aluminum on top of this Just to blend them together Again I need to plop the scale down to like 0.1 Because I like the different scratches there So let's do 0.05 Yeah, it's pretty good And then you can go and mess around with all these values here To get the look that you really want Really shiny It's pretty cool right there Alright, so one thing I noticed about the Starship SpaceX Starship Is that the aluminum You see this quite often is kind of wavy It makes it look kind of fragile But it is pretty strong So what I did is I went and turned on my smart materials And they actually have an aluminum foil Yeah, so I put this aluminum foil as my base there And right off the bat it's going to be way too strong And so one thing I don't want is any of that displacement I don't care about any of the displacement For this particular model Alright, and most of the effect is coming from this folds Right here, and so I'm going to pump up the radius So it blends nicely And then for the scale I'm just going to Find a good location for this I really want to make this kind of large And I also want to kind of pull back the normal So I'm going to go to the normal here Just pull the normal down a little bit And it just gives it that kind of cool look For these different panels Yeah, very nice Alright, so the next thing that I did Is I went and created a solid layer Over here And did I just put that in there? Yeah, let's move this up and out of that group So I created a solid layer This really is acting kind of like dirt Alright, all the defaults are pretty good here I'm just going to go and make this like a dark brownish color So I'm going to go and add a mask stack to this And the thing I want is curvature Alright, and the levels I'm just going to tighten these guys up here a little bit So you can see it's already starting to work pretty well Something like that And then I usually take a noise through that Alright, so I add another noise to this Like a simplex noise Change the frequency, the amplitude Can be changed to, it really depends I'm actually going to leave it I do need octaves though And we can up the kind of noisiness of it And then just multiply this over And it just kind of breaks it up Yeah, that's going to break that up like so Yeah, pretty cool So what I need to do is Let's turn off our metalness, there we go Yeah, it just really kind of highlights those paneling lines Ah, you could do whatever, you know There's a lot of different things you could do here Alright, so then I went and created another solid layer And basically this acts as like the paint And so I'm just going to pick like a dark I think I did like a black color here And I'm just going to use the add ID mask And just start picking random colors from here To get something that I like Maybe not that one That's kind of cool Yeah, it just kind of lets you explore You know, different looks Got a really tiny guy right there Yeah And that pretty much was that You know, you can go and mask all that stuff out If you want some noises and stuff Actually, what we can do is just copy this mask back And let's paste it onto our paint That's going to get rid of it So all we need to do is just invert it Yeah, it's about picking up the curvature stuff Very cool Alright, and that is how we create procedural panels Inside of Houdini You can always go back and change any of these values up here Alright, so if you were to change, you know, something like the rows You get different paneling looks, paneling designs Really depending on the mesh that you want And then you can also go and, you know, add another channel here To change all your weight and your seed values So you have control over that And then just re-export Easy peasy Obviously, you know, this is working well for a tube If you have something like a boat hull or like an airplane I'm sure you're going to have to, you know, find a couple other tricks But that is the core idea right there That's the core concept behind extracting out these paneling lines And creating a cool textures form Alright, thanks so much