UE4 使用CustomMesh动态创建网格体

CustomMesh组件 

        记录最近使用过的一个虚幻4的功能点,动态绘制网格体。

        需求比较简单,规则的图形用几何参数描述来动态绘制网格体。核心组件是Custom Mesh。

        CustomMesh关联的函数很少,都是围绕三角形的。先列一下函数。

UE4 使用CustomMesh动态创建网格体_第1张图片

CustomMesh函数
添加自定义网格体三角形 Add Custom Mesh Triangles
设置自定义网格体三角形 Set Custom Mesh Triangles
清除自定义网格体三角形 Clear Custom Mesh Triangles

        添加自定义网格体三角形和设置自定义网格体三角形非常相似,设置自定义网格体三角形可以理解为清除之后添加,官方建议使用设置自定义网格体三角形。函数形式完全一直,都是需要一个CustomMeshTriangle的数组,目标为CustomMesh组件。调用之后模型就会在场景中绘制。

        CustomMeshTriangle的创建需要一个CreateCustomMeshTriangle函数。向量顺序影响三角形法线朝向,虚幻为右手定则。这里我投了一下懒,使用了双面材质,忽略了法线影响。

UE4 使用CustomMesh动态创建网格体_第2张图片

 我的使用

        我在GameInstance 中放置一个三维向量的数组来存储参数,UI操作调整几何参数。点到三角形为硬编码,固定的三角形组合方式。(没想到太好的算法)

UE4 使用CustomMesh动态创建网格体_第3张图片

        因为是硬编码所以封装了一个通过索引从集合取点创建 CustomMeshTriangle的宏。

         而后硬编码创建CustomMeshTriangle集合。

UE4 使用CustomMesh动态创建网格体_第4张图片

         创建集合之后通过事件触发更新,进行绘制。

总结

        CustomMesh的使用本身比较简单,但是目前硬编码的方式不太友好,写起来也是非常枯燥。

        我尝试写了一个算法,但是暂时没有办法规避面重合的问题,所以计算量非常大,再加上我用得SpinBox调整得参数导致引擎已经报无限循环的错误了。

        如果有好办法可以留言算法的思路。

你可能感兴趣的:(Unreal,mesh,ue4,云原生)