使用名称后缀自定义节点类型
很多时候,编辑场景时,导出后需要完成一些常见任务:
向对象添加碰撞检测。
将对象设置为导航网格。
删除游戏引擎中未使用的节点(例如用于建模的特定光源)。
为简化此工作流程,Godot 提供了一些后缀,可以将其添加到 3D 建模软件中的对象名称中。导入后,Godot 将检测到对象名称中的后缀并自动执行操作。
警告
All the suffixes described below can be used with -
, $
, and _
and are case-insensitive.
删除节点(-noimp)
无论是什么类型的节点,具有 -noimp
后缀的对象都会在导入时被移除,不会出现在导入后的场景中。
这相当于在高级导入设置对话框中为节点启用 跳过导入 功能。
创建碰撞体(-col、-convcol、-colonly、-convcolonly)
-col
选项只作用于网格物体. 如果该选项被检测到, 将会添加一个静态碰撞体的子节点, 用的是跟网格一样的几何体. 这会创建一个三角形网格碰撞体, 这个选项对碰撞检测来说很慢但是精确. 这个选项通常是关卡几何体需要的(但是也看看下面的 -colonly
).
-convcol
选项将创建一个 ConvexPolygonShape3D 而不是 ConcavePolygonShape3D。不像可以是凹型的三角形网格,凸型的形状只能精确的表示它没有任何凹型角度(金字塔是凸型,但空心盒子是凹型)。因此,凸型碰撞体通常不适用于关卡几何体。当说到一个很简单的网格时,凸型碰撞体相对三角形碰撞体有更好的性能。这个选项适用于简单的物体,或是需要大多数时精确碰撞检测的动态物体。
然而,在这两个例子中,视觉几何体处理过于复杂或对于碰撞而言不够光滑。物理引擎会出现小故障从而不必要地降低了引擎的速度。
为了解决这个问题,存在 -colony
修饰符。该修饰符将在导入时删除网格,并创建一个 StaticBody3D 静态碰撞体。这有助于将可视网格和实际碰撞体分开。
-convcolonly
选项的工作方式类似,但会创建一个 ConvexPolygonShape3D,而不是使用凸分解。
对于 Collada 文件,选项 -colonly
也可以与 Blender 的空对象一起使用。导入时,它将创建一个 StaticBody3D,并将碰撞节点作为子节点。碰撞节点将具有许多预定义的形状之一,具体取决于 Blender 的空绘制类型:
![在 Blender 中为 Empty 选择创建时的绘制类型](/static/images/loading.gif)
在 Blender 中为 Empty 选择创建时的绘制类型
单箭头将创建 SeparationRayShape3D。
方块将创建 BoxShape3D。
图像将创建 WorldBoundaryShape3D。
球体(和其他未列出的类型)将创建 SphereShape3D。
可能的话,请试着使用少量图元碰撞形状,而不是三角形网格或凸型体。图元形状的性能和可靠性通常更好。
备注
为了在 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 文件中以标记 loop
或 cycle
开始或结束的动画剪辑,将作为设置了循环标志的 Godot Animation 导入。 这与上述其他后缀不同,不需要连字符。
在 Blender 中,这需要使用 NLA 编辑器,并用 loop
或 cycle
前缀或后缀命名该动作。