您的位置:首页 > 其它

Unreal Engine 4 —— Ghost Mesh Plugin的开发日志

2016-06-18 19:46 821 查看
这篇博客讲述了我为UE4构建Ghost Mesh Plugin的开发过程。

Ghost Mesh Plugin已经在Github上开源,传送门

我已经制作了一个视频用于讲解该插件的使用方法,传送门

开发背景及成果

在许多动作(ACT)游戏或者角色扮演(RPG)游戏中,为了视觉效果,有时会让角色生成残影(Ghost Mesh),例如:



(以上截图来源自真三国无双7·猛将传)

残影效果有若干种方法可以实现:

一种方法是在后期处理中加入前一段时间的
RenderTarget
,主要通过Shader来实现。这种方法的优点在于可以生成很密集的残影而不用太担心效能,缺点则在于生成的残影不够真实(残影无法与场景中的光进行交互)。

另一种方法则是简单粗暴的直接在场景中生成一个与当前的Skeletal Mesh同样姿势的模型。这种方法的优点在于简单粗暴并且真实,缺点则在于对效能有要求,无法大量生成。

Ghost Mesh Plugin使用的是上述第二种方法,在使用插件时,开发者需要提供一个当前的
Skeletal Mesh Component
作为参数传入,然后就会在场景中生成一个同样姿势的Ghost Mesh,效果如下:



GhostMeshActor

在构建插件的最初始阶段,原本是为了便宜从事,因此一开始打算的实现方法是在Actor里添加
PoseableMeshComponent
来实现残影。但是由于UE4中的
UComponent
里面无法添加
TimeLine
以及
LifeSpan
等属性,因此最后还是选择生成一个Actor。

在生成GhostMeshAcor后,需要调用其
MakePoseBySkeletalMesh()
函数(在Blueprint中的FriendlyName为”
Pose Mesh Actor
“),传入一个
SkeletalMeshComponent
作为参数。在执行这个函数后,生成的
GhostMeshActor
就会拥有和该
SkeletalMeshComponent
一样的Pose。



OnSpawned
事件

在开发中遇到的另一个问题是残影的材质。残影通常要有自己的材质,并且经常伴随着淡入淡出的表现。

因此考虑到这种的开发情况,以及需要适配所有的
Skeletal Mesh
GhostMeshActor
里面设定了一个
OnSpawn()
函数,类型是
BlueprintImplementableEvent
,可以在BP中进行重写。

在项目中,可以构建一个继承自GhostMeshActor的BP,选择重写OnSpawn函数,便可以进行Ghost Mesh Actor出生后的逻辑。

下图是GhostMesh淡出的逻辑:



后续开发展望

当前的插件已经可以实现针对于残影的大部分功能,但是有不足的地方就在于性能。日后估计有可能添加一个生成一个StaticMesh的功能。

但是如果生成StaticMesh,那么无法照顾到残影的布料细节,所以还在纠结。

各位有兴趣,可以直接下载该Plugin使用。

<全文完>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: