In Praxis… I
This article series concentrates on the technical side of the development. We start it with a look at the 3D content creation tool Blender and how we use it.
Why Blender you ask? I’ve previously worked with 3ds Max and XSI and found both packages to have their strengths and weaknesses. The XSI workflow suited me well and was planning to continue with it when we started on this project. The limited project budget however made me look at other options aswell. Did take a peek at Modo which looked promising and a few other smaller packages like 3DCoat. I had heard good things about Blender from different sources and decided to have a look at it also.Before evaluating it I had a somewhat reserved opinion as to whether it would really be robust enough for actual content work, it being open source software. Quickly after starting to test it out (version 2.58a) I had to double check that it really was an open source project. Two things that really caught my attention. It was extremely stable and it seemed that there was a clear line of thought behind the workflow to which I quickly adapted. It wasn’t just copied from other sofware. Visually it was as professional looking as its commercial brethren. And of course you can’t beat the price.
It had all the features we figured we needed, so after a few weeks of using it and testing that we could get content from it to Praxis we decided to commit. And now after after several months we’re still happy with the decision.
Above is a screenshot of Zero-Two in Blender with the bone rig superimposed. The green bones are for the pistons which follow the animation of the main bones. We export the mesh and rig animation data to Praxis using FBX. It’s not 100% ideal, but for the most parts it works fine. We use Blender only to create the 3D assets: modelling, UV layouts and animation. Materials are created in Praxis.
One excellent tool in Blender is the texture painting tool. Our material system in Praxis uses layers for dirt and other attributes that modify the base material layer. The texture paint tool is ideal for quickly painting areas of dirt on the objects. This map defines where dirt will be present on the object. It’s not the actual dirt texture, it only defines where to blend the dirt onto the base material.
The dirt mask as we call it and and a moss mask are painted for most of the objects. These are the only per object textures. It is extremely fast to create compared to actually texturing each object. The base materials are shared between objects to save a huge amount of time. We use two UV sets to define the base material and the dirt/moss. Two UV sets poses no problem on the creation time, since our guideline is to keep objects fairly simple. Texturing an object is really fast once the base materials exist. The workflow:
1. Model directly the in-game mesh (no high res to low res baking)
2. Assign material names to desired polygons
3. Layout UVs, no need to pay close attention to how perfectly the space is filled
4. Paint dirt/moss masks quickly and in low res
5. Export to FBX
On the Praxis end materials are assigned to the different polygon areas. The materials are simply tiling textures which have to be created only once. For example there is only one chrome material in the game, all objects that are made of chrome, use the same textures. So instead all objects having unique textures (which would be impossible for me to create by myself) different materials have to be created only once. The uniqueness to each object comes from the dirt/moss masks. To enhance the uniqueness of objects a decal layer is used on some objects.
To save a huge chunk of time we decided not to do high res to low res transfer but instead create in-game meshes directly in a “medium” resolution. That combined with our “all hard edges must die” mission lays the foundation for being able to use tiling textures on all objects. In the above screenshot extra edge loops have been applied to create smooth edges. The geometrical smoothness must be on the geometry itself since no unique normal maps are applied. We are working on a solution to automate the rounding of edges.
And so concludes the first “In Praxis…” article. Hope it was even a little informative. If you want to know something more drop a comment and we’ll ty to answer if we can