我试图找到一些关于如何通过代码使用Unreal 4 ProceduralMeshComponents实现功能的示例或文档。网站上这些类的文档非常稀少,只提供了它们如何工作的最基本细节:
https://docs.unrealengine.com/latest/INT/BlueprintAPI/Components/ProceduralMesh/index.html
我知道,我知道,它们已经暴露在蓝图编辑器中,所以我知道我可以在引擎中使用它们。然而,我想了解这个过程的确切来龙去脉,这意味着我需要通过代码在项目中实现这一点。
此外,我觉得仅通过蓝图节点使用这些组件会限制使用此强大功能所能完成的工作。
我也在网上或论坛上搜索过任何例子,但找不到任何不涉及以某种方式使用蓝图的例子。另一个问题是,这个功能是最近才引入的,而且在Rama(一个出色的虚幻用户)推出类似的API之前,它允许生成过程网格。然而,它现在已被弃用,并且有许多示例引用了该版本。
别误会我的意思,我不是在诋毁蓝图。我喜欢这个工具,认为它们是虚幻4中最好的部分之一。但出于我的目的,我要求这个过程从头到尾都要完全暴露在我面前。
如果您能分享任何资源或示例,完全通过代码实现虚幻过程网格类,我将不胜感激。
这是一个很大的问题,因为程序网格组件可以以多种方式使用。它们只是表示任意运行时生成的网格。
如果您了解三维应用程序中网格的数据表示,文档中列出的大多数函数都是不言自明的。
一个网格可以有多个LOD。每个单独的网格LOD都由部分组成。每个剖面都可以有一个视觉表示和一个碰撞表示。对于";视觉";表示,有点位置列表、由三个点索引表示的三角形列表、连接两点的边列表、每个三角形的法线列表、每个点的UV空间位置列表等;"碰撞";对于网格的表示,当然有单独的列表,在大多数情况下,这些列表的大小较小,可以进行更优化的计算。
根据您的用例,您可以用所需的数据填充这些列表。这些数据可以以任何方式生成,当然,这取决于您。无论你做什么,你只需要有一些需要的东西的数组,无论是点、边等等。
找不到任何不涉及以某种方式使用蓝图的
UE的美妙之处在于,任何"蓝图"示例都可以作为C++示例。由于BP节点基于标记为UFUNCTION(BlueprintCallable)
的C++函数,因此可以在代码上轻松地一对一地重新创建BP图。对于函数的C++版本,您可以通过双击节点来查看C++源代码。
附言:我知道我不给你提供代码示例,而是长篇大论的解释,这可能不是最好的,但对于如此广泛的问题,真的没有一个适合所有人的代码片段。
此外,过程网格生成本身就是一个庞大的世界,每个场景都需要数千行专门的代码。如果你将程序地形与程序动物与程序椅子进行比较,你可以想象代码既非常复杂,又非常具体,对其他用例几乎没有用处。