效果
步骤
1. 新建两个Actor类蓝图,分别命名为“BP_CutActor”、“BP_CutPlane”,分别表示被剖切的网格体和剖切的片面。
2. 打开“BP_CutActor”(被剖切的网格体),添加静态网格体组件、程序化网格体组件,并将静态网格体组件作为根节点
添加变量,这里命名为“SM”,类型为静态网格体的对象引用,勾选“可编辑实例”
添加变量,这里命名为“Material”,类型为材质接口的对象引用,勾选“可编辑实例”
添加变量,这里命名为“剖面材质”,类型为材质接口的对象引用,勾选“可编辑实例”
创建一个函数,这里命名为“F_CreateApperance”,用于创建该Actor蓝图的外观。在函数“F_CreateApperance”中,设置静态网格体组件的StaticMesh为变量“SM”,然后设置静态网格体的材质。
这里在构造函数中调用“F_CreateApperance”
3. 打开“BP_CutPlane”,添加一个平面组件
调整平面组件的旋转为(0,-90,360)
添加变量,这里命名为“MeshAndMaterial”,类型为“程序化网格体组件”到“材质接口”的映射
添加变量,这里命名为“BP_CutActor”,类型为“BP_CutActor”的对象引用,勾选可编辑实例
在函数“BP_剖切”中添加如下节点以实现剖切功能
在构造函数中调用“F_剖切”
4. 创建剖切平面的材质,这里命名为“M_Plane”
打开“M_Plane”,设置混合模式为“Additive”,勾选双面
在材质图表中添加如下节点
预览如下
6. 在场景中准备两个被剖切的物体“BP_CutActor”,然后设置变量“SM”的值,由于在构造函数中调用了“F_CreateApperance”,因此设置变量“SM”的值后,就出现了外观。
然后可以设置一下物体的材质和剖面材质,这里随便找了两个材质
场景中拖入“BP_CutPlane”,设置变量“BP_CutActor”的值来设置可被剖切的Actor有哪些。
剖切效果如下:
如果希望runtime时能够实现剖切功能,需要在Tick情况下一直调用“F_剖切”函数。
参考视频:
https://www.bilibili.com/video/BV1CttVeuEaL/?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click&vd_source=36a3e35639c44bb339f59760641390a8