Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

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

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

  • 向对象添加碰撞检测。

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

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

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

警告

下面描述的所有后缀都可以与 -$_ 搭配使用,并且是大小写不敏感的。

禁用

如果你不希望 Godot 执行下述任何操作,可以将导入选项节点/使用节点类型后缀设为 false。此设置会禁用节点类型后缀功能(保持节点类型与原始文件一致),但 -noimp 后缀及 -vcol-loop 等非节点后缀仍会生效。

或者,你可以通过将导入选项 节点/使用名称后缀 设为 false 来完全禁用所有名称后缀功能。这将完全阻止通用场景导入代码处理名称后缀,但特定格式的导入代码(如 glTF 导入器检查 -loop 后缀)仍可能处理名称后缀。

禁用这些选项会使编辑器导入的文件更接近原始文件,也更接近在运行时导入文件。若需实现运行时可用的导入流程、获得更可预测的结果且仅保留明确定义的行为,建议将上述选项设为 false 并改用 GLTFDocumentExtension

移除节点和动画(-noimp)

带有 -noimp 后缀的节点和动画会在导入时移除,无视其类型,不再出现在导入后的场景中。

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

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

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

选项 -convcol 将创建一个 ConvexPolygonShape3D 而不是 ConcavePolygonShape3D。与可以凹陷的三角形网格不同,凸形只能准确表示没有任何凹角的形状(比如:金字塔是凸的,但空心盒子是凹的)。因此,凸碰撞形状通常不适合关卡几何体。当表示足够简单的网格时,凸碰撞形状可以比三角形碰撞形状产生更好的性能。该选项非常适合需要比较精确的碰撞检测的简单或动态对象。

然而,在这两种情况中,视觉几何体都有可能过于复杂或对于碰撞而言不够平滑。这会导致物理上的故障并不必要地降低引擎速度。

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

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

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

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

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

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

备注

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

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

参见

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

创建遮挡器(-occ、-occonly)

如果导入带有 -occ 后缀的网格,则会根据网格的几何形状创建一个 Occluder3D 节点,它不会替换网格。带有 -occonly 后缀的网格节点在导入时将转换为 Occluder3D

创建导航(-navmesh)

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

创建 VehicleBody(-vehicle)

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

创建 VehicleWheel(-wheel)

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

刚体(-rigid)

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

动画循环(-loop、-cycle)

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

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

材质透明度(-alpha)

带有 -alpha 后缀的材质将使用 TRANSPARENCY_ALPHA 透明模式导入。

材质顶点颜色(-vcol)

带有 -vcol 后缀的材质将启用 FLAG_ALBEDO_FROM_VERTEX_COLORFLAG_SRGB_VERTEX_COLOR 标志进行导入。