Hello all! I am now about to work on creating my first game environment in 3DS Max now that I have it planned out. But before I start, I would like to know which is better. Should I model each level in 3DS Max and export the whole thing as a static mesh or should I use a modular approach (model environment geometry all separately and texture them in 3DS Max) and put them together like blocks in UE4? How does everyone else do this? Thank you!
I’ve been pondering the same thing, I’ve tried both methods in testing maps. I’ve found the best way to do it is the modular approach, it just seems to work better with importing / exporting between programs. Importing a large model with lots of bits and pieces into the engine seems to take ages or crash out.
I’m trying to get together some steel frame modules so people can plonk and play into the engine and see how that works
Cool, thanks for the reply QBert! I’ve just started toying around with creating modular assets and am trying to figure out the correct unit setup. How did you setup your units? Thanks!
Modular works well in UE4 due to the existence of BSP. If you build all in Max and you need to make an adjustment, you have to go back to max to do it. With a modular set, you can use BSP as a sort of “glue” between assets, and it’s easy to alter and test in the editor. As a level designer, I’ve always liked working with a modular set, it allows me to really make a few assets go a long way
Both, model the whole thing then export it in chunks…
I’m still toying with my units they are giving me a bit of trouble at the moment.
I’m a structural designer by trade and use Tekla / Revit / Autocad for my designs, they all seem to export different into unreal engine. So I’m trying to cut out the middle man and use 3ds max for all my importing / exporting.
This is a very handy script for 3DS Max to Unreal Engine units setup -
One click of a button and it sets the scene up to the units, also you can add in a temporary human to check scaling.
Also some handy information on scaling here -
This is always a tough question because it’s a balance between a couple things. Modular is definitely better for bug fixing and reuse which is awesome, but suppose you make one floor tile that is 2m in length and you want to make a floor that is 20m. You would have to place down 10 tiles and that would cost you 10 draw calls at the mesh level. So the key is to block out your environment with small modules then analyze the scene to see how you can make bigger modules out of your groups, so if you see you use 20m floors a lot then go to your 3d program and export out a floor tile version that has 10 of those tiles in a row. The other side of that evil sword is that if you make your new big modules too big than they will not cull out since most of the mesh might still be in the view frustum. There is no absolute answer for this one, you just have to be mindful and approach each area with these fundamentals in mind.
Hmmm, wise suggestion you have here, That’s what I do sometimes…
Personally I do 100% of my level fabrication in 3ds Max using a top down design approach broken down into building blocks.
The match up is where ever you build a mesh based object that’s were it will be located in UE4 as to world referencing. If you make a building for example at 10 x 10 y 10 z and import it into UE4 that’s where it will be located as referenced to 0 0 0 origin.
Step one is to first do the layout using primitives to reserve the space and label the block with a meaningful name. For example one will be building 1 next building 2 and so on. I then create a layer in 3ds Max and save the block to individual layers. I then export each block to FBX and import the block into UE4 under it’s own folder.
This creates the source chain from 3ds Max to UE4 and I build up the environment I want with in the the reserved block. It’s slow going at first but as the environment builds up some elements become common to one another, windows and doors for example, which I convert to be used as a prefab object and then copy them over to a map object folder and instanced copied.
Exporting the map as one big file is not really an efficient way to go as I suspect like most engine that “any” surface of an object is rendered then the entire object is rendered so if you create the map as a single object then the entire map will render. (I stand to be corrected as UE4 is new tech )
Modular is the way to go as the side benefit is the more common elements you make the bigger your prefab library will become. (not to mention materials)
Not to mention.
3ds Max is not the only toy in the tool box with FBX support.
Modular for sure!
Here is a link to a Power Point that Kevin Johnstone (one of Epics senior artists!) did a few years ago. With out his talk there isn’t context for some of it but if you understand modeling and using modularity (at least to some degree) it should make a little bit of sense.
Introducing, my very first modular asset!
:D:rolleyes:;) lol I had to lol
Thanks for the powerpoint! I’m about to look at it now. I really appreciate it!
Technically, that IS modular ;D
I have another question. So, I setup a scene where I can test modular assets called “ModularTesting” and this is what I’ve built so far with one piece.
Using the default size for the wall (512x512) is too big for the player. So I scaled the height down to 0.75 (I read somewhere that I should keep the dimensions in 3DS Max a power of two). In the future, when I add textures, how will this affect the UVs? Will they appear differently (will they squeeze in)? Thank you!
EDIT: Also for a a wall corner, I had to change the X scale to 0.009025 to get it to fit perfect and even then it is off a little bit. Should I make wall corners a modular asset as well? I’m also getting light bleeding:
Uniform scaling is fine, if you do a specific axis different than the other, you’re gonna get some stretching. Also something to look out for is pixel density. If you scale some of your assets really small or large and leave others their same size, the detail of the textures wont really match, as the pixels on the textures will be shown at different sizes. This usually isnt a problem unless you’re scaling a large asset really small in comparison to other’s modeled at the same native scale, or a small asset really large.
That make sense?
Also - A thing to keep in mind, the model itself doesnt have to be to a power of two, just the textures that are going to wrap on the UVs. I suggest modeling to the appropriate scale, and making sure all your textures are the same size and POT
No matter what size you import, if you’re scaling the mesh evenly the material will scale with it (unless using some material magic to keep the material from scaling).
It is best practice to setup up your scale in Max and export in that scale as well (when exporting in FBX make sure to check that it’s not automatic scaling and set to centimeters instead).
Make sure to also setup your grid in Max so that it’s much easier to see what you’re scaling to. Usually when I build assets I make a biped or a block that is 6ft tall so that I can keep an reference in my viewport at all times to easily see what I need things to be.
Remember that your UVs are relative to the model. So scaling the polygons face will directly affect the UV and how it appears but only if you’re doing it non-uniformly.
Hey guys! After reading your replies, I went back in 3DS Max and recreated my wall assets and also created a corner asset with the right sizes for the scene. After importing into UE4, I put this room together:
What do you guys think? Also, I am having a weird problem that only occurs after lighting is built (if needed):
There are weird black spots on different parts of the meshes.
What is wrong with them? Thank you!
Off hand I would say you lightmap is to small. Default is 32 so try bumping it up to 64.
Also something to keep in mind is when you scale anything in 3ds Max using the scale tool you only scale the relative size of the object relative to world scale. The local scale of the object does not change so if you make a box 10 X 10 X 10 then that scale will always be set no mater how big you make the object, say the size of a building.
This is important as engines these days do use real world physics and lighting solutions that normally get the seed value base on the local scale of the object and if the local scale does not match the relative scale you can get unusual lighting or physics results.
As a habit either add an xform modifier to the stack before scaling, which translates the local scale to the relative scale or use the xform rest under utilities tab.
Thanks! That fixed it. I also went into 3DS Max and made a second UV channel for each of my pieces for lightmapping (I forgot to lol). How does it look to you guys?
I textured the floor by creating a multi-material in 3DS Max with six materials and I set the each side of the piece (boxes right now) to a material ID. Is this the right way to do it? Thanks again for the help guys! I really appreciate it.
Looking good mate