I use 3dsmax2013 for modelling all my environment. I model the entire map (level, props, trees, objects) inside 3dsmax, i create the complete map inside 3dsmax, the way it will look inside UDK, then i just export and reassemble the level in udk, however i use a lot of “tools” and maxscripts to make it work perfectly, and it does!!!
First of all, i divide my map into such elements, inside 3dsmax using selection sets:
1- Level Geometry, which is the “architecture” of my level, where the player will walk and interact directly, like floors, walls, and so on. For these meshes i make them all poly collision, and make them have the highest lightmap size (512x512), because the marjority of the shadows will be cast on them.
2- Background Models, which are some long distant models, like buildings, houses, that are far away from the player, and they are meant to make the skybox match with the overall scene, to make it look infinite, at the horizon. I use very small texture maps like 128x128, 256x256, and the lightmap size 32x32, or 64x64, depending on the size of the model.
3- Level Props, which are the other models, from small to big, which are part of the scenery, like cars, light poles, trash can, wood crates, and so on. For these models i make UCX collision models inside 3dsmax. I created/adapted a maxscript to automatically create collision models.
This workflow works perfectly for me, althought I am using a modified version of UDK, however it works, I tested also on UDK February 2015.
If anyone is interested, here follows my “secret” tools.
For mesh placement:
The way you can easily match the same position of your models from 3dsmax to UDK is following this tutorial and downloading this toolbox. But you need to have a basic understanding of PHP Scripting and have installed in your PC a PHP Server (i use NucServ):
What it does, this awesome script reads all fbx filename, also identifies the pivot point location of each mesh, and exports a t3d file which you simply copy and paste on UDK viewport to have the objects correctly pasted inside UDK viewport.
The script is setup for reading ASE files, however, you just edit the php script and type FBX instead of ASE.
This way, all your map assets will be placed in UDK exactly in the same position they are inside 3dsmax.
For mesh collision:
I modified this maxscript to create a valid UCX collision model for UDK:
This is the script, just copy this inside maxscript editor and run Evaluate all. Then go to customize 3dsmax user interface and add this script as a new menu wherever you want. It will be under category UDK Tools.
category: “UDK Tools”
max create mode
varmeshType = 4
sel = selection as array
for i in sel do
addmodifier i (MassFX_RBody ())
m = i.modifiers#MassFX_Rigid_Body]
m.meshType = 4
m.SetRBMeshVertexLimit 1 32
if varmeshType == 4 do (a = mesh prefix: ("UCX_" + selection.name+"_") mesh:(m.GetRBMeshShape 1); a.transform = i.transform; a.scale = [1,1,1]; a.xray = on)
deletemodifier i i.modifiers#MassFX_Rigid_Body]
You just select an object, and run this new script.
This will work for one mesh only, you select each one individually and run the script. But if you want for multiple objects, after installing this script, you must create a new macro in 3dsmax. Just copy the below text to maxscript editor and Evaluate All, then add this script to a new menu:
category: “UDK Tools”
tooltip: “UDKCollisionGenerator for Multiple Objects”
max modify mode
selObjsArr = selection as array
for o in selObjsArr do
macros.run “UDK Tools” “UDKCollisionGenerator”
That’s it, you can select how many objects you want, and run this script that will automatically create the collision models, using the object name with prefix UCX (but it may take long time depending on the number of objects selected). But just a problem, is that it adds the sufix 001, so you can use this maxscript to remove these sufix:
And after my level in 3dsmax is setup, i just run this other magic script to batch export all the models of my map:
I hope these tips are usefull.