UE5 像素流送 与前端API 实践(三)—Geometry
原计划第三篇想写时间以及天气的API,但是功能用的是超动态天气的插件,没什么技术含量,也就没什么必要去写了。最近实现了Geometry面的创建,所以来写一下这块的内容。
做这个功能的需求来源与智慧楼宇应用的时候,想要看某一层的区域分布的时候,需要通过不同色块去区分。另一个原因是本身是做三维GIS,对于几何形状的创建是基础能力。目前这个版本只做到了几何面的创建,而且没有做到边线的创建。
一、效果,主要是包含普通多边形、凸多边形、凹多边形
二、思路
1)主要使用了UE中的 Procedural Mesh Component(程序化模型),调用该组件的CreateMeshSection 方法就可以生成模型
2)CreateMeshSection 参数
这里有两个重要参数Vertices向量数组 和Triangles整数数组,一个是这个多边形的所有节点数据组(记得是逆时针排序),一个是节点按照逆时针排序的索引数组,每3个点构成一个三角形,多个三角形构成了一个多边形
我的做法是先拿4个点的简单多边形,自己把这两个参数手动构件好,这样对组件的用法就会有一个直观的认识,举个例子
3)当看到直观的效果后,那就可以对传入的顶点构成的多边形数据进行三角化(网上有很多的算法,我用的是耳切法),最终目的就是为了把三角形顶点的顺序给整理出来,并且这些构成的三角形不能有重叠。
我的做法是从简单的多边形入手,4个点,5个点,凸多边形、凹多边形等去验证自己的算法,就跟效果图展示的那样。下面给一个参考的文章,我觉得比我绞尽脑汁想的更加通熟易懂
https://www.cnblogs.com/wanghui2011/articles/10791889.html
4)最后对于面的样式,动态赋予材质,材质中颜色参数提取出来,就可以根据传入的颜色参数进行颜色赋值了
三、最终效果:B站:https://www.bilibili.com/video/BV1NG4y1E7pB/?spm_id_from=333.999.0.0&vd_source=bb08d36dee0151b9eb6552d76f340a35