【水果大爆炸】VFX 技术方案

解决技术问题

这是我第一次尝试使用流体模拟构建特效。一开始,我并不知道该如何做,所以我在YouTube上搜索了很多关于如何在Blender中创建流体的教程。在Blender中成功输出了一个流体模拟的Alembic模型。

虽然Blender是整个过程的关键部分,但我不知道如何将输出模型导入Unity。经过一番搜索,我只找到了一个视频教程讲解如何将Alembic模型导入到虚幻引擎中。通过学习那个视频,我意识到将Alembic模型导入Unity可能是类似的。

随后,我决定先解决所有技术问题,然后再设计适合我们游戏的特效,以防设计完之后却发现无法使用。

首先,我学习了视频教程并在Blender中创建了以下内容:

在从Blender导出Alembic模型之后,我将其导入Unity。我首先必须安装Alembic包,这个包使得Unity能够支持这种特殊类型的文件。为了在Unity中播放动画,我使用了Timeline功能。这使我能够控制Alembic模型动画的时序和持续时间。

在ChatGpt的帮助下,我编写了一个脚本。当按下“P”键时,该脚本会在随机位置和随机角度实例化流体动画的prefab,以此模拟角色被射击的情况。然后,当Alembic动画结束时,prefab会被销毁。

通过Alembic文件无法将Blender中设置的粒子导入Unity,其原因会在下文解释。

Blue dots are the particles in blender


使用时间轴(Timeline)来实现Alembic模型的动画效果

从Blender里面导出Alembic文件

在Unity Package Manager安装 ‘Alembic’ 包


创建一个Timeline,并将该Timeline拖放到Alembic GameObject上

在时间轴(Timeline)窗口中创建一个“Alembic Track”并将该时间段粘贴到时间轴中


当使用Alembic文件时遇到材质丢失的问题


改进的解决方案:使用Animator组件播放动画

在我之前使用的时间轴(Timeline)方法播放动画时,遇到了一些bug,导致无法正确播放。但我也没有找出bug的出现原因,在查阅Unity文档后,我决定改用Animator组件。

使用Animator组件非常简单,因为我在之前制作游戏时已经学习过了。在Alembic模型预制件中,有一个时间变量,用于控制动画的当前时间。当改变这个变量时,模型的动画将会播放。

先是创建一个新的Animation Clip,将时间变量设置为其属性之一。在动画的第0帧,我将时间变量设置为0,在动画的最后,将其设置为动画的持续时间。通过这样的设置,使用Animator组件可以顺利播放动画。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Scroll to Top