找回密码
 立即注册
查看: 760|回复: 9

Unreal-TrickTech_真彩虹岛_更新糖果糖浆

[复制链接]
发表于 2021-2-24 13:02 | 显示全部楼层 |阅读模式
前言:由于被删两次,这次把图截清一点,并且把代码发出来吧,就不放外部链接了。本文仅做心得分享,偏美术向审美向,不保证能适用于任何项目,不保证低性能消耗,不建议直接用在商业项目;本文也不是商业教程,也只能是尽量阐述制作过程和思路,不打包票能学会。
目标效果:
之前无意中在花瓣看到了这张图,就想在虚幻4里面以这个图作为效果参考,实现一下类似效果。

    Part1前期制作
模型制作:
设定岛的大小
彩虹环,先用一个面片把UV铺平,通过样条线变形凹成环形
用球删掉一大半做小沙丘
彩虹岛基础形状,尽量圆润一点,让整体圆滑些,不需要分展UV
贴图制作:
在SD里面使用渐变和噪波混合一下映射一下渐变,颜色找不着准可以去吸色然后减点,挑几个好看的颜色做渐变映射,可以再用tiling处理一下随机性和连续性。
从Substance Painter导出来的暗花法线和别的地方找的法线
用于模拟糖粒或者砂砾朝个方向的法线,之前做的时候找了很多素材还是这张好使
这个图就随意了,看个人喜好来加,只是为了增加点细节罢了
Part2:引擎部分
1、先做个世界位置投射的材质函数,做成材质函数为了方便后面通用,需要调整的一些参数都放在了材质参数集里,确保在别的地方调用的时候tiling值是一致;
2、岛基材质,岛基不需要做特殊处理,就把上面做的材质函数连到材质球的pin口上,创建实例附到岛上即可;
效果预览
3、小沙丘材质制作
首先需要在项目设置里先把距离场打开
材质全图
①、先一通计算距离场的蒙版,如果需要打破蒙版的呆板可以用vertex color在模型上画一下;
预览效果
②、算出来的蒙版经过DiterTemporalAA让一些像素往后偏移;
③、骚操作来了,我们小沙丘的模型是一个小突起,如果直接放到场景里是这样的,在与地面衔接的地方会有明显的边界,即使加了上面的像素深度偏移,
小沙丘和地面的法线方向
我们从世界法线方向的角度去考虑问题,就需要像接的地方的法向往上掰,然后和原本的世界法线方向进行插值,于是,我们把切线法线贴图转换到世界法线再和切线法线混合,切线法线如果直接用在世界法线上刚好就是一个朝上的方向,(alpha连接的是距离场蒙版)
原理同:
如果没有法线贴图参与的话是这么个思路,alpha依然是连接的距离场蒙版
原理图解
一通计算之后我发现阴影有点重又混合了0.5的(0,0,1)然后normalize一下直接输出到法线上,因为计算时使用的是世界法线,所以我们要在材质的属性里面吧使用切线法线的勾去掉,当然你也可以先自己transfrom一下,
去掉√
一通计算之后我们得到的世界法线是这样子的④、法线计算完了,我们开始做基础颜色部分,我希望小沙丘是随机颜色的,而这个颜色又是和底下的颜色不违和的,于是我就想
颜色贴图上随机随机查找一点作为我们沙丘的颜色,然后我想了一下,好像没有现成的random float的节点,于是我们就可以去UE的usf,ush里面找一找,在
引擎版本\Engine\Shaders\Private里有一个Random.ush
在vscode打开于是我找到这个
家里的VScode没有关联ush和usf,如何配置可以去参考抠脚大佬知乎的文章
这函数可以直接在custom里面调用,我观察了一下贴图u=v查找的颜色应该也够用了(相当于是在对角线上查找颜色),所以就没把uv拆开,如果你的图颜色分布不那么均匀或者别的话可以U和V输入分别调用这个函数一次并输入不同的seed;
小沙丘基本计算完毕,创建实例调参
效果预览
4、糖果材质制作
糖果这里几乎没什么特殊的计算技巧,主要还是分享一个思路吧
①、新建一个材质球,shading model改为 Two Sided Foilage
②、用菲尼尔同时控制次表面的不透明度和和自发光,这个菲涅算出来边缘是黑的,也就是说边缘越薄越透光,中间透光度低,但是同时会增加自发光的比重;
③、调参,我们通常画画的时候为了表现一个东西很透亮,会把亮部颜色压下去,把暗部边缘的颜色纯度提高;在这种绘画思想指导下所以我们把基础颜色的明度调压暗,在低明度的Diffuse下IBL效果也会弱化,自发光给一点,就想气球果冻一类的胶体应该会受到四面八方的来的光再从体内散发出去因为乘了一下菲尼尔相当于是光线从一头射向另一头的时候已经衰减了,光的能量累加衰减balbala???(我瞎想的反正就是加个菲尼尔x自发光颜色好看,调这个色的时候注意搭配就行),把SubsfaceColor调纯亮一点点,然后把整体不透明度在菲尼尔控制下整体压低一点但是要保留一点菲尼尔的效果,粗糙度要给一点不然会太光滑,期初的目的是为了调类似橡皮糖一样的效果有点粗糙,有点透光,亮部暗,暗部亮,有高光;
如果你调不出来可以吸色拿这个参数调
5、流流糖浆
主要分成两个思路,一个是位置偏移,一个是法线缩放,
表面和次表面和糖果相同
①、先算出约束偏移的蒙版,因为有些地方你并不需要他动得太多,你可以通过各种方法计算,手绘贴图或者顶点着色都可以只是个蒙版不用纠结;
②、算个缩放噪波和法线
通过time+世界位置去更新噪波position,并通过PreparPerturbNormalHQ和PreturbNormalHQ把function转换成法线


Aplpha连的约束蒙版,也可以换成距离场,这里原理和上面做小沙丘的原理类似,就是根据蒙版来把法线往上掰,掰弯转成切线法线
高亮的Alpha连的前面计算的noise
③、世界位置偏移计算
这一步我也忘记为什么没用了反正,可以用本地的,你们可以自己试试
来一些蜜汁常数,各种panner, append,算出三个差异化较大的噪波,然后appen在一起
上面计算的结果归一化一下,乘个偏移强度,alpha依旧是连第一步计算的蒙版,让某些地方不要偏移太厉害,指直接lerp 0让某些地方动弱一点
④、把上面两个结果lerp一下
和②的第三张图位置是一样的,然后连接到世界位置
然后调调参数
5、水波纹糖浆
最开始用了极坐标去算波纹但是效果不理想,最后是在max里把圆柱两头的面删掉,然后把一一头所有点压在一起,然后把整个柱子压扁,然后在SubstanceDesinger里算了两张波纹图,用UV动画实现;


稍微地编一下,加点素材,房子树木用的是LowpolyStyle,天空球用的UltraDynamicSky


https://www.zhihu.com/video/1117192565472043008

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-2-24 13:08 | 显示全部楼层
好甜好想吃[思考]
发表于 2021-2-24 13:12 | 显示全部楼层
梦幻糖果屋。滑稽
发表于 2021-2-24 13:12 | 显示全部楼层
大吉大利今晚吃糖
发表于 2021-2-24 13:19 | 显示全部楼层
糖浆模型很自然啊,是怎么做的?
发表于 2021-2-24 13:26 | 显示全部楼层
强[赞][赞]
发表于 2021-2-24 13:26 | 显示全部楼层
感谢大佬[惊喜]
发表于 2021-2-24 13:32 | 显示全部楼层
423好像有个节点"Sobol"可以拿来取随机浮点
发表于 2021-2-24 13:40 | 显示全部楼层
美哭了
发表于 2021-2-24 13:41 | 显示全部楼层
大佬6p!!
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-20 15:35 , Processed in 0.096558 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表