Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

使用名称后缀自定义节点类型

很多时候,编辑场景时,导出后需要完成一些常见任务:

  • 向对象添加碰撞检测。

  • 将对象设置为导航网格。

  • 删除游戏引擎中未使用的节点(例如用于建模的特定光源)。

为简化此工作流程,Godot 提供了一些后缀,可以将其添加到 3D 建模软件中的对象名称中。导入后,Godot 将检测到对象名称中的后缀并自动执行操作。

警告

下面描述的所有后缀都是大小写敏感的。

删除节点(-noimp)

无论是什么类型的节点,具有 -noimp 后缀的对象都会在导入时被移除,不会出现在导入后的场景中。

这相当于在高级导入设置对话框中为节点启用 跳过导入 功能。

创建碰撞体(-col、-convcol、-colonly、-convcolonly)

-col 选项只作用于网格物体. 如果该选项被检测到, 将会添加一个静态碰撞体的子节点, 用的是跟网格一样的几何体. 这会创建一个三角形网格碰撞体, 这个选项对碰撞检测来说很慢但是精确. 这个选项通常是关卡几何体需要的(但是也看看下面的 -colonly ).

-convcol 选项将创建一个 ConvexPolygonShape3D 而不是 ConcavePolygonShape3D。不像可以是凹型的三角形网格,凸型的形状只能精确的表示它没有任何凹型角度(金字塔是凸型,但空心盒子是凹型)。因此,凸型碰撞体通常不适用于关卡几何体。当说到一个很简单的网格时,凸型碰撞体相对三角形碰撞体有更好的性能。这个选项适用于简单的物体,或是需要大多数时精确碰撞检测的动态物体。

然而,在这两个例子中,视觉几何体处理过于复杂或对于碰撞而言不够光滑。物理引擎会出现小故障从而不必要地降低了引擎的速度。

为了解决这个问题,存在 -colony 修饰符。该修饰符将在导入时删除网格,并创建一个 StaticBody3D 静态碰撞体。这有助于将可视网格和实际碰撞体分开。

-convcolonly 选项的工作方式类似,但会创建一个 ConvexPolygonShape3D,而不是使用凸分解。

对于 Collada 文件,选项 -colonly 也可以与 Blender 的空对象一起使用。导入时,它将创建一个 StaticBody3D,并将碰撞节点作为子节点。碰撞节点将具有许多预定义的形状之一,具体取决于 Blender 的空绘制类型:

在 Blender 中为 Empty 选择创建时的绘制类型

在 Blender 中为 Empty 选择创建时的绘制类型

可能的话,请试着使用少量图元碰撞形状,而不是三角形网格或凸型体。图元形状的性能和可靠性通常更好。

备注

为了在 Blender 编辑器上获得更好的可见性,可以在碰撞空物体上设置“透视”选项,并通过更改 编辑 > 偏好设置 > 主题 > 3D 视图 > 空物体 选项为其设置不同的颜色。

如果使用的是 Blender 2.79 或更早版本,请按照以下步骤操作: 用户偏好设置 > 主题 > 3D视图 > 空

参见

碰撞体全面概述请查看 碰撞形状(3D).

Create Occluder (-occ, -occonly)

If a mesh is imported with the -occ suffix an Occluder3D node will be created based on the geometry of the mesh, it does not replace the mesh. A mesh node with the -occonly suffix will be converted to an Occluder3D on import.

创建导航(-navmesh)

具有 -navmesh 后缀的网格节点, 将被转换为导航网格. 原始网格节点将在导入时被删除.

创建 VehicleBody(-vehicle)

具有 -vehicle 后缀的网格节点, 将作为一个 VehicleBody3D 节点的子节点被导入。

创建 VehicleWheel(-wheel)

具有 -wheel 后缀的网格节点,将作为一个 VehicleWheel3D 节点的子节点被导入。

刚体(-rigid)

具有 -rigid 后缀的网格节点,将作为一个 RigidBody3D 节点的子节点被导入。

动画循环(-loop、-cycle)

源 3D 文件中以标记 loopcycle 开始或结束的动画剪辑,将作为设置了循环标志的 Godot Animation 导入。 这与上述其他后缀不同,不需要连字符。

在 Blender 中,这需要使用 NLA 编辑器,并用 loopcycle 前缀或后缀命名该动作。