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
You know why this might be? Been trying to find a good human ref for UE4 for a bit.
It wouldn't take long to make one anyways.. take the layers used for roughness and re-color them, so I was just interested on your opinion?
the assets look really great btw
The great thing about UE4 is not anything technical, it is about encouraging people to share and help each other.
What's your reason for using a spec map tho? I thought that's just there as a leftover from the old workflow and not really used much anymore with PBR. Might be a better idea to put the color blend mask in R and use it as metallness map aswell after inverting. Then put an AO map in B instead.
I had the same problem. I'm using Maya with centimeters and it is only 93.6 cm but if the standard is 6 ft then that should be 188.9 cm. 6 ft is the standard right?
@CreativeHD & Hayden - Sorry about that guys I added the wrong file in here. I just updated it on the main post and on the PDF file. Here is the link for you so you don't have to go searching through the whole Breakdown Again.
Unreal Engine Human Scale Reference
The proper scale can be found based off of a skeletal mesh that Epic provides for people working on Marketplace Characters and Assets here.
Unreal Marketplace Content Requirements
You'll see a few FBX files after you scroll down a bit and they have walk/run cycles in there too. Hope this helps!
Thanks for all of the comments everyone Glad the Breakdown is helping a bit!
Thanks jacob!
Thanks for the share!
Also I recently updated the PDF file for this so it should look much more prettiful and official! It still isn't magazine quality, but I am sure your eyes will thank me still!
Thanks everyone, it's great you're all getting some use out of it!
- length and width settings [x] units
- Grid lines every [x] units
- subdivisions [x]
B)Did you set your scale to centimeters or meters?
C)What size are your texture sheets? (1024x1024?) Would it be better to combine them into several 2048x2048 texture atlases? (less calls for less lag?) I'm still fully understand good material workflows but I will keep researching)
It looks the grid units are set to meters (does that make Maya-to-UE4 a ratio of 3:1?) Thank you.
Those are some dirty streets, someone better fire the garbage man!
Thanks alot for sharing this! really useful.Thanks for the great work !
Thanks a lot guys!
These are some great questions!
[A]
Every 100 units equals 1 meter in Unreal
- length and width settings [1500] units (This equals 15 meters)
- Grid lines every [100] units (This creates 1 grid line every 1 meter)
- subdivisions [1] (I keep this at one so I know exactly where the meter marks are, but feel free to change it)
You scale should be set to centimeters in Maya
[C]
I have tried to import all of my textures at a resolution of 2048x2048, because they can always be scaled down later in the engine. So it's better to bring them in at a higher quality and allow the user to determine size later for their project.
As I mentioned earlier 100 centimeters equals 1 meter. So if you follow the guidelines I set above for your grid you should be fine Hope this helps!
wanted to share this with everyone. Thank you for the breakdowns jacob It helps tremendously.
Did you just increase subdivisions?
Glued.
So when I am talking about the grid, I basically work inside of a 10x10 space in maya which creates a perfect square plane for me to bake on top of to get my tiling texture. Then I align all of my trim pieces onto the grid in the lowest increment of 0.25 or you could say 1/4 snapping grid. This makes it super easier when I am aligning my UV's later on because everything can snap directly onto a grid and there is no guess work. It also helps because when I swap between my different trims like "concrete and metal" I know that everything will line up properly because there aren't any weird numbers like 0.36 or whatever. It's just all on the grid Modularity FTW!!
All of the trim pieces here are separately modeled pieces of geometry that I am modeling on top of this 10x10 flat plane that I use to bake out the high poly later. Hope this answers your question!
A) Why did you model vertical edges on these trim pieces? (red circles) Wouldn't that make it not as modular as one without edges?)
how did you bake the separate high poly pieces into 1 flat plane? Did you bake out each separate high-poly onto separate flat planes and then combine the separate flat planes together?
C) how did you achieve those gaps in-between the high poly trims? (marked in red line)
Is there a gap (like a valley between the two pieces) Are they like A or B?
(A = they are directly connected they have a valley.)
(B = they are directly connected and have no valley)
What was your solution to this?
Even if I do snap the uvs to the grid at the correct pixel size
I was able to finish up an image for you. Hopefully this answers (B) and (C) for you.
As for (A):
If you'd like, you can absolutely extend your geo past the bake plane like i showed in the picture above and simply have all of your bevels tile infinitely. The reason I like to have these bevels on the end though, is in a lot of cases my metal bars between windows and door frames are the perfect height that the bevels on the end there will line up with the ends of my geo and give it that nice rounded effect just like I showed in my breakdown. If all of your edges have some kind of bevel applied to them, it really helps everything just catch the light better and in the end gives you a much better result. As I said it isn't necessary and you can have them all tile if you want, it's just my personal preference. I would recommend that the best way to go about it, is to pick certain ones to tile and certain ones to have bevels at the end like I have done in the picture. This will give you more options to pick from and in the end more modularity
@GhostBlades:
Is your lightmap still set to the default of 64 resolution on all of your assets? If you have larger assets with a lot of geometry and edges with only a 64 pixel lightmap, your shadows will start bleeding into one another and probably give you the seams that you are seeing. Otherwise I am simply using the auto-unwrap function within the Unreal 4 Editor so I am not doing anything special there. I'm guessing it's your resolution as I mentioned. Give that a try.
Hope this answers your guys questions! I'm off for bed now haha. goodnight
[ame="https://www.youtube.com/watch?v=ge3AlXUtWac&sns=em"]Modular Building Set (UE4) - YouTube[/ame]
A) If you transferred the source mesh onto a flat plane how did you get the envelope to cover the whole mesh?
Did you add any edge loops for the flat plane? (for the Target mesh)
C) Do you think that the Source Mesh is too tall to get an accurate/good result? (from the base to the furthest face)
I hope you all had a great Holiday season and a Happy New Year!
@Yourname
A) For me, I don't actually use Transfer maps in Maya to do my baking. I export my high poly model out to an .obj as well as my low poly plane and then bake everything in xNormals. This guy has a video where he is baking a tiling texture in xNormals. http://youtu.be/6PSrQPizlTY?t=3m50s
There are much better xNormal tutorials out there, but I figured to show this one simply because the guy is also creating a tiling texture with it and baking onto a flat plane.
Here is a better one for baking with xNormals, but he isn't baking onto a flat plane, but the process is still the same. He also shows how to adjust your envelopes in xNormals by using the Ray Distance Calculator tool He mentions it around 8:55 in the video.
http://youtu.be/Z_YIHLcpwMU?t=5m40s You will want to keep your Y direction in the Y+ because you are using maya (this will make sense when you watch the video)
No I didn't use any edge loops on the baking plane. It was just a 4 sided plane with 1 to 1 scale UV mapping. Your setup looks correct for this.
C) Your mesh doesn't look too tall, no. That should still bake fine
@Kobalt Kiwii - Np man. Good luck on your Final Major Project! Hope you'll be posting it on here for all of us to see