Hey Matt,

Your result might be different because of the tangent space calculation. I 
suppose that the normal map calculation might be done in object space, then 
Ultimapper converts it into tangent space. Ultimapper could be quite good, but 
lacks a very important feature, the cage. So finally we dropped in favor of 
xNormal.

You might check few things (I'm not a programmer, so I may be wrong). Check the 
transforms. In my experience transforms has effect how vertex normals are 
calculated. Certain distance from the origin might result imprecision (is this 
the right word?), and the farther the object is from the origin, the bigger 
this imprecision is.

There are discrepancies, for sure, because these tools have different approach 
to derive tangent space. For example, Softimage uses the vertex color to store 
the tangents, and binormal is calculated from this. But, if your smoothing on 
the geo and on the tangent space property differs, you won't get any usable 
normal map. For example the smoothing on tangents made Ultimapper quite useless 
for us, so I wrote an exporter for xNormal, and since then we have no issue at 
all. As our technical chief explained, a normal is correct only if the normal 
baking and displayer use the same tangent calculation. He wrote a tangent space 
calculator for xNormal, that uses the same algorithm CryEngine uses. So, unless 
your game engine approached tangent space differently than Softimage, you won't 
get good result.

I think the whole game pipeline should be redesigned in Softimage...
From: [email protected] 
[mailto:[email protected]] On Behalf Of Matt Lind
Sent: Friday, January 03, 2014 5:17 AM
To: [email protected]
Subject: ultimapper issues - tangent space normal maps

I am writing a modified ultimapper to convert tangent space normal maps from 
one mesh to another.  The tool is needed because our tangent space normal maps 
are not encoded in the standard way and softimage's tools cannot be modified to 
support our proprietary tangent space.  For prototyping I'm using the softimage 
tangent space and tangents property to do the transfer so I can check my math 
against ultimapper.  Once I get a 1:1 match, I'll modify the logistics to 
support our proprietary stuff.

So far when the hi and low res meshes are untransformed I get a 1:1 match with 
ultimapper, but when I transform one or both meshes a wide discrepancy appears 
between my result and the softimage ultimapper result.  The softimage result 
tends to be significantly brighter on the red and green channels, mostly on the 
green.  In some cases, the colors are not even close to the same.  The odd part 
is when I trace through the process step by step to debug, my numbers look 
correct both visually and mathematically.  I'm in a weird situation in that I 
do not know who's result is more correct, mine or Softimage.

Some of our artists have mentioned there have been some discrepancies compared 
to other commercial normal mapping tools (beyond flipping the Y axis).  Has 
anybody had issues getting correct results from ultimapper when transferring 
tangent space normal maps between meshes?


Matt


Reply via email to