本帖最后由 坏熊猫 于 2021-10-18 15:27 编辑
血液之类的溶解因为有法线参与效果 溶解边缘测厚度处理是一个比较麻烦的问题,笔者之前使用的方法就是把固有色和法线分别渲染成序列 但是随之而来的就是中间帧问题 多了图片太大 少了不流畅。经过思考 想到了一种取巧的办法 效果稍差 但是游戏里足够使用了。先整体看下效果如下
首先我们新建shader,pbr模式,alpha叠加,链接固有色,自发光,法线贴图 金属度 粗糙度,将基本结构做出来。
这时候就发现溶解的边缘的不符合视觉传达信息的
经过观察思考 我们发现问题出在法线上了,只是透明度溶解了,这里我们就要对法线做处理了,怎样能让法线也想透明通道这样,能程序化,跟随固有色形状来实时改变法线,我们想到了个节点creat normal,这个节点就是根据高度图,依照中心拆分法来动态生成法线,这里我们做一下尝试。
一个是texture object数据类型 一个是一个一维向量 连接不起来 我们再次观察 发现normal create本身就是中心拆分法的节点函数 我们只需要拿到里面的函数结构 修改输入数据类型就好,打开normal creat节点 复制里面的节点,对中心拆分法非常熟悉的 也可以直接连接。
然后将节点并入我们溶解功能里,然后将原始法线混合进去,得到如下结构
这里我们解释下为什么用软溶解,软溶解边缘存在很多灰色区域 这样生成的法线过度会更加平滑。接下来我们考虑下透明通道,因为血液边缘比较硬朗,我们透明通道也不需要有半透效果,使用硬溶解效果更佳。如下图所示
再观察最终效果 经过观察我们发现了一些问题 溶解的边缘在最后的溶解过程里分离了,这是中心拆分法的一种弊端,这里我们需要给通明通道补充一些内容,让透明通道溶解慢于法线溶解。还有个额外难题就是溶解边缘太硬了,我们增加一些扰动进去。 最终效果视频
https://www.bilibili.com/video/BV1oh411J7h6?share_source=copy_web
特别感谢飘老师 阿修老师 亚洲同学的鼎立帮助
|
全部评论6