Looking Ahead at Things to Come: NoMaps
Looking Ahead at Things to Come: NoMaps

Looking Ahead at Things to Come: NoMaps

For this roadmap preview we wanted to spice things up and brought in Niels Fröhling from the Rendering team in for an interview about NoMaps, a nice little tool he developed (and it's coming up in the next update) which gives users extra functionalities for mesh topology.

Hello Niels. Thank you so much for this interview. Could you please give us a brief introduction of yourself and your job?

Hi, my name is Niels and I’m a Rendering Engineer. My work is mostly about programming the pipeline, which takes all the assets and setups and makes them into nicely rendered images. My focus is on the material system, but I also take care of the en/decoding of our data streams, vertex data, texture data, and so on. Previously, I was a Tools Programmer responsible for making sure the assets translate correctly from design packages (3DSmax, Maya, Photoshop etc.) to the engine. Broadly speaking, I get to play with the code for everything asset related.

In your words, what is NoMaps and how does it work?

NoMaps is a little tool which offers functionality related to mesh topology, specifically topology stored in texture maps.

The difference between a regular diffuse map and a normal map is that the albedo map is not related to the mesh itself, it is always the same albedo value all the way from disk to lighting. This is not true for other maps, like displacement maps, normal maps and to some extent even smoothness/roughness maps, which contain modifications of the topology of a base mesh on a macro, meso and micro level respectively. When the mesh changes, then the combination of the two will produce a different result, like a different outline or different shading.

So, NoMaps takes a texture map and a mesh, it relates one to the other and creates “relative” maps that are more flexible, but can only be used in conjunction with that same mesh. A couple of specific examples are:

  •   take an object space normal map and a mesh, and bake the tangent space normal map, and vice versa
  •   take a displacement map and a mesh, and bake the object space normal map as well as the smoothness map

In addition it features a variety of Photoshop-like functions, like swizzling (changing the order of) channels, or automatic matching of an object space normal map to a mesh, or blending multiple normal maps together and changing the steepness of normal maps, as well as visual inspection tools which allow you to debug the topology of meshes.

Before this tool, was it possible to achieve the same results? If so, what was the workflow?

A few of the results can be achieved with other software, sometimes utilizing a lot of different software rather than one tool. A few of the features and processes I haven’t seen done anywhere else, however.

The main purpose of NoMaps is the baking of high-poly mesh topology into a tangent space normal map used on a low-poly mesh. It’s a common occurrence in game development. The software would project the high-poly mesh onto the low-poly mesh and extract the local surface directions, encoding them in a tangent-space normal map.

Now, the problem is that the creation of the tangent-space itself is done in the renderer, and any baker needs to match the renderer absolutely perfectly, or the shading goes at the very least a bit weird, if not totally broken. So, in the past when you tried to do this for CRYENGINE you had to use software which assumed that our renderer did the tangent-space in this and this way, while it was not. So the maps were essentially always somewhat wrong, and people tended to repair it by hand in Photoshop based on visual inspection, or simple accepted the slightly off bake.

NoMaps is made using the CRYENGINE codebase, and the tangent-space is precisely the same as in the renderer. I’m pretty sure that NoMaps is the first piece of software which “simulates” our renderer perfectly, allowing bakes which can’t be improved on from a “correctness” perspective.

Why would CRYENGINE users find this tool valuable?

It helps bringing assets with this highest quality into CRYENGINE, with relative ease. It removes quite a few steps from previous workflows, and opens up other workflows.

What are the limitations of this tool?

The purpose of the tool is solely to convert to/from normal maps and combine them with other normal maps. It’s not a texture painter or a mesh editor.

How long did you work on the development of NoMaps?

It took about three months, not counting the mini-rendering engine which I had available to me.

Once again, thanks a lot to Niels for spending time with us. We hope you enjoyed this interview and our previous roadmap teasers. NoMaps will be available on CRYENGINE 3.8.6.

All the best,