【问题标题】:How to use Unreal 4 ProceduralMeshComponent classes in code?如何在代码中使用 Unreal 4 ProceduralMeshComponent 类?
【发布时间】:2016-04-15 02:50:46
【问题描述】:

我试图找到一些示例或文档,以了解如何通过代码使用 Unreal 4 ProceduralMeshComponents 实现功能。网站上这些类的文档非常少,只提供了它们如何运作的最简单的细节:

https://docs.unrealengine.com/latest/INT/BlueprintAPI/Components/ProceduralMesh/index.html

我知道,我知道,它们已经暴露给蓝图编辑器,所以我知道我可以在引擎本身中使用它们。但是,我想了解该过程的确切来龙去脉,这意味着我需要通过代码在项目中实现这一点。

我还觉得,仅通过蓝图节点使用这些组件会限制使用此强大功能的范围。

我还搜索了任何示例(无论是在网上还是在论坛上),但找不到任何不涉及以某种方式使用蓝图的示例。另一个问题是这个功能是最近才引入的,在此之前 Rama(一个出色的 Unreal 用户)提出了一个类似的 API,允许程序网格生成。但是它现在已被弃用,并且有许多示例引用该版本。

不要误会我的意思,我不是在这里贬低蓝图。我喜欢这个工具,并认为它们是虚幻 4 中最好的部分之一。但出于我的目的,我需要从头到尾完全公开这个过程。

如果您可以分享任何通过代码实现虚幻程序网格类以达到某种效果的资源或示例,我将不胜感激。

【问题讨论】:

标签: c++ unreal-engine4 procedural-generation


【解决方案1】:

这是一个相当大的问题,因为程序网格组件可以以多种方式使用。它们只是表示任意运行时生成的网格。

如果您了解 3D 应用程序中网格的数据表示,则文档中列出的大多数功能都非常容易理解。

一个网格可以有多个 LOD。每个单独的网格 LOD 都由部分组成。每个部分都可以有一个视觉表示和一个碰撞表示。对于“视觉”表示,有点位置列表、由三个点索引表示的三角形列表、连接两个点的边列表、每个三角形的法线列表、每个点的 UV 空间位置列表等. 对于网格的“碰撞”表示,当然有单独的列表,在大多数情况下,大小更小,以便更优化计算。

根据您的用例,您可以在这些列表中填写您需要的数据。当然,这些数据可以通过任何方式生成,这取决于您。不管你做什么,你只需要有一些需要的东西的数组,比如点、边等等。

找不到任何不涉及以某种方式使用蓝图的内容

UE 的美妙之处在于,任何“蓝图”示例都可以充当 C++ 示例。您可以轻松地一对一地在代码上重新创建 BP 图,因为 BP 节点基于标记为 UFUNCTION(BlueprintCallable) 的 C++ 函数。对于C++版本的函数,可以双击节点查看C++源码。

附言我知道我不提供代码示例可能不是最好的,而是冗长的解释,但是对于这么广泛的问题,真的没有一刀切的代码 sn-p。

此外,程序网格生成本身就是一个庞大的世界,每个单独的场景都需要数千行专门的代码。如果您制作程序地形与程序动物与程序椅子,您可以想象代码既非常复杂又非常具体,对于其他用例几乎没有用处。

【讨论】:

  • 要添加提示,您还应该查看运行时网格组件。它是一个免费的开源组件,功能与 PMC 非常相似,但更优化。它有一个活跃的不和谐和良好的文档。
猜你喜欢
  • 2014-11-29
  • 2015-02-12
  • 2020-08-09
  • 1970-01-01
  • 2014-06-26
  • 2015-05-14
  • 1970-01-01
  • 2018-03-20
  • 2020-05-31
相关资源
最近更新 更多