缆绳组件

介绍缆绳组件。

Windows
MacOS
Linux

CC_InGame.png

假如能以较低的开销添加来回晃荡的缆绳或锁链,仿佛被风吹动一般,那么虚幻引擎4(UE4)的项目会更加栩栩如生。本文将介绍如何使用 缆绳组件(Cable Component) 插件创建和控制缆绳的外观、响应方式,甚至是让它和关卡中的物体发生碰撞。

模拟和渲染

在模拟线缆的实际效果时,我们用到了游戏开发中的一项经典技巧——韦尔莱积分算法(Verlet Integration)。这种算法的理念是用一系列粒子来表示缆绳,且粒子之间拥有 距离约束。两端的粒子 固定不动,只跟随它的绑定对象移动。中间的粒子则 自由移动,随重力下垂。在每一步(积分)中,每个粒子的速度和位置都会更新,并相应移动以满足约束。缆绳的 刚性 由我们(每步)强制执行约束时采用的迭代次数决定。

点击查看大图。

生成完粒子锁链后,我们需要对它进行渲染。渲染缆绳时,将创建一个名为 FCableSceneProxy 的类来表示缆绳的渲染效果。粒子的两端的位置(在主线程上的 TickComponent 中执行)会通过 SendRenderDynamicData_Concurrent 函数传递给此代理。接下来,更新(update)会在渲染线程锁定,之后将更新索引和顶点缓存,进而生成一个 管状 网格体。管状网格体上的每个顶点都要计算一个位置、一个纹理UV 和三个切线基础(Tangent Basis)向量。执行此操作时,X轴 的方向同缆绳,Z轴 垂直缆绳表面(相当于法线),而 Y轴 则与 X轴Z轴 垂直。这些属性对组件公开,以便用户控制面的数量,管状的半径、以及 UV 沿缆绳进行平铺的次数。

点击查看大图。

启用插件

缆绳组件插件会默认启用。如未启用,可在主工具栏中选择 编辑(Edit) > 插件(Plugins)。然后在插件列表中选择 Rendering,勾选 Cable ComponentEnabled 勾选框。

点击查看大图。

使用缆绳组件

可以两种不同方式将缆绳组件添加到项目关卡。在以下部分,我们将说明为项目关卡添加缆绳的两种不同方法。

用放置Actor面板添加缆绳组件

如需使用放置Actor面板添加缆绳组件,请执行以下操作:

  1. 首先确保 放置Actor(Place Actors) 面板为显示状态,然后在 Search Classes 框中输入 Cable

    CC_Find_In_Modes.png

  2. 如要将缆绳 Actor 添加到世界场景,请选中"放置Actor"面板中的缆绳 Actor 并将其拖入关卡。

    点击查看大图。

  3. 现在便可放置、旋转和缩放缆绳 Actor,使其满足关卡的需求。

在蓝图中使用缆绳组件

如需在蓝图中使用缆绳组件,请执行以下操作:

  1. 首先新建一个名为 BP_Cable 的蓝图,它的父类是 Actor

    CC_MakeNewBP.png

  2. 然后在 BP_Cable 蓝图的 Components 分段中点击 Add Component 按钮,然后在列表中找到 Cable 组件。找到组件后,点击将其添加至组件列表。

    CC_Add_CC.png

  3. 添加缆绳组件后,在组件列表中选择 Cable 组件以便在 细节 面板调整其属性。将其他设置保留为默认,然后编译并保存蓝图。

    CC_Cable_Options.png

    取消勾选缆绳组件细节面板中的 Attach StartAttach End 选项,即可使缆绳的任意一头下坠。此操作可在游戏运行时开展。

  4. Content Browser 中找到缆绳蓝图,然后将其拖入关卡。放置后,即可使用移动和旋转工具根据需求调整位置。

    点击查看大图。

在缆绳末端附加物体

你可以在缆绳的任意一端附加物体,使其沿缆绳晃动。需要执行以下步骤在 UE4 中实现此功能:

  1. 首先需要添加一个 缆绳 Actor 和一个 静态网格体 到关卡中。

    点击查看大图。

    必须将附加到末端的静态网格体的 Mobility 设为 可移动(Moveable)

  2. 在世界大纲视图中,找到需要附加到缆绳 Actor 末端的静态网格体,然后将其拖至缆绳 Actor 的上方。执行此操作后将显示以下输入窗口。

    点击查看大图。

  3. 选择 Cable End 选项,即可在视口中看到静态网格体附着到缆绳 Actor 的末端。

    Before

    After

  4. 在关卡中选中缆绳 Actor。然后在 Details 面板的 Cable 部分中,取消勾选 Attach End 框。

    点击查看大图。

    注意:Attach StartAttach End 选项并非将缆绳附加到 Actor 的唯一方法。也可指定一个用作附着点的套接字。

  5. 执行此操作后,缆绳便能在视口中自由回荡。

    注意:可在运行时开启/关闭 Attach StartAttach End 两个布尔值,制造出一些有趣的效果。

碰撞和刚性

启用碰撞(Collision)和刚性(Stiffness)将极大增加缆绳 Actor 的开销。建议只在以下情况下启用:缆绳需要和场景中的物体碰撞,或需要为缆绳赋予刚性以获得更佳效果。如无此类需求,则最好将这些选项禁用,以降低开销。

缆绳组件有一个选项可让缆绳和场景对象发生碰撞,并控制缆绳的刚度。为启用此功能,请按以下步骤操作。

  1. 首先,在缆绳组件细节面板的 Cable 分段中按下白色小三角形,展开高级选项。

    CC_Advanced_Options.png

  2. 勾选 Enable StiffnessEnable Collision 选项启用这些功能。

    点击查看大图。

  3. 现在,当缆绳 Actor 或物体相遇时,应该会发生碰撞效果。

属性详解

下表详细说明了缆绳组件上的每个属性:

Cable

CC_Cable_Properties.png

属性名称

描述

Attach Start

修复到物体的头端,或放任不管。如为 false,组件变形只用于缆绳头端的初始位置。

Attach End

修复到物体的末端(使用 AttachEndTo 和 EndLocation),或放任不管。如为 false,AttachEndTo 和 EndLocation 只用于缆绳末端的初始位置。

Attach End To

定义缆绳最终位置的 Actor 或组件。

Component Property

附加缆绳的组件属性的命名。

Attach End To Socket Name

进行附加的 AttachEndTo 组件上的套接字命名。

End Location

缆绳的最终位置,如经指定则相对于 AttachEndTo(或 AttachEndToSocketName),否则则相对于缆绳组件。

Cable Length

缆绳的静止长度。

Num Segments

缆绳拥有的分段数量。

Solver Iterations

解算器迭代的数量,控制缆绳的刚度。

Substep Time

控制缆绳的模拟分步时间。

Enable Stiffness

为缆绳添加刚性约束。

Enable Collision

在每个分步为每个缆绳粒子执行清扫,避免与世界场景发生碰撞。使用组件上的 Collision Preset 决定碰撞的对象。这会极大提高缆绳模拟的开销。

这在当前版本中仍为实验性功能。

Cable Forces

CC_CableForces_Properties.png

属性名称

描述

Cable Forces

应用到缆绳中所有粒子的力向量(世界空间)。

Cable Gravity Scale

应用到此缆绳的世界重力比例。

Cable Rendering

CC_CableRendering_Options.png

属性名称

描述

Cable Width

缆绳几何体的宽度。

Num Sides

缆绳几何体的面数。

Tile Material

沿缆绳长重复材质的次数。

其他参考资料

以下为外部参考资料,你可借此获得缆绳组件的更多见解。阅读 Thomas Jakobsen 的文章,了解 韦尔莱积分算法 的更多详情。

欢迎帮助改进虚幻引擎文档!请告诉我们该如何更好地为您服务。
填写问卷调查
取消