Montreal Lab UDK scene

I'll be using this space to chronicle my latest project. In the few days I've been working on it I've already hit quite a few things I think I should document.
I don't want to jot down only what is working, but what doesn't work and why. I tend to learn more from my mistakes and maybe you will too as I write them up, who knows maybe you'll have a work around or the idea might work on something else.

I started out with this piece of concept art by Thierry "BARONTiERi" Doizon I think it was for Dues Ex Human Revolution, either that or it was fully awesome inspired art.

Max blockout:

Using the grid and regular max units (1 max unit = 1 unreal unit) and some rough measurements from UDK (96 units = player height) I blocked in a basic room. Wall tiles 128x128 units.

I didn't account for perceived scale which is why things look pretty cramped, but I worked that out once I got everything in UDK. It was something like 1/3rd bigger for everything.

I planed out texture sheets using a 4:1 ratio, 4 pixels to every game unit and worked out naming conventions for the pieces.
This way I could start grayboxing with the peices, work out the scale and start working on materials and lighting.

The export prep script:
Search for something like wallworm but for UDK, if nothing exists create it.
The script would, record the objects position, move it to world 0 0 0, apply turn to poly limit it to 3 sides, rename the material to match the objects name then trigger a FBX export with explicit normals and then move the object back to where it came from.

More to come...


  • Mark Dygert
    The globe:
    I wanted to test out an idea I had and the globe was the perfect candidate for it because it was a fairly symmetrical piece, not just in one direction but in several. It was also a simple object to create high poly geometry for if it didn't work out all I had to do was re-unwrap and bake it again.

    Splines generate UV's which are squared off and easy to pack. Also when you run symmetry on something it stacks the UV shells nicely, all you need to do is offset them 1 tile to the right when baking. A fraction of the texture space covering the entire model, sweet! (not really).

    Symmetry Fail on lightmap specular! yea not so cleaver now...

    I might be able to use a smaller texture with a higher textel density if I could mirror a lot of the pieces. I thought I could deal with the seams the same way I normally would if it was mirrored along one axis.

    The spec seams where more apparent when you walked around the object, it also looks like the specular is using the 1st UV channel which is heavily mirrored instead of the 2nd UV channel that is 100% unique and has welds over a lot of those seams... I'm getting the feeling that people just deal with this by hiding them. Which I'll do for now.

    Maybe there is a way to get around this but I only found the typical mirroring fixes with the note at the bottom:
    "The guidelines on this page will help you avoid seams from diffuse static lighting, but there will still be seams in lightmap specular.
    Which has since been edited...

    If anyone gets seams figured out let me know.

    The "Final" globe came out a little lower res, kind of blurry and I need to finish the diffuse and spec maps, but it doesn't have any distracting specular seams in noticeable places.

    The high poly was a win
    It was very easy to create, simple to apply the materials to the high and bake down to the low.

    Spline based geometry is great I love it for everything from wires and pipes to trim around doors and even planter boxes and vases. Seriously they generate great UVs and allow for some incredibly fast efficient modeling techniques.

    Here are some examples of how I work with spines.


    Create a profile spline (point, click, point, click, or use a spine drawing tool, there is one in Graphite Modeling as well as scripts (soulburn scripts is great)
    Then apply the lathe modifier, then you can refine and tweak the original profile spline and it changes the shape of the entire piece.

    Applying turbosmooth to the top of the stack is a great way to get a good preview, you can then go back down to the profile spline and work on one set of verts and it effects the entire piece. Need reenforcing edges? Click refine, click two points and you're done, no chamfer, no messing with caddies or cutting in loops, just drop in two points.

    You can also remove points easily which is a great way to create your low poly. I select all the verts, then choose which one are the most important to the silhouette and deselect them. Again no unwrapping because its a spline. I love this method.

    Sweep + Profile Shape = Horizontal Ring

    (Horiz ring high poly pic)

    QuadSphere and TriSphere tag team
    (Tri-Quad Sphere pic) (tri-sphere texture pic)
    I used a Quad Sphere for the low poly and a higher poly Tri-Sphere for the easy diffuse material that was baked to the much more UV friendly QuadSphere. The trade off is better packed UV's but with a bit of distortion, however RTT works out the distortion for you so its painless.

    Explode-o-baking (I forgot about RTT assist, next time)
    Just your standard explode-o-bake. Frame 0 all together, frame 1 all apart.

    Baking more than the normal and AO
    I also baked the specular and diffuse from the high poly. I took a few min to unwrap the high poly very sloppy UV's but it looked good on the model with no seams which is all that mattered. Drawing a wood pattern across jumbled up UV shells and getting rid of diffuse seams could be quite maddening but it bakes seamlessly and easily so why not.

    Progress shot:

  • Mark Dygert
    The wall tiles:
    (singular wall tile + corner pic)
    High poly, splines
    Floating geometry

    (edit normals pic)
    The bend, edit normals to get rid of smoothing seams
    Seams at a distance, probably due to mip-maps, probably crank up the mip distance, ha.

    The floor tiles:
    Substance materials, baked to a plane. There are a lot of advantages to Substance materials, they tile, they have preset parameters to grudge them up, you can bake the diffuse, specular, height and normal map from them. It couldn't be any easier. It's a great base to start from and the materials are almost identical to the scene so why not.

    The glass:
    What a pain in the glass glow, bloom and transparency can be. I needed to figure this out for other assets and I'm still wrestling to figure it out. I haven't hit the popular sites for help yet so I might be picking a few brains soon.

    Simple tile, most of the work done in Unreal Material Editor

    Latest Progress:

  • Mark Dygert
  • Mark Dygert
  • Mark Dygert
  • r_fletch_r
    Offline / Send Message
    r_fletch_r polycounter lvl 7
    looking nice mate, considering poly limits these days id perhaps consider modeling in some of the detail on the walls.
  • theslingshot
    Great work so far. That concept is awesome.
    I'd consider making the entrance way bigger, in the concept the BW floored entrance gives a lot of character to the room and it lets a lot of the natural light come in if you don't want it o be too dark. It's almost 1/6th of the space in the concept and in your 3d it's around 1/20th of all your space. When I first looked at the concept the entrance was the first thing that i looked at. Other then that it's coming out nicely ^^
  • haiddasalami
    Offline / Send Message
    haiddasalami polycounter lvl 9
    Looking nice Vig. Dont know if its the camera angle or not but maybe make the walls height a bit more. Seems like its squished compared to the concept. O and props on documenting the process! That script sounds nice and simple to do.
  • passerby
    Offline / Send Message
    passerby polycounter lvl 8
    pretty nice,

    that is a concept i had in my todo bin for a while but haven't even gotten to starting it yet.

    and yes it is Deus Ex HR related, tehre are 2 more Vertical slice concepts too that are similar.
  • Jeff Parrott
    Offline / Send Message
    Jeff Parrott polycounter lvl 14
    Sweet way to breakdown a project before you start it. Really looking forward to watching this develop.
  • cptSwing
    Offline / Send Message
    cptSwing polycounter lvl 8
    ^ yup. following this thread!
  • teaandcigarettes
    Offline / Send Message
    teaandcigarettes polycounter lvl 9
    Vig is cooking something up? Count me in.
  • biofrost
    Offline / Send Message
    biofrost polycounter lvl 8
    Looking pretty good so far but the wall's seem a bit low. I could be the angle but I picture with character model next to the wall might help. Everything just seems a bit mushed down at the moment.
  • Mark Dygert
    Wow was I ever blind to the scale issues... I must have been drunk when I laid out the tiles because I added one too many tiles to just about everything.

    r_fletch_r, good point about the walls, I added some thickness, it needs more work tho.

    theslingshot, I still haven't settled on the door width yet. I'll be blocking it in soon enough, I think rescaling the rest of the room helped with that.

    haiddasalami, yea that script would be handy, I did some hunting and couldn't find one script that did everything I wanted it to do, so I'm probably stuck writing it, but like you said it seems like it would be easy to crank out. I'll post it if I get to it.

    passerby, OOoooOOo... there are more... thanks for the heads up!

    jeffro, thanks but I need to take some time and clean up some of the posts and add more pics.

    cptSwing & teaandcigarettes, thanks guys but I fully expect this thread to be full of fail, if it is then, its a win heh.

    biofrost, that's a good idea about a character, I'll toss one in for the next shot.

    Now things are looking a bit squished, oh well I'll look at in the AM with fresh eyes -D
  • theslingshot
    Looks a lot better! Proportions of the room looks good! Maybe it's a bit too small, like you said it feels a bit squished ;) A bit of scaling on the objects and it should look great, the globe looks ok tho.

    //Will try out RTT Assit as well, didn't know about this, nice posts ;)
  • passerby
    Offline / Send Message
    passerby polycounter lvl 8
    @Mark Dygert

    ya he has a few more things in fuckya


    also here is a script for maya that does a lot of what you want to do with your maxscript,
  • aajohnny
    Offline / Send Message
    aajohnny polycounter lvl 9
    I am totally looking forward to this! Thanks for linking these scripts too, really helpful.
  • passerby
    Offline / Send Message
    passerby polycounter lvl 8
    any updates on this?
  • Mark Dygert
    I made some edits to the globe post to document it better. Which is what I'll be doing for a while until I catch up on the paperwork.

    I had a lot of trouble getting specular seams to behave across mirrored pieces, it worked fine on the diffuse, normal and light maps but the specular always seemed to use UV1 instead of UV2. It might be using whatever UV the normal map uses which makes mirroring normal maps pretty much useless. It might be a bug in UDK or it might be something people have always dealt with the same way I did, hide them as best as possible...

    If anyone has any info on mirrored pieces and specular seams I would love to know. At least one other person is hitting the same roadblock.
  • Ben Apuna
    Hey Mark cool project.

    I haven't done any UDK work in a while... so my info might lead you down the wrong path. Mirroring with anything shiny was always a real problem for me in the past. Here are a few threads/posts/pics that I've written with possible partial fixes for this issue. The main theme of my fix was to get rid of any curvature at the mirror seam which helps to reduce the specular seam. Though later I tried this with perfectly flat glass/metal windows on a large building and it turned out really horrible.


    In the end though sadly I never found a magical fix for this :(

    Good luck! Hopefully someone else has figured out a good fix for this issue.
  • Mark Dygert
    Thanks for the info! I'll be sure to make some of those modifications also, it might just work...

    I haven't tried it but there is possibly one more hoop people need to jump through, it popped up in the thread I linked to earlier.
    Calypso75 wrote: »
    Try turning the Indirect Normal Influence Boost setting down to 0 in the World Properties and rebake the lighting. Even with no normal map applied it should fix the specular seam.
    I haven't tried it yet on the globe, I suspect I'll have to also follow some of the other advice you linked too also ha!

    The globe could be tricky because some of the pieces are mirrored in two directions which I will probably need to adjust to be only in one direction. This leaves me wondering why the orientation of the seam maters and what happens to mirrored seams on more organic shapes where the seam might be in the shape of a S?

    Thanks for the info Ben! I definitely feel like this is one of the weirder UDK quirks.
  • biofrost
    Offline / Send Message
    biofrost polycounter lvl 8
    I have been having the same issue with some of my work lately. In this thread I started Calypso75 said this only is a problem with baked lighting so using a movable point light would solve this. Though my guess is this would cause a frame rate issue if you where to use too many of them.

    Using indirect Normal influence boost setting to 0 did seem to help tone it down.
  • Mark Dygert
    It snowed, work closed down for the day so in between building snow forts with my daughter and working remotely from home I worked on this scene a bit. I mostly created the export script I talked about earlier.

    What it does:

    Records the objects current position.
    Moves it to 0 0 0.
    Triangulates the model by adding a turn to poly modifier and limiting the number of sides to 3.
    Forces the material name to match the object name.
    Triggers the FBX export and sends it to a new folder called "Exports" which is in the same place as your max file.
    Moves the object back to its original position.

    How To Install:

    Download the script to anywhere (you can delete it after you run it once):
    Open max and go Main Menu > Maxscript > Run script >
    It can now be found in Main Menu > Customize > Category: VigTools
    From there you can assign it to a keyboard shortcut, toolbar or quad menu.

    You can also drag the main body of the script (below) into your tool bar to make a button.
    You can then right click that button and change its appearance.
        curObject  = $
        curObjectName = $.name
        curObjectPos = curObject.position
        exportfolder = maxfilepath + "Exports\\" 
        exportpath = exportfolder + curObjectName
    [COLOR=YellowGreen]     -- Create Exports folder if it doesn't exist[/COLOR]
        if doesFileExist exportfolder  == false do (makedir exportfolder)
    [COLOR=YellowGreen]     -- Moves the object to the world 0 0 0 node[/COLOR]
        curObject.pos = [0,0,0] 
        -- Changes the material name to match the object name[/COLOR] = 
        --Add the "turn to  poly" and limit the number of sides to 3[/COLOR]
        modPanel.addModToSelection (Turn_to_Poly ()) ui:on 
        curObject.modifiers[#Turn_to_Poly].limitPolySize = on 
        curObject.modifiers[#Turn_to_Poly].maxPolySize = 3
    [COLOR=YellowGreen]     -- Exports the object as fbx with default settings[/COLOR]
        exportFile exportpath selectedOnly:true #noPrompt 
    [COLOR=YellowGreen]     -- get rid of turn to poly modifier[/COLOR]
        max modify mode
        deleteModifier curObject 1 
    [COLOR=YellowGreen]     -- moves object back to original position[/COLOR]
        move curObject curObjectPos 
    Disclaimer: I can't be held responsible if it launches missiles at Russia or harms your system in some way so use it at your own risk. If you have any suggestions or requests post them here or send me a PM and I'll see what I can do.


    Recreated the right wall tile set and worked on the diffuse a bit.
    Rescaled all objects in max instead of UDK.
    Worked on the lighting a bit.
    Worked on the globe materials.

  • fearian
    Offline / Send Message
    fearian Polycount Sponsor
    Wow, nice work Mark, and a very handy script to boot. May I ask why you have it rename the object material? I would assume it wouldn't help much on the UDK side of things?
Sign In or Register to comment.