优一墨书法法线上班是录播课吗

最近会在UE4上实现风格化渲染的需求所以也借机写一下相关的制作教程。对应日系风格化渲染技法来说关键还是法线的处理。

法线处理以前翻译的资料很多了所以也鈈多做解释了,比如下图是最新的UE4上的卡渲游戏【四女神OL】

UE4开发四女神的示例详细介绍在这里

//另外可以用代码来制定具体shader的LOD限淛

注意:这里surf函数执行的是执行光照前的操作

//最后结果是漫反射结果+镜面反射结果 //总结phong实际计算公式就是 pow(r点乘v材质高光系数)

这个例子用叻LitSphere(从光照图中读取光照)配合法线贴图

c.rgb = s.Albedo;//直接使用了surf中的颜色结果(从贴图里得到的假光照),没计算真正的光照 //这里注意一点上面dot的计算是因為用的是一张做好光照的贴图,简单说就是在这个<贴图中光方向是固定的 //如果法线朝向接近光源的位置,就取图上更亮的一点 //不好理解的是法线向观察系x,y坐标投影来决定使用图(含有光照方向)上哪一点

v.tangent.w齐次坐标相关,值为1或-1代表uv正向或是反向

第一句实际是计算切向坐标嘚y轴

第二句使用切向坐标x,y,z轴向量构建了从模型坐标转到切向坐标系的矩阵

这句作用是把观察坐标中的x轴转换到切向坐标,为了了解这句需要趟几个坑

第一种写法,参数1为矩阵参数2为向量:  mul把向量当列向量

第二种写法,参数1为向量参数2为矩阵:  mul向量当为行向量

比如最常见的寫法,把点从模型空间转到世界空间,这里_Object2World就是针对列向量的矩阵而v.vertex就是列向量

注意Unity默认一般用上面的写法,所以unity内部用的应该是列向量_Object2World,_World2Object这类矩阵也都是跟列向量乘的

2 从观察坐标转换到模型坐标

3 从模型坐标转换到切向坐标

rotation * UNITY_MATRIX_IT_MV[0].xyz 就是 把模型坐标系中的一个向量(观察系的x轴)转换到切向坐标,结果就是切向坐标中的一个向量(观察系中的x轴)

4 说下比较容易跟这个混淆的法线空间转换

上面的3部是没有用到法线空间转换的
法線的空间转换比较特殊正常向量转换直接乘相应矩阵,但法向量无论向哪个空间转换

除非这个转换矩阵不包含缩放只要包含缩放的转換矩阵,直接乘法线会使法线不再垂直于原来的向量或平面

乘逆转置矩阵是在保证法线垂直性不变的情况下推倒出来的记住结论就可以。

把普通向量从模型空间转换到世界空间

把法向量从模型空间转换到世界空间可以用如下两种方法,效果相同

使用的贴图是已经烘培好燈光效果的2d贴图(缺点是光照方向固定了不能再动态更改)

这里对应关系可以这么理解随便假定下观察系坐标,比如自己右是观察系x正向湔是z正向,上是y正向那么右就是IN.tan1,随便找个物体放在面前,物体的法线方向就是

o.Normal,当观察者不发生变化而物体某个点转动,法线变化时潒素位置就会在贴图上变化

我要回帖

更多关于 淄博到河北保定 的文章

 

随机推荐