Submind YouTube summaries
Thumbnail for Houdini 18.5 - Procedural Props #3 - USPS Mailbox

Houdini 18.5 - Procedural Props #3 - USPS Mailbox

Watch on YouTube

Video summary

This video presents a comprehensive procedural workflow in Houdini 18.5 designed to create a detailed USPS mailbox prop that is subsequently textured using Quixel Mixer. The process begins by generating a side profile through grid manipulation and group expressions, which isolate specific points for beveling with PolyBevel and vertical separation to control height. A boolean operation creates the mail slot cutout, refined via linear tapering, while geometry is mirrored across the X-axis after correcting normals using Skin and Reverse nodes. The UV mapping strategy involves identifying seams through point sorting and flattening the layout in a dedicated node before final arrangement for proper tiling and padding, ensuring efficient texture application throughout the model. The construction of specific components follows a highly procedural approach to maintain flexibility and symmetry. Side panels are extruded from the initial profile with added thickness, while decorative trim pieces are formed by converting lines into curves that include extended legs via Copy To Points at endpoints. Foot pads and bolts are generated using PolyExpand 2D techniques where spheres are clipped to corners and mirrored for balance. The door is constructed as a NURBS surface derived from specific edge groups, allowing users to toggle its position easily; it features beveled edges, extruded thickness with decorative details, and an attached handle created by sweeping rounded tubes along curves defined via Wrangle normals and Point Sort tricks. All these individual components are UV-mapped based on edge angles and organized within a unified layout before baking. Refinement of the geometry focuses on realism through precise adjustments to bolts and edges. The creator moves bolts inward using point expressions with explicit normals, calculates outward-facing vectors via cross products, and resamples them along polygon edges for even distribution while alternating their placement. To soften harsh transitions, selective poly beveling is applied after blasting specific faces like the bottom. Color IDs are assigned randomly to distinct sections such as green or blue areas, trim pieces, bolts, feet, and body parts, ensuring visual variety without adding extra geometry. Occlusion masks are generated by dividing the mesh into dense polygons with a small scale, applying mask-by-occlusion settings adjusted for blur, bias, samples, and ray distance to minimize color bleeding in the final output. The texturing phase combines these procedural elements into a cohesive material setup using a Labs baker node that merges low-resolution geometry data with high-resolution sky inputs at 2K resolution. The base blue material is modified with parkerized steel adjustments for roughness and metallic properties, while rusty green sections utilize bumpy paint effects achieved through albedo removal to simulate weathering. Additional layers include scratched metal textures responding to curvature, rusted sheets on lower sections, aged materials above, and the baked occlusion map topped with an official logo overlay. This final bake produces a highly detailed asset where custom attributes are mapped as grayscale vectors for accurate lighting interaction, resulting in a realistic USPS mailbox ready for integration into larger scenes.
Read the full video transcript
howdy guys handypixel here in this video i'm going to walk through the creation of this mailbox prop completely made procedurally inside of houdini and then textured here inside of kwixel mixer and so i'm going to walk through how to build up all the shapes completely procedurally and how to procedurally generate all the uvs and then finally how to bake out all the necessary texture maps for quiksil mixer and then i'm going to walk through all the layers for this particular texture here all right so lots of stuff to cover let's get started all right so i'm going to get the mailbox started here by dropping down a geometry node and i'm going to type in mailbox i'm going to hit enter on the keyboard and then drop down a grid and this is going to serve as the side profile for my mailbox i'm going to put in 101 for the size and 2 and 2 for the rows and columns and then set its orientation to yz then i'm going to drop down a group expression node because i want to group just the top points of this grid here because i want to bevel them and create a nice rounded top for this type of mailbox and so i'm going to call the group name top we're going to set the group type to points and for the vex expression i'm going to type out at p dot y is greater than zero and that will group just those top points because they are above the grid here and then we can polybubble those guys so let's drop down a poly bevel and we're going to work just on the top point so let's select it from the drop down there and then i'm going to set the distance to 0.5 and that will be equidistant on both sides there and so let's add a bunch of divisions there we go it looks pretty good yeah it looks fine you can add as many as you want and then i'm going to fuse them because the poly bevel will leave a couple points appear right on top of each other so let's just fuse it to clean that up all right and then i'm going to drop down another group expression node and this time we're going to group the bottom points here because i need to create the overall height for our mailbox so i'm going to call this the bottom and we're going to type out at p dot y is less than 0 this time and set the group type to points and that will select just those bottom points there then i'm going to drop down a transform node and we'll just move the bottom points down however much we want i'm going to do 0.5 just kind of keep all this all the values here nice and even and consistent perfect all right so i'm going to drop down a no no we'll call this out side profile now i want to go and cut out the little section of the top of the mailbox here that has the door where you drop the mail in and so to do that i'm going to drop down a box i'm going to boolean out the shape of a box on the side here from this particular shape and so let's go and do that so let's drop down a boolean node i'm going to wire in the profile into the first input and then we're going to take this box and put it into the second input there and then we just need to orient this appropriately so let's take a look and see where the profile is and then let's take a look at our box and if we were going to our side view by hitting spacebar 4 we can move this guy up and i do want this all to be procedural so i'm just getting a place of just 0.5 and 0.5 i could have done that on my own that was easier and faster though all right so now when we boolean this out we get you know a nice profile i mean it'd be kind of nice if we did a linear taper as well just a little bit of a taper to give it a little bit more interest so if i drop down a linear taper and i set the capture origin in y to 0.5 then add a little bit of taper yeah you can see on the profile here it's giving it a nice little slant which is kind of cool yeah all right cool so then we want to go and match size here so let's drop down a match size node and i want to set this to min like so very cool so this is going to serve as the side profile so let's move this guy over to the side so i'm going to drop down a transform node and we're going to set the translate in x to 0.5 and then i'm going to name this node width as this is going to control the width of the mailbox and then i want to drop down a mirror node and this mirror node is going to flip this over in the x direction by default for me and that's perfect that's exactly what i'm looking for and then i'm going to drop down a skin node and by default it's going to get flipped as it skins the geometry so we need to select the mirror node and turn off the reverse normals and that adjusts that but then we still have inverse geometry and so to fix that we're going to drop down a reverse node like so and that will take care of that very cool all right so the next thing we need to do is produce some uvs for this and if we take a look at our uv editor we don't have anything just yet in order to do this we need to produce some seams so how are we going to do that well i want to select this edge and the topmost edge of this geometry so how do we do that procedurally well one way you could do it is drop down a group by range node here so we take a look at the group by range set it to points i'm going to call this seam i think that'll be fine for now and if i set this to the end of two i want to select the last two points in the geometry but currently after all the mirror and skinning operations our point indices are all out of whack so let's drop down a sort note to get that reordered and we're going to set the point sort to by vertex order like so and now if i were to go to my group by range node you can see the last two points are right here alright so i'm going to keep that i'm going to invert the range and then i need that to be an actual edge but let's go and select the top two points as well so i'm going to drop down a group by expression node and like we've seen before we can actually get those top points there but we we need to type in a little bit different of an expression for this so i'm going to call this points and this one is going to be called a scene just like this guy and for the merge operation we're going to say union with existing so that way they add to each other so i'm going to say at p dot y is equal to the get bb box size and the incoming geometry is 0 and we want to look specifically at the y component and you can see it added the top two points here so now with those points selected we can drop down a group promote node and convert that to edges so let's convert the seam to edges in order for this to work we need to say that we include only the elements on the boundary and so we end up with these two seams right here so the new name let's just type in seam and then let's drop down a uv flat note and for the seams and the flattening constraints let's set that to seam and then hit 5 on the keyboard to take a look at our uvs that looks pretty good one thing we can do is put an asterisk into the rectify group and that will just even it up so it just straightens everything out into a perfect rectangle which is perfect for this type of prop uh and the last thing that i need to do is drop down a uv layout node i'm going to go to 5 for my uv layout view and i'm going to hit enter so i can see the gizmo for the transform and i want to just put this into a region here because i'm going to save some space for the other parts and pieces of this mailbox and then i want to set a few of these parameters on the uv layout node i'm going to set the scale islands to match their surface area so we get a nice even textile density around all of our uvs i want to then apply the padding just so we can space it out so we don't get any mipmap bleeding or anything like that i'm going to add some padding of two i think for now and yeah that is everything so now if we have one on the keyboard to go back to our scene view and put in a ue visualize node from the labs toolkit which is very handy and then set the texture tiling to one and one you can see we have perfect uvs and if i go and change the width now to anything else it's just constantly going to be updating awesome so i'm just leave that at 0.5 for now and now i want to go and focus on the side pieces for that we're going to need to go and grab the profile before we blend it out right the side pieces are not cut out on the sides here so we want to sample it from up here and then i'm going to go and create a reference copy for my width node so i'm just going to say create copy that way it just copies over all the settings so we just have one place where we change the width value all right so then i want to create some uvs for this guy right off the bat this basically is the geometry we want to use so to do that i'm just going to drop down a uv texture node and we will select the face option for the texture type and if we switch over to our uv view by hitting 5 on the keyboard you can see it just maps the entire face perfectly to world space so really quick and easy way to do that then i want to go and poly extrude this guy out just to give it a little bit of thickness on the sides all right so let's just go up here and just pop this out a little bit let me turn off all my component displays so i can see a little bit better let's go and also output the back when we put this on the side so we have to make sure that we see something in the little cutout over here all right cool so i'm going to go and expose my extrude front group and then the extrude side group let's just expose them all for now because i'm going to get rid of all this geometry on the side here we're going to put more of a kind of a decorative element on the side here just like you see on the real mailboxes and so i'm going to do a blast here so how do we get rid of the side well if we drop down a blast node and blast away our side group we're left with the two pieces but i need to keep the geometry at the bottom here and so i'm going to drop down a group node here first above the blast node and i'm going to say keep by normal so i'm going to turn off the base group we'll call this bottom and i'm going to set the direction for the normal to check is the negative one direction y and then we'll set the spread angle to zero and that selects just that bottom piece like so and then inside of our blast node now we can say that we want to blast away our extrude back our front and our bottom and then just reverse that that gets rid of all those guys cool so looking at our uvs again you can see that the polyextrude node added some uvs for us for that side group but we need to put this back into something a little more reasonable so i'm going to hit 1 on the keyboard and then drop down a uv flat note again and take a look so let's go back and that is exactly what i need so in this case the uv flat node by default if you don't put any seams in there we'll just take the border edges of your geometry and use that as the seam i'm going to put an asterisk in for the rectify just to make sure that it's nice and rectangular cool so all we really need to do now we've got our uvs let's just drop down a mirror node and we'll flip it in the x direction and then we need to lay out our uvs for that specific shell so let's drop down a uv layout node and then let's merge these two guys together here at the bottom so i'm going to select this merge it oh and we also need a match size as well so let's just uh alt left click and drag to make a copy the previous one we had and there we go so now we're starting to get the the main shape here again like i said we're going to put a different element over the sides here so i'm not worried about that right now all right so with this merge node turned on let's select our uv layout to there and go to our uv view i'm going to hit enter on the keyboard and i'm going to move these guys up to somewhere around here i think that'll work let's actually just do that and then let's make sure that we could make a little bit more space actually but first let's go to our uv layout node we'll scale the ions to match their surface area and then we'll add some padding in there uh and then let's hit escape over here in the uv view then select our other uv layout node that's controlling the main area here let's scooch this down a little bit and then maybe make these guys a little bit bigger so the side pieces can be a little bit bigger have a little more space yeah there you go perfect so let's check out our view vs now with the visualize node that looks pretty good so let's go and change our width just to make sure it's always a good idea to check as you're modeling your procedural models and that is working beautifully so i make it really wide let's take a look at our evs so you can see what's happening it's just constantly updating to fit within that area as best it can so let's put this back to 0.5 there you go so now i want to focus on the trim piece uh this decorative piece that goes around the side it's not really decorative it's more of a structural piece trim piece that goes around the side here and the little legs on the bottom so i'm going to go and drop down a convert line node and i want to go and grab our side profile and let's actually grab it from our mat size over here so that way it's already sitting on the grid perfect so for this to work i don't need the bottom piece here and so the convert line split all this up into separate primitives there so in order to get that bottom line procedurally i'm going to drop down a sort node and say sort by y and the primitive sort and you'll notice that this gives us the primitive of zero at the bottom always because it is the lowest so i'm going to go and get a blast node now and we can just blast away primitive zero because we know that that is always at the bottom so then let's drop down a polypath node and select connect endpoints and that will leave us with a single primitive so we just have a single curve and we should drop down a sort node as well just so we can redo our point order you can see we're getting zero one two somewhere around there so let's do um by vertex order and that just cleans that up so it's zero to one and with that now i need to go and add the little leg so this currently if we were to template our main area for our mailbox this currently only goes down to the bottom of the main box area but the legs actually stick out a little bit farther so i need to add on a little bit more to this curve that we just generated so to do that i am going to drop down a line over here so let's drop down a line and this line is going to point in the negative one direction in the y direction there and let's make it a little bit smaller this will control the the leg height so let's actually name this appropriately then cool and then let's copy it to a point so let's drop down a copy to points node and let's wire in both these guys so the line goes into the first input the profile goes into the second input and now currently you'll notice that we're getting a line copied at every point and that's not what we want what i want to do is drop down a group by range node and just get the two end points so the first and last point in our curve so i'm going to set the group type to points i'm going to call the group ends and we're going to go down to the sliders here for start and end and just increase them to 1 and then invert the range that gives us just those two end points there and then in our copy to points node let's say the target points now equals those that ends i totally misnamed it there we go we'll call it ends appropriately awesome all right cool so now we have our little legs that we can attach on to the end of our main profile here so let's do a merge node now and with that we can then drop down a polypath node and say connect endpoints and we now have just a single primitive again so if we turn up our point numbers you can see we just have a single primitive and we should always go and clean up our vertex order so let's drop down a sort node and we would say point sort by vertex order so now we have 0 1 2 3 all the way around to the ends perfect so with that done we need to create the actual profile that we're going to sweep along this curve here so for that i chose to do a grid so my previous test here i chose to use a grid and i'm going to set this guy to one and one in fact i'm going to use my preset just so you guys can see me use that so i just created a preset called unit grid and it sets it to one and one and two and two for rows and columns now for this guy i really only need the xy plane for this one and then i'm going to go and drop down a match size node and this guy is going to be set to the max of justify x so we're saying max and then min for justifying y and the reason why i want to do this you'll see once we copy it or we sweep it onto the the curve is i just try to find the position you can always do this after the fact as well let me then convert the line here so we get a primitive per segment in our geometry so we have a segment per piece there and then let's blast away the parts that we don't want so in this case i don't want primitive 2 or 1 so i'm going to say 2 space 1 and then flip it that way we are left with just that cool so that's basically the trim profile but i need to give it a little bit of thickness so let's poly path this so it's back into a single curve so connect ends and then let's do a polyexpand this will add our thickness to it so polyexpand 2d is really useful node for stuff like this so it just gives a little bit thickness so we can control it as well let's um add a little bit of a bevel to it so i'm going to drop down a poly bevel node and let's just bevel the points let's just do a little bit just so it catches some light it doesn't look so harsh all right so let's then drop down a sweep node so i'm going to feed this in for my backbone and then the second input is going to be my cross section of this profile and there we go so we need to make this obviously a lot smaller let's drop down a transform node and get this into an appropriate position so i'm just going to use the uniform scale for this and let's actually template on our main mailboxes so we can see what's going on and let's turn off all of our component displays and it looks like we need to reverse it also so let's reverse it all right and then i also need to well we could either flip it or we can um just put it on the negative side and then mirror it to the positive side let's scale this down just a little bit more it's still way too big for my taste oh something like that all right then let's move it over so i'm going to do a transform and we're going to move it negative 0.5 for this one and i think i want just a little bit more yeah because we need to account for the the size of the poly bevel on our sides but that hides it quite nicely yeah that's perfect then let's uh mirror that there we go so now we have the two so the other thing we need to take into account is the uvs for this so for this sweep node we can do this quite easily we can go to the compute uvs and i don't want to normalize it but i do want to keep the length weighted that'll actually keep the full length of that uv shell there and i don't want to snap i want the actual width and length of that whole entire piece and then we can go and put this into the side over here for our uv layout so let me go and do a uv layout node and turn this guy on and then i'm just going to move this and put this guy over here so i'm going to say these guys can go over here i'm going to say for rotations we can do 90 degree rotations and we'll just keep this guy in that area looks good let's also scale to match it doesn't really matter for this one let's apply padding and all that's good stuff just so we don't get any mint map bleeding yeah there we go so let's merge it into our final merge node over here turn on our uv visualize and let's turn off the template over here look at that we have something that looks kind of like a mailbox now we can throw down a mat size here as well just to get it to sit on the ground voila mailbox so we have a couple things that we need to take care of first i want to put bolts on the side of these trim pieces we need some little foot pads down here with some bolts on them and then i need the the door so let's go and take care of all that stuff here so let's start with the feet so i'm going to put the feet on the the bottom of the legs there and to do that i'm going to drop down a object merge node and i'm going to get the profile so i need this profile here so let's just drag and drop that into the object and let's set the transform to none and let's make a copy of that by using alt left click and drag and let's get this profile so i want to copy the same profile but we're going to just treat it a little bit differently so i'm going to drag and drop that into there and then we're going to do a copy to points so i just want to copy it to the endpoints of the profile so this actually needs to go over here there's our path and this is our profile and we're going to copy that and we just need to copy it to the endpoints of our path up here so let's go and get the group by range node and let's set the group type to points we'll call this ends for the group name and we'll set the start and end of one and one and then invert that range and that'll get us just the endpoints for the path and then on the copy to points node we can set the target to just the ends sweet so let's go and template this geometry just for reference and i'm going to drop down a transform node and we're going to rotate this in x by 90 and i'm also going to scale it down and then i also need to rotate it let's do 90 and y and let's just keep going with that there we go we need to do 180. there we go cool so that fits this one guy right over here we'll take care of this one pointing in the wrong direction here in just a second then let's go and poly expand 2d the profile let's get something a little bit fatter than our original curve or our trim curve over there that's looking pretty good and then i want to go now and carve we're actually not card let's do a poly bevel and let's poly about with the points on these feet pieces here so we're going to go up here go to points and we're just going to probably bubble that and let's make them round so we're going to add two actually three divisions there that looks good all right sweet so now we've got that guy uh to take care of this particular piece pointing in the wrong direction let's just drop down a clip node now and we will clip in the z direction like so and then we'll just mirror uh whatever we finish for our feet pieces so we'll mirror it on the z-axis and that will take care of that problem for us perfectly so we can merge it with the actual trim and legs and stuff like that all right cool so before we do that let's go now and create a little bit of depth of this so i'm going to do a poly extrude and we are going to shoot this guy down so i'm going to do it downwards this time it doesn't need to go much then let's go and expose the output back and we don't need the front in this case and then let's reverse that geometry just so we have the faces pointing in the correct direction awesome so now we got our you know at least the little footbed there we're going to add some points let's first drop down a poly bevel here and we are going to bevel our edges just want to give it a little bit of something then let's set the exclusions to oh let's do 45 then there we go that'll work out nicely i'll just catch some light so it doesn't look super harsh all right now i want to take care of the bolts and so for that we can take the original polyexpand geometry here and drop down on polyextrude node and what i'm going to do is just inset this to get to where our points should be or where our bolts should be and i actually want to do so let's do it this way let's poly bevel after we clip yeah we'll do this i'll do that over there because i really just want uh a bolt at all the corners here and that looks like it's going to be perfect all right so then we're not going to output the side and i'm going to create a sphere this is going to represent our bolt and i'm just going to clip it so far to look at the geometry for this i'm going to set it to polygon and we're going to clip it in the z direction so i'm just going to set that to the z direction perfect now that we've got that all set up we can copy it to the points now of the inset geometry up here and then we just need to scale it way down so let's draw in a transform node and we'll just get way down until we get an appropriate size here yeah something like that looks good to me and i'm going to reduce the radius on the sphere just so it's a little bit flatter on the z direction here awesome all right so now we can mirror all that stuff together so we have our geometry for the feet and then we have our bolts for the feet so we can just merge all that together now and mirror it over so now we have both the feet pieces so the last thing we really need to do is create the uvs for all this stuff so for the footbed here i'm going to drop down a group node and try to select some edges that we can use as seams and so i'm going to call this seam i'm going to set the group type to edges turn off the base group and we're going to go to the include by edges and i'm going to turn on the min and max edge angle and then just reduce the min edge angle yeah it looks pretty good so i'm going to use those guys as the seams so then i'm going to drop down a uv flat node and it's really good node to produce uvs really quickly so you can see it's already generating pretty awesome uvs for me in this case i do want to cut it just to reduce any sort of stretching you get a little overlap here you know this is so small you're not going to even notice it so you can do you know whatever you want i'm going to go with that for now and then for the bolts over here i'm just going to do a uv project you could use a uv texture actually let's do that just to show you guys let's do a uv texture and we'll go to and it's already set up because they're pointing in the y axis so it's orthographic and uh y y axis sweet so then we just uh mirror that and then we need to mirror it um one more time but actually we'll just leave it like that for now so let's do a um well let's let's merge it in with the legs first so we have this guy up here yep so i'm going to merge it in with the legs this is where we're moving it over yep so this is our width control so let's merge all this together with our legs so i'm just going to merge these guys together and then we will just move it out and then mirror it and then we do a uv layout so all those pieces basically will go together so let's take a look at our our handiwork here it's looking pretty good they feel a little fat and uh yeah they all got organized up here which actually works out pretty well i'll adjust it here before we finish it up so let's go back to the scene view and i'm going to actually adjust the size of this a little bit more so i'm going to show you guys really quickly how i do that so i'm going to go over to the profile over here right before we put it into that polyexpand let's take a look at our point numbers and our primitives yeah let's do a carve node and i'm just going to do an equal offset from the ends and to do that if you don't have a preset already set up to do that you just copy or just highlight the first u right click and drag it down to the second u and say relative channel and then just do one minus and now you have an equal offset so i really just want to control the size of that so i'm going to come back down to the bottom of the graph here and turn off all my component displays and just start to take a look at this the size and relationship of that that looks pretty good all right i might scale it down a little bit too so let's go back to our transform and this guy right here that looks pretty good yeah i'm going to leave it like that for now maybe on the polyexpand we just bring it in just a little bit yeah there we go that's what i'm looking for maybe we reduce that poly bevel a little bit more there we go and then make the bolts a little bit smaller very nice and all our uvs are still laid out for us pretty cool got a bunch of bolts down here too those guys are so small doesn't really matter they really just need the color maybe just a little bit of detail cool so now we need to take care of the door and for that i'm going to go let's go up to where we're bullying the geometry up here because what we can do is we can export out some groups here and that specific group is the a b seams so if i take a look at the let's drop down a null node up here and just kind of break off the geometry and do a new stream here and if i take a look at the attributes and groups and go to edges you can see i'm getting just these two edges which is awesome because now i can put put like either a little door or hatch right here or a little door hatch right here right so whoever uses this particular tool for this prop can change you know which face the the door is on so that is awesome one thing we need to do is we need to take that group and promote it to points all right so let's do that i'm going to say from edges to points we're going to convert the a b seams to other points and the reason is because i'm going to convert this to line i really just want to grab just the edges here just these curves so i'm going to use a convert line and i'm going to turn off my compute rest length here and we're going to blast away anything that's not an abc point so let's blast that away and delete non-selected and that leaves me with just these just this curve right here right and so we have zero and one which is awesome because now what i can do is i can connect this so we can say we're going to do a poly path here we'll connect this into one path here i'm going to connect the ends all right so now a piece of geometry we can go and copy our width so let's make another reference copy here and i'm just going to drag and drop this over here so there's our width and then we just mirror it and then skin it and that leaves us with geometry that we can use and we need to go back to our mirror node and turn off the reverse normals and then reverse the curves themselves so we'll do a reverse there we go all right so now we have some options here we can put a door here we can put a door here so what i'm going to do is i'm going to split on primitive one that leaves me with this one so by default this is going to be the the polygon that has a door on it but i want the user to be able to decide so i'm going to set up a switch node here and now we can switch between where the door is located on the mailbox always good to find opportunities like that for your procedural tools all right so now we need to put the door on this so to do that i'm actually going to convert this polygon into a nurbs surface and the reason for that is i want to be able to carve out an equal shape out of this so i'm going to convert this to a nurbs surface and we're going to set interpolate through holes and i'm going to set the u and v order 2. that just leaves us with with a single quad but a nurbs quad and then i can take a carb node and i can do an equal offset for both sides right so i'm going to use my preset for the equal offset this allows me to clip off just the sides here and if i were to do the same thing for the first v and second v so let's just copy this and paste this down here and do a one minus and i now have the ability to basically shape the door and it will always stick inside the the width of the mailbox right so we're just going to get a percentage of that polygon that looks good awesome so now we need to convert it back to a polygon because i want to be able to use all the polygon tools so i just drop down a convert node and say interpolate through holes and everything else is fine so all the defaults are fine sweet so now i am going to do a poly bubble and we are going to bevel our points here there we go and i'm going to add three divisions to round it off a little bit so it's not so harsh there we go it looks good and then i want to do a polyextrude just give it a little bit of thickness here so just lift it up just a little bit and then i'm going to export out the x extrude front group and we're going to use another polyextrude and we're going to just inset the top part and then we're going to export the extrude front again and do another polyextrude so you end up doing this a lot where you're chaining together these uh polyextrude nodes and i'm going to lift this one up a little bit and then set it as well just to give it kind of like a decorative piece i also need to fuse the points up here there we go yeah we'll just pull this down a little bit i just want a little bit of a feature there usually has something on them like that cool so the last thing we really need for the door is we need to create uh the handle all right and so we can build the handle out of this top polygon actually so let's do that i'm going to export the extrude front and i'm going to blast it away so let's get a blast node and we will blast that away and we'll say delete non-selected so we end up with just a single quad then we can use an add node to turn this into a curve so i'm going to say delete geometry go to the polygons tab and say by group and we can go and find the we need the the width lines here and it looks like we should sort this so let's sort this and let's start with the vertex order or maybe we do it by z by x that looks good and then we want to do groups of endpoints and there you go so now we have just those so let's drop down a carved node and i'm going to set it to 0.5 so we get the middle of each one of those segments and we're just going to extract the point and then we can use another add node and turn that into a curve so this represents where our handle is going to go so let's actually template our door so we can see where this is going to go so i want to add another carve node and do another equal offset for this so let's do equal offset and we'll just push it out i don't want it to be right on the edge cool so now we need to turn it into an actual handle and so to do that i need to actually move it up in the direction that this door is slanted in at this angle here and we can do that by getting the normal so we can actually get the normal from this polygon right here from the primitive all right so i'm going to show you guys how to do that let's drop down our wrangle node and let's feed in this blast five node so just this polygon into the second input like so and i'm going to get the normal from that so i want to use the prim normal function so we say prim underscore normal so i want to get it from geometry 1 or input 1 there and i want to get it from the current or from 0 primitive number and we want to say 0.5 and 0.5 to to sample the primitive in the center of the polygon what we're doing is we're actually grabbing this normal this direction normal right here all right and we're going to then pass it off to the point so i'm going to say at n is equal to norm so now if i turn on my point normals you can see we have the normals pointing in the right direction which means now we can go and peak this let's do a peak node all right so i'm just going to peak this guy we're going to just lift it up like so i don't want to recompute the normals either so i'm just going to pull this down and then let's merge the original one with the peaked one there we go and then i want to turn this into a polygon so let's drop down a join node and i'm going to say wrap last to first and then turn off my blend and that leaves me with just a single polygon right there that i can use cool so let's then go now and do a convert line because again i need to turn this into a curve that's shaped like a handle so now i need all the outer segments here and not this bottom one all right so how do we do that well i'm going to do a sorting trick so i'm going to sort along a vector and the vector that i want to sort along is that normal direction that we applied to these points all right and so i am going to drop down a sort node all right let's turn off our point numbers and just keep our primitive numbers on so we need this to be zero so we can always blast it away and so to do that in this sort node i'm going to set the primitive sort to a long vector and i want to get the normal direction from this node up here so this let's name it call it set normal so i want to get the normal direction here from point zero and to do that we just come over to our sort node and type in point so we're going to use a point expression i want to get the information from that set normal node or that wrangle node where we set the normal i want to get it from point zero and the attribute that we want is the normal and we want zero for this first input to get the x component from the vector and then i set it for 1 for the y and then set it to for the z so now if we take a look at our sort node it's sorting it by that direction so you can see it's it's got that arrow pointing so now we have 0 1 2 3 which is awesome because now we can drop down a blast node and delete away primitive zero and that is will constantly be the case because we're aligning it or sorting it by that vector all right so hopefully that makes sense i'm going to drop down a polypath node and we'll say connect endpoints very nice and then we're going to do a poly bevel and i'm going to bubble the points and there we go and we're going to add a few more just make it nice and round and now i'm going to do a sweep node and we're going to sweep with the round tube option oh we also need to produce proper normals so let's to do that let's drop down a poly frame node and for the tangent we'll just put in n for the normal and we'll reverse the cross sections in the sweep node here and then let's just change the radius on the sweep and look at that we have a pretty cool little handle increase the amount of segments as well yeah all right so let's uh let's uh produce the uvs as well using the sweep node i don't want to normalize the components and i want to turn off my snapping so that way i get the true width and length in the uv space all right and then finally we can just merge it with the the door over here so i'm just going to drop down to merge node and merge these guys together like so very nice and let's go and test now our switching so if i switch to the other polygon yeah we should get a door up there instead pretty cool the other thing we need to do is we need to uv map this guy so let's take care of that really quick i'm going to do my edge angle trick here so let's go and drop down a group node i'm going to set it to edges we'll call this seam now turn off the base group go to include my edges turn on my min and max edge angle and then just move the min down a little bit until i get what i want yeah i think that will be good then let's do a uv flatten and for the seams we'll put in the scene group and then we'll rectify this guy so just put an asterisk for that and it didn't want to do an awesome job with that but that's fine yeah let's turn this off then there we go it's actually better without it all right so let's feed that in and there we go so now we have our door let's drop down a uv layout and get this guy laid out with the other guys so i'm just going to pull this down here we could start putting all these things in little subnets this one got quite long that's for sure that's fine for now so let's uh merge it in and let's turn on the template with the control key press on the keyboard and then let's go to our uv view with the uv layout for the door selected and let's go and find a little spot for this guy so i'm just going to put them right over around here i think we'll just put it up here i'm going to allow rotations there we go let's just do 90. yeah and let's scale to match the actual surface and looks like we can get away with quite a bit here so we can do something like that yeah that's looking great i might have to adjust a little bit more but so far hopefully you guys can see you know the pattern of just adding more parts and just adjusting your uv layout uh in here it's looking pretty cool let's merge in why is the door not showing up here oh i need to match size it so we actually need to take it from here let's do the match size there we go and we can move this up and then we can play around with the size of it so again we can go and switch this now to wherever we want and let's go and change the the size of the door a little bit that looks pretty cool i think the overall size of the mailbox just needs to be a little taller so if you remember that was from this guy right here so i can just lift this up a little bit more that looks pretty cool all right let's go down now all the way to the bottom and take a look everything is uv'd perfectly and it's coming along so the last thing we really need to do is put on some bolts for the sides here and then get everything banked out and put into a quicksilver mixer so let's do that now let's get the bolts all finished up and that's pretty simple i'm just going to put some bolts on the sides here for this demonstration at least and so i'm going to move all these guys over to the side here and i need to go and get the curve before we add the legs on it so this guy so we can actually sample it from here so let's do that i'm going to actually merge together with all these guys so it goes with this uv layout node all right let's now drop down an object merge node and i'm going to drag and drop this over here and we're going to just say none for the transform information so there is my curve and what i need to do is i need to copy a bunch of bolts to the side of this and i also need to make sure that this is sitting right on the edge of this guy and it already is actually so that's nice so we don't have to do any sort of ray casting i do need to move it inwards a little bit though and so let's take care of that now to do that i'm going to drop down a point node a point expression node and in here i'm going to set an explicit normal so i'm just going to set it in the x direction so one zero zero let's turn on our point normals here and actually i want it pointing the other way well that should be fine actually so and then i'm going to drop down a poly frame node we're going to create our flow normal and i'm going to actually call it forward so let's just do forward so fwd there we go and then in a wrangle node let's just take the cross product of those two we could do it with a point bob node as well so i'm going to say at n is equal to the cross product of at n the current at and and our v at forward so that forward vector that we created and that gets us this normal that's pointing outwards which is fine you can always negate it so we can go into the peak node let's not recompute actually that will recompute and now we can just peek this inwards cool so now we can put our bolts there before i do that i'm going to resample this and we're going to resample by polygon edge so i get a nice even distribution that looks good and then i want to group every other point just so i don't have too many so let's do a group by range so i don't have too many bolts on this thing so i'm going to set the group type to points and we'll call this bolt and i'm going to make sure that we don't ever have well we could always have a bolt down there i think that's fine i don't know i'm gonna just remove the start and end just so we start from there and we'll say every other point so one of two cool so then now we can take our bolt that we created previously so this geometry right here so let's just copy this and i'm just going to do an alt left click and drag there we go and then we can just copy these guys to our points just because it's already made there's no reason to make it again so now we've got bolts so we could make this a little bit more interesting let's actually scale it up a little bit more these guys make it a little bit fatter and then it might be nice to kind of stagger them a little bit we also need to go to the copy to points node and set this to bolt so we get the every other pattern and then let's stagger it a little bit so i'm going to put down a point jitter node for the main path that we're copying to and i don't want to update the normals either and we don't want to do this on the x direction so we don't let's put a 0 for that and then let's make the scale just really tiny i just want a little bit of offset between those bolts yeah this gives it more interest really cool and then we also need to make sure we got some uvs so we can drop down a uv texture node and we're going to set this to the z-axis there we go and then if we merge it together in this stream right here we should get it automatically laid out for us yeah so the bolts are going down there very cool we could always do it a little bit differently so let's do this here this is the that strip so let's keep those guys here i'm going to actually let's do this let's group this so this is going to be our trim and then we'll group we'll get rid of that and then we'll drop down our merge node here and we'll merge in our trim and our bolts and then what we'll do is we'll move those guys and mirror it together but then we'll split down here and treat the uv layout differently so this guy is going to be our trim so i want that layout for our trim pieces and then i want to do a different layout for our bolts and our feet pieces so then we can merge those guys back together so hopefully that made sense i'm just trying to organize it a little bit better all right let's take a look yeah so now we can kind of move these guys around give it a little bit more space so let's do that now i'm going to basically template this guy by holding down control and hitting the template flag then i'm going to select this guy and we're going to adjust the position for this one to something like over here yeah yeah i like that i'm still i still don't like this over here we've got tons of this space so i think what i'm going to do is kind of free up some space here i'm going to go to this guy and we're just going to move this down like so and i think i'm going to move these guys down a little bit too so i'm going to hit escape in there and then go and select this one come back to the uv view and hit enter again and i'm just going to move the gizmo till it fits perfectly like so and then what i can do is i can fit all the bolts up there maybe make some spa yeah i think that's what i'm going to do so i'm going to hit save and then let's activate not that one let's do this one so this one's going to go up here so i'm just going to move this over here and move that up like so that looks pretty good and then i think for this guy i'm just going to move this down like so remove it like that and then we'll do the door i'll just put it out this way or maybe we can fit it down here somewhere yeah so let's turn this guy on and uh we'll do something like that that looks pretty good yeah we still have a big old space over here which is fine you know for the most part i don't really plan on adding any more parts or anything so i think i'm just gonna have the two trim pieces just take up the rest of that that area there so i'm just gonna move these guys over here give it a little bit of a buffer anyways that's how you go i do a ton of that stuff i just go and start to reorganize things and until i get a really nice fit this looks pretty good probably not the the most perfect but it's going to work for our purposes right now there we go we have our mailbox a couple last things i want to do right now i do have harsh edges for this geometry for the the main box so i just want to go and take care of that really quick so i'm going to do that before i create my seams here this is for the main box here so i'm going to go and select this let's untemplate it i'm going to do a poly bevel and we're just going to bevel it just a little bit just want to give it a little bit of thickness for that so that way we get a little bit of light interaction some specular highlights happening on the edges same with this guy and actually let's do it right after we blast the bottom so we're not having to bevel unnecessary things yeah it looks pretty good all right let's hit save and then just check all of our uvs everything should be fine let's go to the uv view and that definitely changed it quite considerably so it looks like this piece down here got a little hosed so i'm going to go and check that out really quick oh let's put it before the sort there we go that's why let's check that out again nope i still didn't grab it well let's try putting it after we find that bottom scene seam yeah that looks alright so let's do that take a look yeah there we go so now we're back to normal all right so with that all done the last thing i want to do is set up some colors so i'm going to actually move this guy up here in the list just to organize this a little bit so i want to create a color id map here and so i'm just going to give all these guys some colors so some random colors give that a bread and then we'll give one of these guys over here so these two guys can actually go hey i'll separate it all out so let's give this like a green and then we'll give this one a blue and then we want to do all these other pieces here let's just do some random pieces so that's the trim these are the bolts and these are the feet all right let's take a look at that beautiful all right so that'll be perfect for quixote mixer or substance painter the next thing i want to do is i want to add in some occlusion so i'm going to drop down a divide node here and i'm going to divide this by the breaker polygons and i'm just going to do 0.01 and 0.01 and 0.01 like so just to give it a really dense mesh like so and then i'm going to drop down the occlusion node so the mask by occlusion and this will put the occlusion mask onto this mask attribute so to visualize it i'm going to drop down a wrangle node and i'm just going to say that at cd is equal to f at mask that will show me my occlusion yeah not too shabby one thing we should do is also provide some normals here and i'm gonna do something like 45 nope let's do yeah 65 was good that looked good all right now we can see our occlusion let's go and adjust it a little bit so i'm going to increase the blurring a little bit and increase the bias over here get a little bit darker let's increase the samples i'm going to set the ray distance to 3 that'll just extend it out a little bit more yeah i think that's good enough so one thing that we need to do when trying to bake this out with the labs baker node is we need to make sure that we set this to a new value so i'm going to set this to v at occ is equal to f mask and we need to make sure that it's set to a vector that way it gets written out as a grayscale image instead of just a rgb image all right uh with that done we now have everything that we need to uh bake with so i can go and set up the baker let's do a bake node so i'm gonna get the labs map speaker and we want our so this is our low res mesh right here we need to pass that into our divide node as well i'm going to set this for the low res and i'm going to set the sky for the high res so we have our color and our occlusion on there and i don't want my colors to be overwritten okay cool yeah we're all good and then finally i'm going to set this to a value of 2k for the texture size and i'm going to send this to a bake folder so rather than render i'm going to set this to bake and then call this mailbox and i want to leave the channel on there so i'm just going to call this mailbox oh that looks good and i want i don't want to do ao i do want to transfer the color which is fine then for the custom attributes i'm going to get that occ value that we set up in the uh the wrangle node over here and so that will get our occlusion for us and with that we're pretty much good to go i'm just going to hit render and let this guy roll and that looks pretty good so we got this result i did notice though if i were to make this a little bigger for you guys i'm getting a little bleeding of the color and that is because let me move this off to size of this max trace distance so let's visualize this and that's the reason why so let's set this to like point zero one and we'll get a better read on that we can even go lower like point zero five yeah that'll be much better all right let's do that one more time you hit render yeah and that's much better so we're getting a much better color id mask and an occlusion mask too it looks pretty good all right so with that now i'm going to go over and just work through the texturing side of things so for the texturing i really just wanted to walk through the layers that i did because at the end of the day i really just you know overlaid a bunch of different types of materials so i started out with a solid material set it to blue and just set a really basic roughness and metallicness over here i added the parkerized i think that's how you say that steel which just kind of modified the roughness in here and the metalness and then i added the rusty green metal and i turned off the albedo so that way it doesn't sit on top but it gave it this really nice just kind of bumpy paint look just helps break up the surface even more and then i added a scratched metal and that really was for the curvature and then i added a rusted metal sheet this is all for the bottom pieces down here so this is for all the rest down there and then i did another one just for all the rest up here just make it look kind of cool a little bit aged and stuff so that was really that's all the metal stuff and then i just um put the ao map over the top of this that we baked out of houdini and then i just put a logo on it just to make it look official and there we go so that's how i did the textures all right so hopefully you guys enjoyed that let me know in the comments below thanks so much