首页 > 其他分享 >Unity插件 - MeshEditor(十) 模型风力拉扯特效

Unity插件 - MeshEditor(十) 模型风力拉扯特效

时间:2022-12-13 15:06:01浏览次数:79  
标签:dots 插件 MeshEditor vertices Unity 风力 风向 顶点 Blows


更新日期:2020年4月23日。
 Github源码:​​​[点我获取源码]​

 

先上几张效果图:

 

Unity插件 - MeshEditor(十) 模型风力拉扯特效_Effects

 

(导演:我们需要一个刮风的效果,道具组,上大风扇)

Unity插件 - MeshEditor(十) 模型风力拉扯特效_Effects_02

 

(导演:咔!!!行了,道具组你们明天不用来上班了)

 

(大风扇:怪我咯)

 

OK,进入今天的正题吧,我记得在PS或者是某些图片编辑工具里都有类似给目标添加一个大风的效果,虽然这样做最终图片也会被风刮得模糊不清了,但有时候就是需要这样的效果不是吗?所以我再次秉承了暴力解决一切的终极技巧,将大风扇搬了过来。

 

一、原理:

 

我的做法是首先确定风向,然后根据风向与每个顶点的法线计算点积,最终用点积来确定每个顶点将会受到风力的影响程度。

调用如下方法设置风向:

MeshBlow.SetDirection(Vector3 direction);

 

记录每个顶点将会受到风力的影响程度(计算风向与顶点法线点积):


 


//计算每个顶点将会受到的风力影响
_dots = new float[_vertices.Length];
for (int i = 0; i < _vertices.Length; i++)
{
_dots[i] = Vector3.Dot(_mesh.normals[i], _blowsDirection);
}


 


然后,直接开启大风扇(也就是让顶点开始根据风向偏移,主要是模型的边缘顶点以及背离风向的顶点):


 


for (int i = 0; i < vertices.Length; i++)
{
if (_dots[i] <= 0)
{
vertices[i] += _blowsDirection * BlowsPower * _dots[i] *
Random.Range(BlowsPowerMinRate, BlowsPowerMaxRate);
}
}


好了,代码简直简单暴力得无话可说。


 


二、属性面板如下:


 



Unity插件 - MeshEditor(十) 模型风力拉扯特效_Unity_03


 

Blows Direction:风向

Blows Power:风力

Blows Power Min Rate:风力变化最小速率(当为0时,风力为0)

Blows Power Max Rate:风力变化最大速率(当为1时,风力最大,再大则翻倍)

Update Blows:是否持续刮风?不的话就刮一次,模型保持被吹一次时的情景

Update Rate:持续刮风的速率,越小刮得越快(也就是刷新的越快,越小看着越不卡,只不过性能遭不住不怪我)

 

三、运行:

 

在任意静态模型上添加脚本MeshBlows,勾选UpdateBlows,然后直接运行场景就可以看到效果:

 

再上几张效果图:

 

(横向瞬移)

Unity插件 - MeshEditor(十) 模型风力拉扯特效_MeshEditor_04

 

(垂直瞬移)

Unity插件 - MeshEditor(十) 模型风力拉扯特效_Power_05

 

 

-----by MeshEditor

 

标签:dots,插件,MeshEditor,vertices,Unity,风力,风向,顶点,Blows
From: https://blog.51cto.com/u_15911199/5934138

相关文章

  • Unity 纹理优化及TextureProcessor工具
    更新日期:2020年11月18日。Github源码:​​​[点我获取源码]​​索引​​纹理优化​​​​TextureProcessor工具​​​​使用​​​​Resizer纹理缩放器​​​​打开纹理缩放......
  • Unity插件 - MeshEditor(十一) 模型正弦扭曲特效
    更新日期:2020年4月23日。Github源码:​​​[点我获取源码]​​ 先上几张效果图:   OK,进入今天的正题吧,插一个正弦函数的话题进来: 首先,正弦函数曲线,如下:  在如上坐标系......
  • 【Unity】 HTFramework框架(三十九)UI的数据驱动模式,MVVM
    更新日期:2020年10月24日。Github源码:​​​[点我获取源码]​​​Gitee源码:​​[点我获取源码]​​索引​​UI的数据驱动模式​​​​使用​​​​数据模型​​​​Bindabl......
  • Unity UGUI无限列表(Infinite List)
    更新日期:2020年10月16日。Github源码:​​​[点我获取源码]​​索引​​InfiniteList​​​​使用​​​​创建InfiniteListScrollRect​​​​InfiniteListScrollRect参数......
  • Unity - 粒子系统跟随路径移动
    对于最新版的粒子系统ParticleSystem,要让其跟随路径移动,无非就是借用其自身的API直接为每个粒子设置速度。看一下最终的效果图:编辑器为了能在场景中更方便的编辑路径,我们要......
  • 【Unity】 HTFramework框架(三十七)Inspector自定义序列化检视器
    更新日期:2020年8月21日。Github源码:​​​[点我获取源码]​​​Gitee源码:​​[点我获取源码]​​索引​​Inspector自定义序列化检视器​​​​使用​​​​Dropdown下拉......
  • 【Unity】 HTFramework框架(三十六)AssetsMaster资源管理器,做资产的主人
    更新日期:2020年8月13日。Github源码:​​​[点我获取源码]​​​Gitee源码:​​[点我获取源码]​​索引​​AssetsMaster​​​​使用AssetsMaster​​​​打开AssetsMaster......
  • Unity 多物体混合动画、值变动画控制器
    索引​​前言​​​​示例​​​​1、4个Cube的联动动画​​​​2、UGUIText文本动画​​​​3、UGUIImage图片动画​​​​4、物体消隐动画​​​​使用与解析​​​​1......
  • Unity实现在白板上绘画涂鸦
    前言有段时间没有更新博客了,不知道应该写些什么,太简单感觉没有记录的必要,太难自己都没能理解,不知道如何下手。回归初心,记录自己想记录的东西。需要实现一个白板绘画的功能,......
  • Unity 使用拖尾渲染器模拟简易的管道流体
    关于管道流体关于管道流体,最佳的解决方案肯定是UV动画无疑,在网上看过很多例子几乎都是这样的,毕竟用实时流体计算的话开销确实太大,用粒子系统的话又苦于难以表现出流体的粘稠......