Up to date

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

ResourceImporterScene

继承: ResourceImporter < RefCounted < Object

导入 glTF、FBX、Collada 或 Blender 3D 场景。

描述

另请参见 ResourceImporterOBJ,它被用于可作为独立的 Mesh 或场景导入的 OBJ 模型。

高级导入设置 对话框中提供了其他选项(例如将单个网格或材质提取到文件)。可以通过双击文件系统停靠面板中的 3D 场景或通过选择文件系统停靠面板中的 3D 场景,转至导入停靠面板并选择高级来访问该对话框。

注意:ResourceImporterScene 被用于 PackedScene,例如 .tscn.scn 文件 。

教程

属性

Dictionary

_subresources

{}

float

animation/fps

30

bool

animation/import

true

bool

animation/remove_immutable_tracks

true

bool

animation/trimming

false

String

import_script/path

""

bool

meshes/create_shadow_meshes

true

bool

meshes/ensure_tangents

true

bool

meshes/force_disable_compression

false

bool

meshes/generate_lods

true

int

meshes/light_baking

1

float

meshes/lightmap_texel_size

0.2

bool

nodes/apply_root_scale

true

String

nodes/root_name

""

float

nodes/root_scale

1.0

String

nodes/root_type

""

bool

skins/use_named_skins

true


属性说明

Dictionary _subresources = {}

包含场景子资源的属性。这是一个内部选项,在导入停靠面板中不可见。


float animation/fps = 30

用于通过线性插值将动画曲线烘焙为一系列点的每秒帧数。建议配置该值以匹配你在 3D 建模软件中用作基线的值。较高的值会导致更精确的快速运动变化的动画,但代价是文件大小和内存占用更大。由于插值,超过 30 FPS 通常不会有太大好处(因为动画在更高的渲染帧速率下仍然会显得平滑)。


bool animation/import = true

如果为 true,则从 3D 场景导入动画。


bool animation/remove_immutable_tracks = true

如果为 true,则移除仅包含默认值的动画轨道。这可以减少某些 3D 场景的输出文件大小和内存占用,具体取决于其动画轨道的内容。


bool animation/trimming = false

如果为 true,如果没有关键帧更改,则修剪动画的开头和结尾。这可以减少某些 3D 场景的输出文件大小和内存占用,具体取决于其动画轨道的内容。


String import_script/path = ""

导入脚本的路径,该脚本可以在导入过程完成后运行代码以进行自定义处理。有关详细信息,请参阅 使用导入脚本进行自动化


bool meshes/create_shadow_meshes = true

如果为 true,则在导入时启用阴影网格体的生成。这可以通过在可能的情况下将顶点焊接在一起来优化阴影渲染,且不会降低质量。这反过来又减少了渲染阴影所需的内存带宽。阴影网格生成当前不支持使用比源网格更低的细节级别(但阴影渲染将在相关时使用 LOD)。


bool meshes/ensure_tangents = true

如果为 true,如果输入网格没有切线数据,则使用 Mikktspace 生成顶点切线。如果可能,建议让 3D 建模软件在导出时生成切线,而不是依赖于该选项。正确显示法线和高度贴图,以及任何需要切线的材质/着色器功能都需要切线。

如果你不需要那些需要切线的材质特性,则禁用该功能可以减少输出文件大小,并在源 3D 文件不包含切线的情况下加快导入速度。


bool meshes/force_disable_compression = false

如果为 true,则不会使用网格压缩。如果你在网格法线或 UV 中发现块状伪影,或者如果你的网格在每个方向都大于几千米,请考虑启用。


bool meshes/generate_lods = true

如果为 true,则生成网格的较低细节变体,这些变体将显示在远处以提高渲染性能。并非所有网格体都受益于 LOD,特别是如果它们从未从远处渲染。禁用该功能可以减少输出文件大小并加快导入速度。有关详细信息,请参阅 网格细节级别(LOD)


int meshes/light_baking = 1

在 3D 场景中配置网格体的 GeometryInstance3D.gi_mode。如果被设置为静态光照贴图,则将网格体的 GI 模式设置为静态并在导入时生成 UV2 以进行 LightmapGI 烘焙。


float meshes/lightmap_texel_size = 0.2

控制烘焙光照贴图上每个纹素的大小。较小的值会产生更精确的光照贴图,但代价是更大的光照贴图大小和更长的烘焙时间。

注意:仅当 meshes/light_baking 被设置为静态光照贴图时有效。


bool nodes/apply_root_scale = true

如果为 truenodes/root_scale 将被应用于后代节点、网格、动画、骨骼等。这意味着,如果你稍后在导入的场景中添加子节点,它将不会被缩放。如果为 falsenodes/root_scale 将乘以该根节点的缩放。


String nodes/root_name = ""

覆盖根节点名称。如果为空,则根节点将使用场景指定的内容;如果场景未指定根名称,则根节点将使用该文件名。


float nodes/root_scale = 1.0

用于场景根的统一缩放。默认值 1.0 不会执行任何重新缩放。有关如何应用该缩放的详细信息,请参阅 nodes/apply_root_scale


String nodes/root_type = ""

覆盖该根节点类型。如果为空,则根节点将使用场景指定的内容,如果场景未指定根类型,则根节点将使用 Node3D。建议使用继承自 Node3D 的节点类型。否则,你将无法直接在 3D 编辑器中定位节点。


bool skins/use_named_skins = true

如果勾选,则为动画使用命名的 SkinMeshInstance3D 节点包含 3 个相关属性:指向 Skeleton3D 节点的骨架 NodePath(通常为 ..)、网格、蒙皮:

  • Skeleton3D 节点包含骨骼列表,其中包含名称、姿势和休息、名称和父骨骼。

  • 网格是显示网格所需的所有原始顶点数据。就网格而言,它知道如何对顶点进行权重绘制,并使用通常从 3D 建模软件导入的某些内部编号。

  • 蒙皮包含将该网格绑定到该 Skeleton3D 上所必需的信息。对于 3D 建模软件选择的每一个内部骨骼 ID,它都包含两件事。首先是一个名为绑定姿势矩阵、逆绑定矩阵、或简称为 IBM 的矩阵。其次,该 Skin 包含每个骨骼的名称(如果 skins/use_named_skinstrue),或者骨骼在 Skeleton3D 列表中的索引(如果 skins/use_named_skinsfalse)。

总之,这些信息足以告诉 Godot 如何使用 Skeleton3D 节点中的骨骼姿势来渲染每个 MeshInstance3D 的网格。请注意,每个 MeshInstance3D 可以共享绑定,这在从 Blender 导出的模型中很常见;或者每个 MeshInstance3D 可以使用单独的 Skin 对象,这在从其他工具(例如 Maya)导出的模型中很常见。