[转载]使用粒子实现Logo消融效果

2023-11-26 18:40

本文主要是介绍[转载]使用粒子实现Logo消融效果,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转载自unity 官方中文论坛  点击这里查看原文

本文将由游戏开发者Mirza分享使用Unity的默认Shuriken粒子系统,在不使用插件或编写脚本的情况下,实现Logo消融效果。

 

 

这是一个Unity中运行的实时效果,你可以使用任意图片实现该效果,无论图片是否是彩色的。本教程将使用纯白色纹理来制作,根据该纹理调整设置,你可以改变部分粒子颜色,使其更符合自己使用的图片。

Part 1:Logo淡入淡出效果
我们首先处理粒子系统,实现整个Logo图片的淡入和淡出效果。
 



创建一个新材质,将Logo贴图赋予此材质。将其设置为使用Particles/Alpha Blended着色器。
 



我们需要确保纹理拥有读写权限。如果没有的话,基于纹理的粒子发射效果将只在编辑器中可用,无法在游戏中实现。
 



创建一个新的粒子系统。每次创建时,请重置Transform属性,这样游戏对象不会出现平移或旋转,除非打算使其以某种方式移动和旋转。
 



打开Renderer模块,并将粒子材质设置为刚刚创建的材质。如果想提高亮度,并且正使用着后期处理的泛光效果,我们可以将颜色调为纯白色,并将Alpha调到最大。

如下图对材质Tint Color进行的处理,将Render Alignment设为Local。我们不会让Logo的基础纹理粒子面向摄像机,这样能确保粒子面向本地变换的方向。
 



我们只打算发射一个粒子,所以查看Emission模块并按照下图进行设置。
 



现在我们可以进行Main模块设置。我们不需要循环播放该效果中的任何粒子系统,所以取消勾选Looping属性来禁用循环过程。

为了能通过脚本轻松地调整模拟时间,我们将Start Lifetime设为1。如果你不打算处理该数值,应该将它设为更合适的值。你可以将其设为较大数值,使观看者有足够时间看到Logo,再让Logo爆炸为精美的粒子。

如果我们不使用正方形纹理,则可能需要启用3D Start Size并处理参数。我们发射的是2D粒子,所以只要处理X和Y值。图像分辨率为1024*512,宽高比为2:1,所以将X值设为2,Y值设为1,使它匹配宽高比,避免使图片变形。

我们还降低了Start Color的Alpha值,因为使用后期处理设置的泛光效果时,图像的亮度会过高。
 



现在,我们需要使用Color over Lifetime模块来设置Alpha动画。下图是处理Logo淡入和淡出效果的设置。

Alpha淡入时间为总时间的25%,从25%~75%的时间显示Logo,然后再完全淡出。因为我们将该粒子持续时间设为1,所以分别设定的时间为0.25和0.75。
 



Part 2:Logo爆裂效果
在这一部分,我们将使用的粒子系统制作Logo分散的爆裂效果。
 



首先创建新粒子系统。我们有三种方法可以选择:
1、为点精灵图片创建简单的粒子纹理,将其指定给附加材质。
2、使用Ultimate VFX资源的点材质。
3、使用Inferno VFX中的附加发光球体材质。

这三种方法均可用于本文教程,Ultimate VFX 和Inferno VFX都是由本文作者Mirza所创作,如果你不想自己制作纹理和材质,也不打算付费购买资源,可以下载免费的Inferno VFX。

打开新建粒子系统的Renderer模块并设置材质,不必修改其它设置。
 



请按照下面的内容设置Main模块和Emission模块。

Start Delay会按指定时间推迟发射过程,以秒为单位。我们希望该效果在Logo淡出时发生,也就是从前面粒子系统的透明动画开始,即整个过程的第0.75秒。

这些粒子会很小,因此我们将Start Size设为单位大小的1/8,即0.125。粒子不用太亮,所以需要大幅降低Start Colour的Alpha值。

因为会有大量微小粒子,我们需要将Max Particles设为10,000,并将Emission模块中Bursts属性的Count数值也设为10,000。
 



现在让这些粒子从Logo纹理的形状发射出来,请按下面内容设置。

将Shape设为Box,指定Logo图片到Texture字段。如果想让粒子继承Logo的颜色,请勾选Color affects Particles。

类似之前的粒子系统Start Size设置,我们调整了发射器边界,通过设置Scale为[2, 1, 0],使其匹配图片的宽高比。Z值为0,因为希望让发射器在平面上发射。
 



此时,当粒子在Start Delay后发射时,我们会看到类似下图的效果。现在有了在纹理形状发射的基础,我们可以实现任何想要的效果。
 




现在处理分散的文字。启用Velocity over Lifetime模块。

点击该属性最右侧箭头设置Linear属性,选择Random Between Two Curves。指定相似曲线到所有轴,范围从-1~1。曲线会随时间慢慢增强分散效果,而不是立即分散,因此它能更好地融合前面的粒子系统,并提供过渡转变为噪声分散粒子系统。

为方便起见,这里使用了Speed Modifer来调整数值,但是为每个轴直接设置数值会更好,这样粒子系统可以自动剔除。本示例是一个Logo动画效果,所以这样处理意义不大。
 



最后,按下图启用并编辑Color over Lifetime模块和Size over Lifetime模块。
 



Part 3:Logo噪声分散效果
接下来,我们将会制作第一个噪声分散效果,如下图所示。该效果需要一个新的粒子系统,我们可以将刚制作好的粒子系统复制过来,因为许多设置是相同的。
 



我们需要修改部分设置,在Main模块和Emission模块中有一些区别。

Start Delay和Start Lifetime的数值会在1到2秒之间随机选取,Start Size较小,Max Particles设为20000,Burst中的Count值也设为20000。为了随机选取Start Lifetime数值,点击下拉箭头,选择Random Between Two Constants。
 



Color over Lifetime模块也有不同。
 



引入噪声后,就变得有趣了,现在启用Noise模块,按下面内容进行设置。

我们将Strength改为使用曲线,这样粒子不会立即以噪声方式分散,从而更好地与其它效果融合。右键点击曲线的控制点,选择Edit Key… 来直接控制并编辑点在视图上的位置,使用Broken切线模式允许你修改左边或右边的切线,而不改变另一侧的曲线。

通过使用这二个方法,我们将控制点设在0.25s,该点左边为直线,右边为曲线。得到的结果是0.25s前不使用噪声,之后会突然上升为1。

频率为1.5时效果看起来不错,它能控制“混乱”等级,因为粒子由渐变场操控。Scroll Speed设为1会使噪声在粒子生命周期生成动画。

我们使用了大量粒子,如果将Quality设为Medium (2D)会加速模拟效果,且不会与最终效果有太大区别。
 



我们将Render Mode改为Stretched Billboard,设置Speed Scale为0.1,Length Scale设为1,这样会稍微根据当前的移动速度和方向拉伸粒子,产生近似运动模糊的效果。
 



其它设置可以保留原样,因为我们重用了之前粒子系统的设置。

Part 4:Logo噪声分散2
复制我们刚刚制作的粒子系统,开始制作最后一个粒子系统,它或许是该效果中最精美的部分。
 



我们需要修改Main模块和Emission模块中的部分设置。

Duration设为0.75。这是因为这里不会在一次爆炸中发射粒子,而是会使用Rate over Time。我们还修改了Start Delay和Start Lifetime数值,并提高了Start Color的Alpha值。
 



按下图设置Color over Lifetime模块和Size over Lifetime模块。让粒子从蓝色变为桔红色,每个粒子的大小会快速增大然后缓慢减小。
 



最后,修改Noise模块的设置,将Strength和Frequency设为1。你可以将Quality改为Medium (2D)。
 



Part 5:组合所有效果
到这里就差不多完成了,让我们重新看一遍已经制作做好的独立粒子系统,然后将所有效果结合成一个可播放对象。


我们可以将这些粒子系统命名并分组为另一个粒子系统,将所有模块禁用,这样它们会在你选择其中任一对象时一起播放。如果禁用Looping并设置Stop Action为Destroy,可以将其用作可实例化效果,它会在Duration时间(以秒为单位)结束后自毁。
 



本文到此结束,结合所有粒子系统后,精美Logo消融效果就制作完成了,最后的效果如下图所示。

小结
使用粒子实现Logo消融效果,你学会了吗?是不是制作特效非常简单。更多Unity教程尽在Unity官方中文论坛(UnityChina.cn) !

这篇关于[转载]使用粒子实现Logo消融效果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/426161

相关文章

分布式锁在Spring Boot应用中的实现过程

《分布式锁在SpringBoot应用中的实现过程》文章介绍在SpringBoot中通过自定义Lock注解、LockAspect切面和RedisLockUtils工具类实现分布式锁,确保多实例并发操作... 目录Lock注解LockASPect切面RedisLockUtils工具类总结在现代微服务架构中,分布

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统