柔和材质SoftShader (Maya节点)


看料理鼠王的动作预览时,感觉他们的画面很柔和,没有死黑,暗部细节很自然,不像环境光那样平,而且光源很统一,没有错乱的明暗交界线,下午,实现了一下,3delight的shaderdl出了点问题不能编译rsl了,于是继续用Maya节点搞定...



原理

原理很简单,简单说下吧,说多了有被众神笑话的危险。

普通的Lambert是根据Shader表面法线和光线的点积计算亮度,结果小于0时截取到0,

C=clamp(0,1,(L dot N))

所谓的SoftShader就是以能显示更多的细节为目的,以失去写实度为代价,稍微改进了下,将点积的结果[-1,1]转换到了[0,1],这样原本小于0被截取的细节重新归一化后就成为了0~0.5之间的值,而原本0~1的亮部压缩到了0.5~1.

C=(L dot N)*.5+.5


实现

以下是Maya的实现节点网络:



说明

主要路线为灯光方向向量和法线向量点乘,输入到ramp的v坐标,从而调节ramp的亮度分布可以任意调节shader的颜色。

黄色区域使用相机的矩阵把camera space的法线转化为world space。

蓝色区域为取得灯光的阴影,调节亮度后输入到ramp的color gain来形成阴影。

里面一个locator,受灯光旋转约束,用来取得方向向量。


对比


左为默认lambert,暗部死黑

中为普通lambert,调亮ambient,虽然暗部变亮,但毫无细节

右为软软的SoftShader,很好的利用了0~1的范围


加Bump后更明显:



同样是一盏灯,只有右图的暗部能看到细节。


测试






上图开启阴影,Maya Software渲染,高抗锯齿,时间七八秒,场景只有1平行光,但效果不错,有点全局光的味道。

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值