UE4 Procedural Mesh 实现顶角线地脚线效果
需求
- 1.一键生成围绕墙一圈的顶角线和地脚线
- 2.选中一段(或全选)更换材质,删除。
- 3.任意调整侧面的形状,高度,宽度。
截面效果图
- 顶角线展示:
- 地脚线展示:
- 单个顶角线不同位置展示:
原理
根据CSG建模算法生成模型顶点信息的构建,CSG算法可参照:GitHub: https://github.com/dabroz/csgjs-cpp/ 根据业务需求,将传进来的参数,来调整顶点的位置信息。
举个例子: 在一个基础的方形上,截面添加了两层顶点,从而模型多生成了8个面。
下图是上图自己推到出来的顶点结构。利用自己定义的算法通过调整顶点位置来生成自定义形状。
raw_face_struct raw_faces[] =
{
{ { 0, 9, 11, 2 } },
{ { 9, 8, 10, 11 } },
{ { 8, 1, 3, 10 } },
{ { 1, 3, 7, 5 } },
{ { 14, 7, 5, 12 } },
{ { 15, 14, 12, 13 } },
{ { 6, 15, 13, 4 } },
{ { 4, 6, 2, 0 } },
{ { 0, 4, 13, 9 } },
{ { 9, 13, 12, 8 } },
{ { 8, 12, 5, 1 } },
{ { 3, 7, 14, 10 } },
{ { 10, 14, 15, 11 } },
{ { 11, 15, 6, 2 } }
};
优化
场景中出现50堵墙,那个生成的顶角线和地脚线的数量将是至少200个(相交的端点出已删除优化),帧数严重下降。必经ProceduralMesh 是UE4的测试的功能,性能远低于StaticMesh。在万能的github上找到了一个大佬的一段代码 RuntimeMeshComponent,同样具备ProceduralMesh的加减乘除功能。链接:https://github.com/Koderz/RuntimeMeshComponent ,替换了ProceduralMeshComponent,帧数有了明显的提升可以再极限情况下的20帧提升到了30帧…UE4这块国外大佬还是牛逼啊!认真研究大佬代码。
最后来一张效果图
图片来源于Vidahouse侵权删。 版权声明:本文为博主原创文章,未经博主允许不得转载。