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.
Checking the stable version of the documentation...
ResourceImporterScene
继承: ResourceImporter < RefCounted < Object
导入 glTF、FBX、COLLADA 或 Blender 3D 场景。
描述
另请参见 ResourceImporterOBJ,它被用于可作为独立的 Mesh 或场景导入的 OBJ 模型。
高级导入设置 对话框中提供了其他选项(例如将单个网格或材质提取到文件)。可以通过双击文件系统停靠面板中的 3D 场景或通过选择文件系统停靠面板中的 3D 场景,转至导入停靠面板并选择高级来访问该对话框。
注意:ResourceImporterScene 未被用于 PackedScene,例如 .tscn 和 .scn 文件 。
教程
属性
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
属性说明
Dictionary _subresources = {} 🔗
包含场景子资源的属性。这是一个内部选项,在导入停靠面板中不可见。
用于通过线性插值将动画曲线烘焙为一系列点的每秒帧数。建议配置该值以匹配你在 3D 建模软件中用作基线的值。较高的值会导致更精确的快速运动变化的动画,但代价是文件大小和内存占用更大。由于插值,超过 30 FPS 通常不会有太大好处(因为动画在更高的渲染帧速率下仍然会显得平滑)。
bool animation/import = true 🔗
如果为 true,则从 3D 场景导入动画。
bool animation/import_rest_as_RESET = false 🔗
如果为 true,则添加一个名为 RESET 的 Animation,其中包含来自 Skeleton3D 节点的 Skeleton3D.get_bone_rest()。这对于提取参考姿势中的动画很有用。
bool animation/remove_immutable_tracks = true 🔗
如果为 true,则移除仅包含默认值的动画轨道。这可以减少某些 3D 场景的输出文件大小和内存占用,具体取决于其动画轨道的内容。
bool animation/trimming = false 🔗
如果为 true,如果没有关键帧更改,则修剪动画的开头和结尾。这可以减少某些 3D 场景的输出文件大小和内存占用,具体取决于其动画轨道的内容。
bool array_mesh/deduplicate_surfaces = true 🔗
如果 3D 模型文件仅包含一个网格(Mesh),则此选项无效。如果设为 true 且 3D 模型文件包含多个具有相同表面(Surface)名称和格式的网格,那么在合并网格时,表面将被合并在一起。这有助于减少生成网格中的表面数量,并避免材质重复。如果设为 false 且 3D 模型文件包含多个网格,表面将始终被保持分离。
String import_script/path = "" 🔗
导入脚本的路径,该脚本可以在导入过程完成后运行代码以进行自定义处理。有关详细信息,请参阅 使用导入脚本进行自动化。
材质提取模式。
0 (Keep Internal),不提取材质。1 (Extract Once),提取一次材质,后续导入时重用。2 (Extract and Overwrite),每次导入都提取并覆盖材质。
int materials/extract_format = 0 🔗
提取材质的文件格式。
0 (Text),文本文件格式(*.tres)。1 (Binary),二进制文件格式(*.res)。2 (Material),二进制文件格式(*.material)。
String materials/extract_path = "" 🔗
提取材质的保存路径。留空时使用源场景路径。
bool mesh_library/use_node_names_as_mesh_names = false 🔗
如果设为 true,网格(Mesh)的名称将被设置为 3D 模型文件中节点的名称。如果设为 false,网格的名称将被设置为 3D 模型文件中网格自身的名称。当 3D 模型文件的作者未在 Blender 或其他 3D 建模软件中正确设置网格名称时,启用此选项是一种常见的变通方法。例如,某个文件可能包含一个名为 "Turret" 的节点,其网格名称为 "Cube.002",启用此选项后,网格名称将被设置为 "Turret",而不是 "Cube_002"。
bool meshes/create_shadow_meshes = true 🔗
如果为 true,则在导入时启用阴影网格体的生成。这可以通过在可能的情况下将顶点焊接在一起来优化阴影渲染,且不会降低质量。这反过来又减少了渲染阴影所需的内存带宽。阴影网格生成当前不支持使用比源网格更低的细节级别(但阴影渲染将在相关时使用 LOD)。
bool meshes/ensure_tangents = true 🔗
如果设为 true,当输入的网格体(meshes)没有切线数据时,将使用 Mikktspace 算法来生成顶点切线。如果条件允许,更推荐让 3D 建模软件在导出模型时直接生成切线,而不是依赖这个选项。法线贴图(normal maps)和高度贴图(height maps),以及任何需要切线的材质或着色器(shader)功能,都必须要有切线数据才能正确显示。
如果你不需要那些依赖切线的材质功能,禁用此选项可以在源 3D 文件不包含切线的情况下,减小输出文件的大小,并加快导入速度。
bool meshes/force_disable_compression = false 🔗
如果为 true,则不会使用网格压缩。如果你在网格法线或 UV 中发现块状伪影,或者如果你的网格在每个方向都大于几千米,请考虑启用。
bool meshes/generate_lods = true 🔗
如果为 true,则生成网格的较低细节变体,这些变体将显示在远处以提高渲染性能。并非所有网格体都受益于 LOD,特别是如果它们从未从远处渲染。禁用该功能可以减少输出文件大小并加快导入速度。有关详细信息,请参阅 网格细节级别(LOD)。
在 3D 场景中配置网格体的 GeometryInstance3D.gi_mode。如果被设置为静态光照贴图,则将网格体的 GI 模式设置为静态并在导入时生成 UV2 以进行 LightmapGI 烘焙。
float meshes/lightmap_texel_size = 0.2 🔗
控制烘焙光照贴图上每个纹素的大小。较小的值会产生更精确的光照贴图,但代价是更大的光照贴图大小和更长的烘焙时间。
注意:仅当 meshes/light_baking 被设置为静态光照贴图时有效。
bool nodes/apply_root_scale = true 🔗
如果为 true,nodes/root_scale 将被应用于后代节点、网格、动画、骨骼等。这意味着,如果你稍后在导入的场景中添加子节点,它将不会被缩放。如果为 false,nodes/root_scale 将乘以该根节点的缩放。
bool nodes/import_as_skeleton_bones = false 🔗
将导入场景中的所有节点视为单个 Skeleton3D 中的骨骼。可用于保证导入的动画以骨架骨骼而不是节点为目标。也可用于在 BoneMap 中分配 "Root" 骨骼。有关详细信息,请参阅 重定向 3D 骨架。
覆盖根节点名称。如果为空,则根节点将使用场景指定的内容;如果场景未指定根名称,则根节点将使用该文件名。
float nodes/root_scale = 1.0 🔗
用于场景根的均一缩放。默认值 1.0 不会执行任何重新缩放。有关如何应用该缩放的详细信息,请参阅 nodes/apply_root_scale。
Script nodes/root_script = null 🔗
如果设为有效的脚本,则会将该脚本附加到导入后的场景的根节点上。如果根节点的类型与脚本不兼容,则会将根节点替换为与脚本兼容的类型。也可以对场景中的其他非网格节点使用该设置,为他们附加脚本。
覆盖该根节点类型。如果为空,则根节点将使用场景指定的内容,如果场景未指定根类型,则根节点将使用 Node3D。建议使用继承自 Node3D 的节点类型。否则,你将无法直接在 3D 编辑器中定位节点。
bool nodes/use_name_suffixes = true 🔗
如果为 true,则会使用导入的节点、资源等对象的名称后缀来确定类型和属性,例如 -noimp 可以跳过节点和动画的导入、-alpha 可以启用材质的 Alpha 透明、-vcol 可以启用材质的顶点颜色。禁用该选项会让编辑器导入的文件更接近原始文件,更类似于在运行时导入文件。详见《使用名称后缀自定义节点类型》。
bool nodes/use_node_type_suffixes = true 🔗
如果为 true,则会使用节点名称的后缀来确定节点类型,例如 -col 表示碰撞形状。仅在 nodes/use_name_suffixes 为 true 时使用。禁用该选项会让编辑器导入的文件更接近原始文件,更类似于在运行时导入文件。详见《使用名称后缀自定义节点类型》。
bool skins/use_named_skins = true 🔗
如果勾选此项,动画将使用带有名称的 Skin(蒙皮)资源。在这里,MeshInstance3D 节点包含 3 个与之相关的关键属性:指向 Skeleton3D 节点的骨骼 NodePath(通常填 ..)、一个网格(Mesh),以及一个蒙皮(Skin):
Skeleton3D 节点包含一个带有名称的骨骼列表,记录了它们的姿态和初始状态(Rest),同时也包含节点自身的名称以及父级骨骼的信息。
网格(Mesh)包含了显示模型所需的所有原始顶点数据。就网格本身而言,它知道顶点是如何进行权重绘制(weight-painted)的,并使用了一些通常从 3D 建模软件中导入的内部编号。
蒙皮(Skin)包含了将此网格绑定到该 Skeleton3D 上所需的必要信息。对于 3D 建模软件为每个内部骨骼选定的 ID,它都包含两样东西。首先是一个矩阵,被称为绑定姿态矩阵、逆绑定矩阵,简称 IBM。其次,Skin 还包含每根骨骼的名称(如果 skins/use_named_skins 设为
true),或者包含该骨骼在 Skeleton3D 列表中的索引编号(如果 skins/use_named_skins 设为false)。
综合以上信息,就足以告诉 Godot 如何利用 Skeleton3D 节点中的骨骼姿态来渲染每个 MeshInstance3D 的网格了。需要注意的是,每个 MeshInstance3D 可能会共享绑定关系(这在从 Blender 导出的模型中很常见),也可能每个 MeshInstance3D 使用各自独立的 Skin 对象(这在从 Maya 等其他工具导出的模型中很常见)。