Godot根据遮罩图移动粒子
创始人
2024-05-16 00:34:09
0

前言

目前UI粒子特效unity引擎比较多,也好找资料,但是一般都是利用模型,使用3D粒子伪装2D效果。

Godot中也可以做到这一点,并且Godot有专门的2D粒子系统,可以通过一张遮罩图对粒子的位置进行设置。

godot粒子教程

准备阶段

1、使用ps新建256*256的工程。

2、将左下角两个颜色变成纯黑和纯白

3、使用钢笔工具勾勒出路径,并在打开路径面板

 

4、修改画笔设置,勾选颜色动态,控制改为渐隐,后面的值需要手动不停调,有可能不会出效果是因为值不对。

5、点击路径面板下面的第二个按钮 ,用画笔描边路径

 就可以得到这样一张遮罩图了。由黑变白

参考链接

 原理讲解

godot的粒子shader,可以设置粒子的位置,如果每帧每个粒子读取这张图,使用texelFetch每个像素判断颜色是否等于n,如果等于,则将获取到的位置赋予粒子。

texelFetch函数有三个参数,纹理图,位置,不知道是啥(填0即可)

返回的是指定位置像素颜色vec4。

实际操作

新建2D gpu粒子,创建粒子材质,加载发射遮罩。

这时把上面两张图保存,并记住12571,是此图的尺寸。

加载发射遮罩教程

 然后你就得到了两张图

一张是存的图片位置,一张是存的图片颜色。

这时我们新建一个粒子shader并填入以下代码

shader_type particles;uniform sampler2D img;uniform int emission_texture_point_count;
uniform sampler2D emission_texture_color : hint_white;
uniform sampler2D emission_texture_points : hint_black;uniform int point : hint_range(0,12571) = 0;
uniform float offset : hint_range(0.0,1.0) = 1.0;void vertex(){CUSTOM.y += DELTA / LIFETIME;//int point = min(emission_texture_point_count - 1, int(1.0 * float(emission_texture_point_count)));ivec2 emission_tex_size = textureSize(emission_texture_points, 0);//2048ivec2 emission_tex_ofs = ivec2(point % emission_tex_size.x, point / emission_tex_size.x);//0~2048 0123ivec2 pos = ivec2(0,0);while(true){pos.x = pos.x + 1;if(pos.x > 2048){pos.x = 0;pos.y = pos.y + 1;if(pos.y >3){pos.x = 0;pos.y = 0;pos = ivec2(0,0);break;}}vec4 p = texelFetch(emission_texture_color, pos, 0);if(abs(p.r - offset) < 0.03){break;}}//texelFetch使用整数坐标获取单个纹素TRANSFORM[3].xyz = texelFetch(emission_texture_points, pos, 0).xyz;//float size = (1.-CUSTOM.y) * 0.5;//TRANSFORM[0].x = size;//TRANSFORM[1].y = size;//COLOR = texelFetch(emission_texture_color, pos, 0);
}

 

 注意上面那个while循环,改的话小心,容易把电脑弄崩。

如果要自动根据粒子寿命播放,修改if(abs(p.r - offset) < 0.03){这一句里面的offset为CUSTOM.y即可。

待优化

这里只是记录以下想法,实际操作下来感觉不是很好用,另一种方案是脚本代码读样条线,把数值传递给粒子系统。

这采样次数有点多,感觉可以按3d vat的思路,贴图的每个像素点直接记录一个分段点的vec2局部位置,这样一根64分段的曲线只需要64*1的贴图,然后偏移粒子的uv去采样位置就行,还能利用自带的线性过滤插值。

有感兴趣的大佬如果做到更好的,可以b站联系我“岩岩bi”

相关内容

热门资讯

宏观政策维持宽松基调 为“十五... [ 四季度宏观政策保持战略定力,呈现托而不举、精准发力的特征,协调推进逆周期与跨周期调节。在稳住全年...
增值税征与免:“避孕药品和用具... 增值税征与免:避孕药品和用具何以成热点? 文/税海涛声 ——自2026年1月1日起,销售避孕药品和...
【西部大事12.7】中共中央印... 中共中央印发《中国共产党工作机关条例》 近日,中共中央印发了修订后的《中国共产党工作机关条例》(以下...
与19名原告和解,胜利精密仍诉... 12月5日晚间,胜利精密(002426)公告,近日,在江苏省南京市中级人民法院的调解下,公司与陈某涛...
卫冕!中国队夺得乒乓球混团世界... 再次交手,即便日本队疯狂变阵,依旧没能战胜国乒。 北京时间12月7日,乒乓球混合团体世界杯决赛,中国...
首部上市公司监管专项行政法规来... 12月5日,证监会就《上市公司监督管理条例(公开征求意见稿)》(以下简称《条例》)公开征求意见。市场...
即刻上场:难得遇到这样的律师题... 现在都市白领题材电视剧非常多。小编今天要给各位介绍这样一部,描述律师工作生活的电视剧——《即刻上场》...
政策赋能行业升级 浙江美大推动... 在当前以深化供给侧结构性改革、增强供需适配性为核心的政策导向下,中国家电产业正经历一场从规模扩张向质...
紫牛热点|杭州野生动物世界回应... 12月6日,多名网友发布视频称,杭州野生动物世界欢乐剧场演出结束后,一只黑熊突然袭击驯养员,相关画面...
借国家县域商业建设政策东风 全... 从乡镇商贸中心的全新景象,到城乡物流中心基地的高速运转,一幅县域商业活力迸发的生动图景正在延吉市徐徐...