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

这篇博客讲述了我为UE4构建Ghost Mesh Plugin的开发过程。
Ghost Mesh Plugin已经在Github上开源,传送门
我已经制作了一个视频用于讲解该插件的使用方法,传送门

开发背景及成果

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

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

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

  • 一种方法是在后期处理中加入前一段时间的RenderTarget,主要通过Shader来实现。这种方法的优点在于可以生成很密集的残影而不用太担心效能,缺点则在于生成的残影不够真实(残影无法与场景中的光进行交互)。
  • 另一种方法则是简单粗暴的直接在场景中生成一个与当前的Skeletal Mesh同样姿势的模型。这种方法的优点在于简单粗暴并且真实,缺点则在于对效能有要求,无法大量生成。

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

GhostMeshActor

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

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

GhostMesh BP

OnSpawned事件

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

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

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

下图是GhostMesh淡出的逻辑:

GhostMesh4

后续开发展望

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

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

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

<全文完>

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值