模型空间转切线空间的变换矩阵

a2v中的数据,传入的就是顶点的法线和切线都是模型空间中的,但是切线空间是顶点为中心的,那么可以说这些顶点的法线和切线就是切线空间x,z轴在模型空间的表达,那么就很好求出切线空间到模型空间的变换矩阵了,只需要使用这几个轴构建变换矩阵就行了。那么模型到切线的变换矩阵就可以通过求逆来得到了,切到模只有旋转和平移,那么就可以通过转置来直接获取得到了。

//计算副切线的方向,v.tangent.w记录了副切线的方向
float3 binormal = cross( normalize(v.normal), normalize(v.tangent.xyz) ) * v.tangent.w;
//转置构建变换矩阵
float3x3 rotation = float3x3(v.tangent.xyz, binormal, v.normal);


也可以使用Unity内置的宏来计算出rotation

TANGENT_SPACE_ROTATION;
//rotation

首页 我的博客
粤ICP备17103704号