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

读取鼻线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

当前效果
