北京西站到八达岭长城最快路线,网站后台怎么上传图片,电脑搭建网站步骤,如何建立网站和网页文章目录 前言一、采样出错的原因二、切线空间是什么#xff1f;切线空间图解#xff1a; 三、计算方式1、统一变换到切线空间下进行计算2、统一变换到世界空间下进行计算 四、一般统一变换到世界空间下的坐标进行计算1、求M^-1^2、求出n~w~ 前言
这篇文章#xff0c;主要解… 文章目录 前言一、采样出错的原因二、切线空间是什么切线空间图解 三、计算方式1、统一变换到切线空间下进行计算2、统一变换到世界空间下进行计算 四、一般统一变换到世界空间下的坐标进行计算1、求M^-1^2、求出n~w~ 前言
这篇文章主要解决上篇文章中对于法线贴图采样出错的Bug。
Unity中Shader法线贴图上 一、采样出错的原因
在上篇文章中我们对法线贴图采样使用的是世界空间下的坐标。但是我们纹理在制作时使用的是切线空间下的坐标所以会导致贴图采样出错。 二、切线空间是什么
切线空间Tangent Space一个由顶点为原点组合而成的独立的坐标空间。
在这个坐标空间中
X轴代表的是 顶点的切线TangentY轴代表的是 顶点的副切线BiTangent,也有别的叫法 副法线BiNormalZ轴代表的是 顶点的法线Normal
因此由切线、副切线、法线组成的矩阵也被称为 TBN 矩阵
切线空间图解 由图可得 对于顶点来说唯一确定的是顶点法线z轴。但是和法线垂直的切线有无数条。 那么我们需要怎么确定 哪一条切线作为 X轴顶点切线和 Y轴顶点副切线呢 所以我们规定 以纹理UV的 u 坐标方向为X轴顶点切线 以 顶点法线Z轴 和 顶点切线X轴 叉积 得出 顶点副切线Y轴 三、计算方式
计算时必须在同一空间坐标下计算不然会出错
1、统一变换到切线空间下进行计算
2、统一变换到世界空间下进行计算 四、一般统一变换到世界空间下的坐标进行计算 在上图中在把切线空间下的法线转化为世界空间下的法线时 切线变换矩阵我们是已知的、切线空间下的法线我们也是已知的法线贴图 所以求 世界空间下的法线时最核心的就是求切线变换矩阵的逆矩阵M-1。 注意这里求的 世界空间下的法线 和之前文章中所用的不是同一个法线之前文章中使用的法线都是模型顶点世界空间下的法线这里的时 法线贴图上的法线转化到世界空间后的法线。 1、求M-1
M矩阵有着如下性质 图中 Tangent x :代表切线上的单位向量的X坐标 1 Tangent y :代表切线上的单位向量的Y坐标 0 Tangent z :代表切线上的单位向量的Z坐标 0 BiTangent x :代表副切线上的单位向量的X坐标 0 BiTangent y :代表副切线上的单位向量的Y坐标 1 BiTangent z :代表副切线上的单位向量的Z坐标 0 Normal x :代表法线上的单位向量的X坐标 0 Normal y :代表法线上的单位向量的Y坐标 0 Normal z :代表法线上的单位向量的Z坐标 1
由此可以知道 M 是 单位矩阵也可以得出 M 是正交矩阵得出 Mt M-1。
2、求出nw