07_添加鼻线

添加鼻线

当前没有鼻线,灯光在正面没有鼻子很奇怪

读取鼻线Mask

鼻线的位置其实是在面部贴图的Alpha通道中,我们已经进行传入了,但是没有调用

创建NoseLine组

参数设置

先为Forward组添加输入参数,垂直水平显示的阈值还有鼻线颜色 创建新组并设置输入等参数 传入的Mask需要先判断是否为Face

获取观察向量

获取观察向量一般来说是对世界空间下相机向量进行归一化即可。但Blender不太一样,它的相机深度轴不是Z,而是-Z,所以需要翻转。当然也有简单的获取方法** **方法一* 直接从几何属性获取,Incoming就是ViewDirWS,说实话这名字真不太熟啊。。 方法二 直接计算

计算鼻线的DisplayValue

参考代码 根据点乘判断方向>0同向,小于0反向,计算ViewDir和HeadUP点积已及ViewDir和HeadRight点积用作判断。 这里我们需要自己写一个SmoothStep节点,因为Blender是MapRange节点里的不符合我们需要 Smooth公式及节点如下: 计算完成后输出结果,颜色进行压暗处理

混合输出

先使用NoseLineDispValue混合描边颜色和基础颜色 混合完成后再使用Face的布尔值对带描线的颜色和不带描线的颜色混合

参数设置

给ForwardShader调参数,颜色为FF8181

当前效果


Enjoy Reading This Article?

Here are some more articles you might like to read next:

  • URP - RendererFeature :ScreenSpaceOutline
  • 平滑法线处理 - 八面体映射
  • Lv.3 Unity主线:一个简单的PBRShader
  • 理论支线:直接光漫反射与GGX高光的混合问题
  • 理论支线:PBR - 基于图像的照明( image based lighting-IBL)
  • # #