本文主要是介绍unity插件_试用_流体ObiFluid,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
unity插件_试用_流体ObiFluid
- 原理分析(个人看法)
- 基础组件说明(试用,只介绍关键参数)
- ObiFluildRenderer(摄像机上实际渲染的组件)
- Obi Solver(解决者,解算器)
- Obi Emitter(发射器)
- ObiParticleRenderer(液体的renderer)
- EmitterShape(发射器类型)
- Rig相关
- 相关ScriptableObject
- ObiEmitterMaterialFluid(液体材质)
- ObiEmitterMaterialGranular(烟尘材质)
- ObiCollisionMaterial(碰撞材质)
- 使用步骤
- 创建出水口
- 创建一个与水交互的物体
原理分析(个人看法)
生成大量带物理效果的小球(点),通过类似鱼群的算法对小球进行约束(模拟水的压力,张力什么的),最后通过小球的点来算出液体的表现。算出边缘的小球绘制液体圆滑的边缘,中心部位根据小球的密度来加深颜色。(取消勾选ObiParticleRenderer上的Render变量可以看小球)
B站CodeMonkeyUnity制作的建议流体,原理跟我描述的类似.
基础组件说明(试用,只介绍关键参数)
大部分只要翻译单词就能懂的变量不会介绍
ObiFluildRenderer(摄像机上实际渲染的组件)
如果camera上没有这个组件,或者该组件未启用则实际运行看不到液体
属性:
(1)ParticleRenderers 该摄像机会拍摄的流体的renderer数组,未挂载的拍不到
动态更改后要重新关闭打开一次才会刷新
(2)BlurRadius 模糊半径,range(0f,0.1f)
BlurRadius为0时
BlurRadius为0.1时
(3)thickness cutoff 厚度截止,range(0.01f,2f)
thickness cutoff为0.01时
thickness cutoff为2时
(4)ColorMaterial 颜色材质球,与ObiParticleRenderer的颜色乘法叠加(应该)
(5)FluidMaterial 流体材质球
最后两个材质球在添加该组件时有个默认的,没仔细研究
Obi Solver(解决者,解算器)
实际计算小球位置的处理器
公开属性:
(1)MaxPartices 该处理器的总小球数,每个Emitter在初始的时候会在Solver申请预算。Solver的usedPartices显示的是被申请预算的值(成功申请预算的Emitter的MaxPartices总和,没申请到的不起效),而不是当前每个Emitter的UsedPartices的总和
(2)Parameters 属性
1.Mode 2D还是3D
Obi Emitter(发射器)
公开属性:
(1)Solver 指定处理器
(2)CollisionMaterial 小球的碰撞材质,可以不加
(3)EmitterMaterial 小球的材质(液体材质或烟尘材质)
(4)NumParticles 小球数量限制(在Solver上面讲过)
(5)WorldVelocityScale 改了没感觉
(6)FluidPhase 没感觉
(7)Speed 发射器的初始速度,速度慢会有一滴一滴的感觉
(8)Lifespan 生命周期,单位秒
(9)RandomVelocity 随机速度的方法,调高了有出水口水花四溅的感觉
ObiParticleRenderer(液体的renderer)
公开属性
(1)Render 勾选时候显示小球,取消勾选显示液体(要在ObiFluildRenderer那边添加,上面说过)
(2)ParticleColor 显示液体时的颜色
(3)RadiusScale 每个小球在画大球时候的半径(原理分析说过),如果值太小,小于ParticleSize的话可能根本看不到液体(ParticleSize在后面会讲)
EmitterShape(发射器类型)
请按名称自行尝试
Rig相关
ObiRig要求已经添加过unity的Rig
ObiCol要求已经添加过unity的Col
ObiCol中的CollisionMaterial可以不管
注:ObiRig的KinematicForParticle勾选时会屏蔽液体的力,但是不会改变当前的运动状态。demo场景FluidMill可以试验
相关ScriptableObject
ObiEmitterMaterialFluid(液体材质)
简单说RestDensity(密度)越小Mass(质量)越小
Resolution越小,Mas跟Size都越小
ObiEmitterMaterialGranular(烟尘材质)
ObiCollisionMaterial(碰撞材质)
使用步骤
创建出水口
(1)创建处理器
右键/3DObject/Obi/ObiSolver
(2)创建发射器
右键/3DObject/Obi/Emitter
(3)创建液体材质
Assets/Create/Obi/Create ObiEmitterMaterialFluid
(4)配置Emitter
在Emitter上设置Solver跟EmitterMaterial
(5)摄像机配置
在camera上添加ObiFluildRenderer组件,并把刚生成的Emitter拖拽到ObiFluildRenderer的ParticleRenderers之中
创建一个与水交互的物体
(1)创建模型
(2)添加刚体,碰撞器
(3)添加Obi的rig跟col
(4)如果修改过Solver的CollisionLayers,要检查一下物体的layer
Mess值低(质量轻)的物体可以浮在水面
unity应用商店地址
这篇关于unity插件_试用_流体ObiFluid的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!