Update 1-23-2015
So I figured I had a lot of questions about how I created my high poly concrete trim texture and a lot of the process that went into it. So I decided to give away the concrete trim texture and the high poly to all of you guys so you can take a look at it, mess around with it, and hopefully learn from it! It can be downloaded from my gumroads page here.
https://gumroad.com/purepolygonsI also saw a lot of
BROKEN IMAGE LINKS that I needed to
FIX AND UPDATE. But they keep breaking, so instead here is the same breakdown on my personal blog. Enjoy!
https://www.purepolygons.com/blog/modular-building-breakdown
Update 12-17-2014
I finally made a video for this thing. Enjoy!
Building Set (UE4) - YouTube
Original Post
Hey everyone! So I know I am a little late on this, but a lot of you were asking me to create a breakdown for how I created my Modular Building Set on the Unreal Marketplace. So here it is finally! Feel free to ask anymore questions, but i did my best to explain at least some of the aspects of the creation process and the modularity of the set.
[UPDATED PDF - Much prettier]
Here is a PDF file too if anyone wants to download this guy.
Building Breakdown PDF
So I want to first start off by saying that my intent with this Set was to allow for as much flexibility as possible while using the least amount of Textures and Static Meshes that I could while still maintaining a certain level of quality throughout the Set. In order to do this I had to think A LOT about what Textures I was going to make and how i would lay them out in order to get the most use out of them. With store fronts, the entire thing can be created simply by making some solid Trim Textures. These trim textures would allow me to create pillars, window frames, door frames, vents, air conditioners, roof trims, awnings, overhangs, the works. So I needed a variety of different shapes in my texture. Now that I know what I will be making with this texture I can create some interesting shapes and bevels that I can unwrap my static meshes with. Here we have the first example.
You'll notice that I kept the EXACT layout for my metal and concrete materials. As I mention in the image, this is because very early on I decided that most all of my roof trims, pillars, store fronts, etc. could easily be swapped for either metal or Concrete throughout my Building Set. Doing this alone has already created a TON more options for how my buildings will look and I could have even taken this a step further and made multiple different metal trims/concrete variations.
At the base of my store fronts I wanted the same ability to easily swap out materials to create even more variety. So I looked at many different reference images to see how store fronts of large and small buildings were built. What types of materials they would use, how they transitioned into the sidewalks, how wide/tall/short they were. Then I picked a couple different material types and create my store front base textures.
Making sure that everything within my textures is very important because when I swap them on the assets if anything is out of place I will get weird seams and noticeable issues with my textures.
Now that I have some initial materials created I can start to unwrap things and create my Static Meshes. At this point I need to make EVERYTHING snap together. So no matter what it is that I am create it HAS TO LINE UP ON THE GRID. The top, the bottom, the sides, all of it needs to be directly on the grid or else it will be very hard for my building to snap together once I get it into the engine. So from here I brought a scale human reference model into my Maya scene to make sure that everything I made not only snapped to a grid, but would look accurate in size and scale. For those of you in need of a human scale model you can use mine here.
Unreal Engine Human Scale Reference
Be sure that you have your metrics in Maya set to “Centimeters” because this is the unit system that Unreal uses. So for my store fronts I decide on creating pieces that are 4 meters in length and 3 meters in height. I have also decide to place my pivot at the BOTTOM of my static mesh in the center of the two sides. Again I am looking at a TON of reference photos online of different store fronts to find variety and make sure that the way I am setting up my store fronts is accurate to real life. Where do the doors go, how big are the windows, are there any signs in the windows? Paint on the windows for different store sales throughout the year, can the windows open or are they always closed? Is it a restaurant, a clothing store, a convenience store, all of these things matter because they will determine how the windows are laid out and where the doors are, if they need space for displays in the windows etc..
Now before I apply my materials to the store fronts I have already imported the assets into the Unreal Engine to make sure everything is snapping together and that all of my metrics are correct. There is no point starting to texture your assets yet before you know if they even snap together properly, otherwise you will have to do a ton of re-work making it all snap together first and then having to unwrap it all again too because now you have stretching. So start getting it into the engine right away. Then once you have checked and made sure that it all snaps together well and is on the grid, you can start unwrapping your Static Meshes. Here is an image showing how I am aligning all of my edges along the trims on my Metal Material that we made earlier.
I will continue this method until I am happy with my amount of store fronts at the base level of the building. At this point I have started making some pillars and corner pieces to allow me to make 90 degree turns with my assets so that we can get a full 360 degree building with all 4 sides. There are other ways to achieve your corners, but pillars are the easiest and allow for the most functionality and modularity in your building set. I am still using the same Metal Material to create my beams and pillars. We are trying to get as much use out of these textures as possible like I mentioned.
Now I can finally start moving on to the upper parts of the building. This can be a lot trickier, because in most cases you have no beams and no metal frames to help your assets give the appearance of proper tiling. If you unwrap these pieces incorrectly you will very quickly start to see seams and gaps in your geometry. Just so you are clear here is an image to show that I am talking about making the upper windows to your buildings now.
So as I mentioned ensuring that your pieces tile is very important and this all comes to down your unwrapping and where you place the UV edges on your texture. You should always try to find a way to either line up your UV Edges on the edges of the grid, so that the texture just naturally tiles itself, or if you can find a nice bevel or some grout in the case of these bricks, you can place the edge of your UV’s there to hide the seams of your static meshes. In the case of this next image, that became very tricky. Because I made a long wall piece that was 3 Meters wide, but still needed to make sure that the edges of my static mesh lined up on the grid, so I had to insert an edge loop into my geometry and mirror the texture on top of itself to keep proper tiling on the asset. Like so.
Here is another image just for clarification purposes on exactly what I am doing with the UV’s to ensure the proper tiling of the asset.
As with the store fronts, I will basically continue with this method on the upper half of the building until I have created what I feel is a sufficient number of assets and variations to get a lot of use out of my pieces. All the while I am looking at reference images for everything that I am making. As I said before, reference, reference, reference.
At this point I have created pretty much all of my modular pieces for the building. So now I can make some nice decoration pieces to accompany the buildings that I have made. This can be anything you want it to be, but for myself I made some store signs, some rubble piles on the ground, fire escapes that can go on the side of the building, awnings both torn and intact, some broken windows that I can swap out in the different store fronts, little posters and papers, Health rating Grades for the restaurants, store hour signs, security alarm signs, the list goes on and on. You can really have a lot of fun with this stuff.
So that’s the general breakdown for how I am making the building set, but there is a lot more we can still do with our materials now. Why should we be happy just making one color of metal? Or just making one color of awning cloth, or store front tiles, or bricks. We shouldn’t we can make as many as we want! But bringing in more and more textures for all of this is going to quickly eat up your Memory Budget if you are trying to be efficient with how many textures you can load onto your VRAM at once in a game. So there are ways we can get around this and still make a TON of different colors or all of our materials. Here is what I have done in this case.
We can very easily combine a lot of our Textures into one texture file just by using the different channels. Then we can split all these channels up into their proper nodes once we have brought it into the Unreal Engine. Your textures don’t need to be in any specific channel for this to work, as long as they are divided across the different channels of your texture you can do this. For myself though I have placed the Specular Map into my Red Channel, my Roughness into the Green Channel, and my color mask into the Blue Channel. What is a color mask you might ask? It is what is going to tell the Unreal Engine where on the texture we want to replace the color with any color of our choosing. So things like rust or scratches, we will want those things to hold their color, because it would be weird to have blue or magenta rust in your texture. So in our color mask we are going to make all of the parts that we want to hold their color BLACK and all of the parts that we want to change color WHITE. If your mask has any grey’s in it then in these places the Unreal Engine will do it’s best to blend between your original texture and the new color that you overlay on top of it. How do I setup my material graph in the Unreal Engine now you might ask? Well I have just the image for you!
The diffuse Texture which contains all of your original colors, rust colors, scratches etc. Will be plugged into the A node of a LERP. I like to go one step further and use the color mask that I created, then make all of that space grey in my diffuse map. Basically I don’t want any colors that shouldn’t be there bleeding through into my newly color picked material so where I have made my color mask texture “white” I have made those areas completely grey in my diffuse texture. I hope that makes sense. Looking at the image above now, you can very easily use the Vector Parameter node to pick ANY color you want. Now the sky is the limit for your materials and the amount of variation and use you can get out of just one texture is really awesome. Look at all these colors I can get with just this one metal material.
Since you have now taken the time to very neatly and nicely created your textures that can all be swapped out with each other, you can go wild with your scene. I know you did a great job lining up all of your UV’s and making sure all of the pieces snap onto the grid too, so I’m sure you will have no problem being creative with your scene now making it look like whatever you want! Here are just a few examples of all of the different variations we can create with our scene now after following these steps.
Lastly, here are some images of the final scene I ended up creating with my modular building set. Things that I did not create for this set:
Street lights, street signs like stop signs and no parking signs, plants or vegetation, official sidewalks or roads (these are just created by altering some materials and assets, but I didn’t make any actual roads for this set) benches, telephone poles, bus stops, hanging laundry, large billboards, etc. But you should totally add all of these things to your scene! Haha I would have loved to, but decided to call it finished after spending so much time on it. Perhaps one day I’ll go back to it and make those additions, but until then I hope this breakdown helped some people! I haven’t proof read it yet, cuz I have been staring at the computer for way too long now, but I hope it still conveys the message properly. Enjoy! And as I mentioned before please let me know if you have any other questions or comments!
Replies
@Oblivion2500 - So when I was talking about that, I simply meant that I applied a Brick material to the object and then displayed the brick texture in my UV Editor so that I could hide the seam inside of the bricks grout. Perhaps you already know how to display your textures on your UV editor in maya, but in case not, here is a link for you.
Display Texture in UV Editor (MAYA)
Then as I mentioned I hid the seam inside of the bricks grout in this area.
Because no one will notice a cut in the seam in that part of the texture.
So I figured I had a lot of questions about how I created my high poly concrete trim texture and a lot of the process that went into it. So I decided to give away the concrete trim texture and the high poly to all of you guys so you can take a look at it, mess around with it, and hopefully learn from it! It can be downloaded from my gumroads page here.
https://gumroad.com/purepolygons
@Shinigami - I'm not sure what you mean? That my low poly building does not have modeled geo for the bricks and other areas? In video games, the lower poly something is, the more platforms it can run on and the higher framerate that you'll achieve.
And for films, the sky is the limit. It is all pre-rendered with no rendering happening real time. So they can have as much on screen as they want since frame rate isn't an issue.
@cody - Thank you so much!! That was a very generous donation and it's donations like that, that allow me to keep posting stuff like this up for free. Thank you
edit: Purchased anyway and found the license inside - posting for anyone who is wondering before purchase:
Thanks again Jacob, now to spend my saturday afternoon excitedly inspecting your assets !
Yes, nature, and mud and such is generally also created in highpoly zbrush, then baked down. It's really up to you to decide what you want to create uniquely and what you want to create as a tiling texture. There is no right or wrong answer, it is really up to you and up to how optimized you want your scene in the end.
@Chimp - Thanks a lot for the support! I hope you are happy with what you find haha, but don't look too closely or you'll see how bad I really am :P
Thanks for sharing the license with everyone as well!
EDIT:
Also, how did you make that color mask channel? Invert roughness map?
Hey Oblivion,
The heightmap was taken directly from highpoly mesh, that yes was baked in xNormals. I didn't really touch it or edit it at all. It's pretty much a direct copy of the highpoly in texture form
As for the color mask, since I am doing everything in photoshop like my grunge/rust/etc. I simply use my layer masks that I am blending my rust/scratches/grunge/etc. in photoshop to easily create a selection from and then fill in black in my color mask. So it is all being created while I am making my diffuse without really any extra work.
ALright, thanks for the tip!
I have a question about texture atlas padding for mip-map.
How should that be handled? I do not see any padding in your example.
@I01 - Thanks a lot! Yeah of course. It's really different to be honest for each individual just depending on how you like to work. For me personally, I always start with the normal map. Usually all of the big shapes, the bevels, the trims, etc. Then I usually start texturing over my normal with the diffuse color and bringing in details, scratches etc. Using the information i create from my diffuse like the small details of scratches and rust I will create a normal from it in ndo or crazybump. I'm not usually making the small details in zbrush just because its a lot quicker to use a normal map tool like crazybump for that and the final result isnt even really a noticeable difference. Hopefully that helps!
@h8spaCec4EspUdE - I noticed you tried to send an image and it isn't showing up for some reason? I haven't experienced any mip-map issues with these textures in Unreal, perhaps you could elaborate or I might understand better if we can get that picture to show up
Thanks for your reply.
I do not remember of sending any image. Anyway, I think I may find the solution.
When I watch online tutorial, some of them put the uv island a few pixels from the texture boarder, so there will be no bleeding for mip-map.
I think I just need to be fix with measure and I can start some cool Modular asset be untill that I can't do something weld !
Thanks having interest !
Hi Crystal_Ant,
Thanks for the compliment!
Your walls don't all have to be the same size, they just all have to line up on a grid that you will specify inside of your 3d program. Just pick a number like 1 meter or 0.5 meters in maya and make sure that all of your walls line up on that grid
Yeah, you can check inside of maya by duplicating the asset and snapping it to the left or right of the wall piece to see if everything lines up properly. I hope that helps!
--For most modular assets I have seen, majority of them are outdoor buildings. Can indoor scenes be modular easily? Such as bedrooms, kitchen...etc?
--As far as I know, modular assets are based on grid heavily. So what about props (stuff like rubble, beds, bunkers, tables, chairs...)? Should they be modeled with the grid system in mind as well, or we can model them freely (of course with correct scale) as unique assets, UV and texture them, then just duplicate them around in the game engine?
--Also, am I correct that we should plan out the texture maps first before modeling the modular assets? Can we model the assets first and then think about UV and textures later? It seems counter-intuitive to me as I normally model first then I will UV and texture (at least that's what I do with characters)...
Hope my questions are clear.
These are actually some really good questions
Q: --For most modular assets I have seen, majority of them are outdoor buildings. Can indoor scenes be modular easily? Such as bedrooms, kitchen...etc?
A: Indoor scenes can definitely be a bit more tricky because you have to include a wall "thickness" and then be sure that every wall you make has a front and back with the same "thickness." Because when you have doorways, hallways, etc. the walls will all need to snap and line up properly to fit with your doorways and openings.You don't technically neeed a front and back but then you have to hand place a front and back throughout your whole interior and that can get old quick.
Q: --As far as I know, modular assets are based on grid heavily. So what about props (stuff like rubble, beds, bunkers, tables, chairs...)? Should they be modeled with the grid system in mind as well, or we can model them freely (of course with correct scale) as unique assets, UV and texture them, then just duplicate them around in the game engine?
A: Yeah you don't need to worry as much about grids with the props. Only when making video games you sometimes have to be careful how you place the props, because slightly too far from a wall but not far enough and a player can get stuck behind the prop. Or if a char is in between the table and the wall can the player get through there? Does it look like they can but then they get stuck? Just things like this to think about, but for art scenes go crazy and place props however you want haha
Q: --Also, am I correct that we should plan out the texture maps first before modeling the modular assets? Can we model the assets first and then think about UV and textures later? It seems counter-intuitive to me as I normally model first then I will UV and texture (at least that's what I do with characters)...
A: It's not necessary to plan out the textures first, but I personally feel that if you are creating a tiling texture to use for all of your assets, if you plan the texture first then you can think while you are modeling if a model will work with the texture you made or what changes you need to make to it in order for it work work properly. So you don't technically HAVE to make the texture first, but it's a good idea to know how you want it to look just so you can model things accordingly. If you make all unique textures for each building piece, then you can model however you want, but it will take a looonngg time to texture each modular building piece with a unique map and texture. plus it will use more memory and more draw calls in the game engine, etc. Hope that helps!
Hi skyline
All of the breakdown material is available right here in the thread for free! It's the same as what I included in the pack, the only difference is the pack includes the concrete trim texture and highpoly work for it and the metal trim. Many people are downloading the texture to be used in licensed work and games so I charge a small amount for it. But I made it very cheap still at least so that students and people can learn from it without paying the full license price of the work. I hope the material has helped you and the thread is interesting
Hey Chris,
Thanks man! Yeah this was all xNormals for the maps. Make sure you use "Ray Distance Calculator" in the tools section before you start baking. This sets up your cage at a proper distance and gives you a better bake. Go ahead and start your bake. Then when you get to the Heightmap settings after that secondary window pops up during your bake, use the debugging checkbook at the bottom of the window. This will tell you if you're whites are too white and your blacks are too black. So you can get a good value range in your Heightmap Hope that helps!
Thanks for the response buddy , I'm getting much better results :thumbup:
Thanks Klo Works,
Perhaps I might do that one day. At the moment I'm slowly working on a texturing tutorial in my free time, so maybe I could do something like this eventually
I really hope you do that when you got free time.
I have some questions.
I am now do modular building for our FYP its mix between (new york and hong kong).
we want to create tillable texture and re-use it similar to your textures.
the question :
did you first decide the 3d modular before doing texture ?
like now we are building the modular and we make sure all snap correctly.
after that we will decide the texture and which part we can reuse it.
thnx for sharing
No problem hope it helped!
That's a great start so far
I did not model before I created my textures, but because I had reference images I knew how wide my trims would be and what types of details I needed in my textures. So since you already have such nice models, just be sure that while you are creating your tiling textures that you keep in mind the look of your models and how you can unwrap the UV's to work well with the textures you are making. I hope that helps! Great start so far and best of luck!
I'm glad this helped
Sure questions are always good, no problem. These are all mostly created with planes and not cubes. That is because of optimization and polycount. For my scene the upper parts of the building do not have interiors and so having polygons hiding behind the windows in all of these upper walls would be a ton of extra geo that is slowing down render speeds but is never seen by the player or in your artwork. So I just delete all of the back faces in this case.
As for the lightmaps, I used to make all of my own lightmaps and in some cases I still have to for unique or odd assets, but in general the Unreal Engine does a great job of automatically creating lightmaps for me The less work for the artist the better and the more time you can focus on quality instead of little boring things like lightmaps haha
And haha glad to save you some time Danimal
I never imagined more than a year later people would still be getting such good use out of this Breakdown. That's awesome to hear
Enjoy!
I was wondering what sort of technique you'd use for preventing repetitive grunge/damage in a scene where there are a lot of the same tile side by side, are there tricks for randomizing it at runtime in the shader or something, or would you just create a few different meshes?
Cheers
That's actually a really good question
It's usually best when using a technique like this to not include too much damage or grunge in your tiling maps. Since as you mentioned you will start to notice the grunge throughout the modular assets being re-used. So the best option is to either create a version 2 of the tiling texture and simply vertex paint grunge onto your assets inside of the Unreal Engine. You can be much more specific about your grunge placement this way and reduce the noticeable tiling.
The other option would be to create decals for grunge and just overlay them on top of your modular assets. Both techniques work and perhaps a combination of the two will give you the most unique results. I hope that helps!