UE4 使用CustomMesh动态创建网格体
CustomMesh组件记录最近使用过的一个虚幻4的功能点,动态绘制网格体。需求比较简单,规则的图形用几何参数描述来动态绘制网格体。核心组件是Custom Mesh。CustomMesh关联的函数很少,都是围绕三角形的。先列一下函数。CustomMesh函数添加自定义网格体三角形Add Custom Mesh Triangles设置自定义网格体三角形Set Custom Mesh Triangle
CustomMesh组件
记录最近使用过的一个虚幻4的功能点,动态绘制网格体。
需求比较简单,规则的图形用几何参数描述来动态绘制网格体。核心组件是Custom Mesh。
CustomMesh关联的函数很少,都是围绕三角形的。先列一下函数。
添加自定义网格体三角形 | Add Custom Mesh Triangles |
设置自定义网格体三角形 | Set Custom Mesh Triangles |
清除自定义网格体三角形 | Clear Custom Mesh Triangles |
添加自定义网格体三角形和设置自定义网格体三角形非常相似,设置自定义网格体三角形可以理解为清除之后添加,官方建议使用设置自定义网格体三角形。函数形式完全一直,都是需要一个CustomMeshTriangle的数组,目标为CustomMesh组件。调用之后模型就会在场景中绘制。
CustomMeshTriangle的创建需要一个CreateCustomMeshTriangle函数。向量顺序影响三角形法线朝向,虚幻为右手定则。这里我投了一下懒,使用了双面材质,忽略了法线影响。
我的使用
我在GameInstance 中放置一个三维向量的数组来存储参数,UI操作调整几何参数。点到三角形为硬编码,固定的三角形组合方式。(没想到太好的算法)
因为是硬编码所以封装了一个通过索引从集合取点创建 CustomMeshTriangle的宏。
而后硬编码创建CustomMeshTriangle集合。
创建集合之后通过事件触发更新,进行绘制。
总结
CustomMesh的使用本身比较简单,但是目前硬编码的方式不太友好,写起来也是非常枯燥。
我尝试写了一个算法,但是暂时没有办法规避面重合的问题,所以计算量非常大,再加上我用得SpinBox调整得参数导致引擎已经报无限循环的错误了。
如果有好办法可以留言算法的思路。
更多推荐
所有评论(0)