Unreal Engine 4 —— 使用ProceduralMeshComponent实现模型实时切割

本文介绍了如何利用Unreal Engine 4.13中的ProceduralMeshComponent实现模型的实时切割。通过创建切割平面,结合SliceProceduralMesh函数,将模型切割成两部分并生成新的模型块。文章详细解析了切割原理,并给出了注意事项,包括模型面数限制和拓扑结构要求,以保证良好的切割效果和游戏性能。
摘要由CSDN通过智能技术生成

这篇博客介绍了如何使用UE4.13的ProceduralMeshComponent来实现针对一个模型的实时切割。


背景说明

在游戏潜龙谍影崛起:复仇 中,主角可以针对场景中的大部分物体进行实时切割。在游戏中,玩家需要指定一个切割平面,在主角挥刀后,对应的物体便可以根据这个平面进行切割。

在UE4中可以使用Apex Destruction来实现物体的破碎效果,但由于该破碎效果是离线生成的,换句话说一个DM只能够有一种破碎效果,因此无法达成实时切割的效果。

在UE4.13中,Epic加入了ProceduralMeshComopnent插件,使用这个插件可以进行针对于模型的实时切割操作。

前置准备工作

首先准备好需要进行切割的模型,我这里使用的是UE4示例中的人头模型。值得一提的是,由于要达成实时切割的目的,因此需要启用StaticMesh中的AllowCPUAccess属性。

AllowCPUAccess

新建ActorBP,添加Procedural Mesh Component,调用CopyProceduralMeshfromStaticMeshComopnent方法来生成一个Procedural Mesh Component.

CreateMesh

模型切割

ProceduralMeshComponentSlice Procedural Mesh函数,这个函数可以将Procedural Mesh进行切割,并且生成另外的一半模型块。

Slicing Mesh

参数介绍:

  • Plane Position: 世界坐标系下该平面的中心位置
  • Plane Normal: 世界坐标系下该平面的发现
  • Create Other Half: 是否将切下来的那一块模型独立出来
  • Cap Option: 切面状态
    • No Cap: 切面不缝合,模型中空
    • Create New Section for Cap: 切面缝合,使用自定义的材质
    • Use Last Section for Cap: 切面缝合,使用与模型一样的材质
  • Cap Material: 如果Cap OptionCreate New Section for Cap时自定义的材质

效果如下:
Slicing

原理分析

UKismetProceduralMeshLibrary::SliceProceduralMesh()函数中,可以看到它实现的方法如下:

SliceProceduralMesh(plane)
1. create two maps of base vert index to vert index m1,m2
2. for each vertice{ v}
3.     if ( vertice on the positive side of the plane)
4.          m1vertic

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值