点关注不迷路,持续输出Unity
干货文章。
嗨,大家好,我是新发,今天给大家分享一个Unity
流体模拟插件:Obi Fluid
本文Demo
工程已上传到CodeChina
,感兴趣的同学可以下载下来学习:
地址:https://codechina.csdn.net/linxinfa/UnityFluidSimulationDemo
注意:我使用的Unity
版本是2020.2.7f1c1 (64-bit)
。
在Hierarchy
空白处右键点击菜单3D Object / Obi / Obi Emitter (with solver)
。
此时,会创建一个挂了如下四个组件的物体:
Obi Emitter
:流体发射器;
Obi Emitter Shape Disk
:流体发射器的形状;
Obi Particle Renderer
:流体粒子渲染器;
Obi Solver
:流体解决方案。
此时运行效果如下:
我们创建一个平面。
挂上Obi Collider
组件。
运行效果如下:
我们看到上面的流体效果是明显的小球的样子,此时,我们给摄像机挂上Obi Fluid Renderer
组件,并赋值Particle Renderers
元素为上面创建的Obi Emitter
。
并将Obi Emmiter
物体上的Obi Particle Renderer
组件的Renderer
勾选去掉。
再运行,效果如下:
通过Obi Particle Renderer
的Particle Color
属性,即可修改流体的颜色。
效果如下:
为了方便演示,我们加个盆子模型,为其添加Mesh Collider
组件,并勾选Convex
。
并挂上Obi Collider
和Obi Rigidbody
组件。
如下:
为盆子添加Obi Collider
组件,否则流体会直接穿过盆子。
将摄像机镜头拉近,运行效果如下:
通过Obi Particle Renderer
的Radius Scale
可以调节流体颗粒的大小,如下,我们调整为1.5
。
运行效果如下:
运行一会儿,帧率跌3.6FPS
,我们需要设置一下参数,减少运算。
通过Obi Emitter
组件的Emitter Material
可以设置流体的材质,如下,以LowResulution
为例。
运行效果如下:
此时,帧率可以稳定在60FPS
左右。
选中Obi Emitter
,可以在Scene
窗口中看到喷射口的形状,是一个像花洒一样的东西。
我们看到喷射口的方向不是对着盆子的,调整一下Transform
的角度,使喷射口的方向对准盆子。
喷射口有点大,可以通过Obi Emitter Shape
的Radius
即可调节喷射口的大小,我们调为0.12
,如下:
运行效果如下:
我们还可以替换喷射口形状,比如换成条形的喷射口。
我们看到喷射速度比较慢,可以通过Obi Emitter
组件的Speed
属性调节喷射速度,我们调为4
,再给一个随机受力Random Velocity
。
运行效果如下:
可以通过Obi Emitter
组件的Collider Material
设置碰撞材质。
为了演示,我们把喷射口角度调整一下,让流体喷射在盆口边缘,如下:
接着,我们以VerySticky
为例。
运行效果如下,可以看到粘性很强:
通过Obi Solver
组件的Gravity
可以调节流体的重力加速度,如果重力加速度太大,流体可能会穿透容器。
如果设置为正值,流体则会收到向上的加速度,比如设置为5
。
运行效果如下:
在Obi Emitter
子节点下创建一个粒子系统。
给粒子系统挂Particle Advector
组件,并赋值Solver
对象。
将摄像机的Obi Fluid Renderer
组件禁用。
随便设置下粒子的效果,
运行效果如下:
喜欢Unity
的同学可以点击关注,欢迎留言评论,我会不断写一些Unity
的干货文章,希望可以帮助到想学Unity
的同学。