Posts tagged Technical Art
Project: pureLIGHT and UDK

A quick project of mine: I took some very basic geometry from Blender, baked some lightmaps in pureLIGHT then brought all of that over to the UDK to see how it would all work out. The level concept consisted of a very simple maze-like level that would be able to fit two players just nice, while demonstrating that you don’t just have Lightmass at your disposal if you want pre-calculated lighting.

The maps turned out just nice and showcased what pureLIGHT was capable of, while also demonstrating just how easy it is to implement a sort of middleware like this.

Anyway, on to the level!

All the meshes of the level where very basic exports from Blender, which was one of the harder things to get going as I eventually needed to just ask the pureLIGHT guys for a proper export script as none I found did the trick. Once that was said and done, the momentum with the project grew tenfold. With everything in pureLIGHT, it was as simple as telling it to bake, as the materials from my lights had saved and pureLIGHT imports the x,y and z from all meshes so fiddling with positioning shouldn’t be required.

Once processed, pureLIGHT dumps all of the final mesh and map data into ASE and TGA files that can be easily brought into just about anything, be it a game engine like UDK or 3D software like 3ds Max. The best part is pureLIGHT does all the custom UV work, meaning once it’s imported you just drag and drop the texture/material onto the outputted mesh and you map is applied perfectly onto it.

From here on out, it was as simple as placing and scaling all of the meshes and a few dynamic lights to get the end result. I do have to give thanks to Andrew Czarnietzki, he explained to me how to disable much of the UDK’s Simple collision that was wreaking havoc on my meshes. I found out soon after, however, that there must have been something that Unreal didn’t like about my meshes, as every time a bot or I moved while on per-poly collision, we both rose and fell. In the end I was able to add a BlockingVolume to even things out, but in the future collision meshes may be the way to go, even with this very simple geometry. I’ve noted that the next time through it would likely be better to export per mesh instead of per group of mesh, just to avoid some of this strangeness.


What I did right:

- Went to the resources available to me. The script I got directly from the guys at pureLIGHT Technologies worked exactly as I wanted it too.

- Had a clear plan from the beginning and executed it.

- Doing the project at all. Had I decided to bring this into something else mid project, it likely would have stalled everything.

What I did wrong:

- Very rough meshes, making for some light bleed and extra unnecessary polys. 

- Lightmap resolution not fully optimized.

- No collision meshes.

What I will do in the future:

Outside of adding the collision and making things a bit more optimized, I plan to move on from Blender and work toward adding proper materials and details into similar levels.

Materials: the technical artist's dream

While elements of textures haven’t been a totally new to me; I’ve put some heavy hours into Photoshop over the years. That said, there’s always been concepts that I could not figure out with other engines. A while back I tried my hand at Unity and while importing base textures to it was a breeze, figuring out how to apply basic bump mapping seemed very out there for one who had just picked up the software and was just now trying to figure out C#. Moving from that to the UDK, especially with Materials taking president over base textures, was worlds better.Materials helped me figure out what I was doing, what I can do and, best of all, how easy it is to get proper texture, detail and specular within the game engine.

This screenshot is of a material I’ve been working on for that second UDK level I showed some screenshots of. The focus was to take a previously created texture (in this case, it was the base of the M_PoolDirt_02_Opt material) and revamp it to match a very wet and well trodden piece of mud. Through both my own tinkering and some help from the gracious 3DBuzz, I was able to reach the target as well as grasp how to implement future materials, all within an afternoon. Compare that to what I ended up doing with Unity: Googling, finding someone who coded a solution and then having to backtrack through someones very very ugly script.

I will keep playing around with the editor, and hopefully I’ll have some more to show of it in the near future.