tangent space /handness

normal

tangent

bitangent

三者互相垂直。

 组成一个tangent space

表示一个点 对于原本位置的偏移(扰动)

考虑到这是为了 normalmap做出虚假的normal来受光

我目前是这么理解的,下面做下去可以印证这个想法

 

保证同一个平面的顶点的切线向量是一样的

减少光照插值失真

http://www.gamedev.net/topic/320413-calculating-tangent-vectors-for-normal-bump-mappinghelp-again/

 

http://www.cnblogs.com/olswcsr/archive/2010/12/10/1902338.html

 

http://www.gamedev.net/topic/347799-mirrored-uvs-and-tangent-space-solved/

 

http://blog.csdn.net/mike_zw/article/details/6045668

------------------

 http://www.cnblogs.com/ThreeThousandBigWorld/archive/2012/07/16/2593892.html

ogre

-------------

 

这里会产生一个问题是 UV winding order

表现是,模型的normalmap结果 在某一半是反掉的

因为身体对称的部分在同样的uv采样 导致有一半是反的

 

maya里面tangentspace 里勾选 uv winding order detected或者ignored

得到的tangent数值是一样的 那种不对称的(uv竖向)

得到的binormal数值会改变 detected时uv竖向是对称的 横向是反的

 

解决方法 dot(cross(normal, tangent), binormal)<0 tangent=-tangent

再用这个tangent去算normal 

大概是这个思路

你可能感兴趣的:(HA)