ainatipen 发表于 2022-4-22 10:08

沸腾魔药

※ A站看到的一个教程,试着自己做了一个,这篇是锅里沸腾魔药的效果。
翻滚的液体

翻滚的页面可以视作一个以液面中心为圆心构成的正sin波叠加噪音。
先用houdini打个草稿,效果和代码如下:


https://www.zhihu.com/video/1500324767005249536
float r = chf("radius");

f@x = distance({0,0,0},@P);
f@thr = chf("thr");

if(abs(@x-r)<@thr){
    @P.y+=chf("height")*sin(chf("a")*@x*(1-@thr/@x)+chf("phase")*chf("speed"));
}制作过程中发现从Houdini导出模型到Unreal时,法线和定点色有些问题。
只是创建模型直接导出为FBX的话,虽然导入时可以选择unreal来计算法线,但模型本身是不会自带法线信息的,法线信息写入point或者prim也不正确,正确的做法是将法线写入vertex中,创建tube时,勾选add vertex normal即可获得正确结果。
顶点色写入point即可,注意顶部液面的边缘一圈也要包含在内。


材质

根据上述vex代码在unreal中用材质节点复刻即可。


法线需要自行计算。来我们再来回忆一下法线的计算。根据顶点在竖直方向上的位移offsetZ,通过以下计算——
( 1, 0, - offsetZ ) × ( 0, 1, 0 )
获得垂直于上述两个向量的向量,即法线向量。注意offsetZ要取反,否则法线朝向会反。


https://www.zhihu.com/video/1500325438077104128
最终效果



https://www.zhihu.com/video/1500325466233462784
页: [1]
查看完整版本: 沸腾魔药