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.

EditorSceneFormatImporter

Наследует: RefCounted < Object

Наследуется от: EditorSceneFormatImporterBlend, EditorSceneFormatImporterFBX2GLTF, EditorSceneFormatImporterGLTF, EditorSceneFormatImporterUFBX

Импортирует сцены из сторонних 3D-файлов.

Описание

EditorSceneFormatImporter позволяет определить скрипт импортера для стороннего 3D-формата.

Чтобы использовать EditorSceneFormatImporter, сначала зарегистрируйте его с помощью метода EditorPlugin.add_scene_format_importer_plugin().

Методы

PackedStringArray

_get_extensions() virtual required const

void

_get_import_options(path: String) virtual

Variant

_get_option_visibility(path: String, for_animation: bool, option: String) virtual const

Object

_import_scene(path: String, flags: int, options: Dictionary) virtual required

void

add_import_option(name: String, value: Variant)

void

add_import_option_advanced(type: Variant.Type, name: String, default_value: Variant, hint: PropertyHint = 0, hint_string: String = "", usage_flags: int = 6)


Перечисления

flags ImportFlags: 🔗

ImportFlags IMPORT_SCENE = 1

Неиспользуемый флаг (при включении не оказывает никакого эффекта).

ImportFlags IMPORT_ANIMATION = 2

Импортируйте анимации из 3D-сцены. При импорте сцены в качестве AnimationLibrary этот флаг всегда включен.

ImportFlags IMPORT_FAIL_ON_MISSING_DEPENDENCIES = 4

Неиспользуемый флаг (при включении не оказывает никакого эффекта).

ImportFlags IMPORT_GENERATE_TANGENT_ARRAYS = 8

Если true, сгенерируйте касательные вершины с помощью Mikktspace, если входные сетки не содержат данных о касательных. По возможности рекомендуется позволить программному обеспечению для 3D-моделирования генерировать касательные при экспорте, а не полагаться на эту опцию. Касательные необходимы для корректного отображения карт нормалей и высот, а также любых функций материала/шейдера, требующих касательных.

Если вам не нужны функции материала, требующие касательных, отключение этой опции может уменьшить размер выходного файла и ускорить импорт, если исходный 3D-файл не содержит касательных.

ImportFlags IMPORT_USE_NAMED_SKIN_BINDS = 16

Если этот параметр отмечен, используйте именованные Skin для анимации. Узел MeshInstance3D содержит 3 важных свойства: скелет NodePath, указывающий на узел Skeleton3D (обычно ..), сетку и скин:

  • Узел Skeleton3D содержит список костей с именами, их позами и состояниями покоя, имя и родительскую кость.

  • Сетка содержит все необходимые данные о вершинах для отображения сетки. С точки зрения сетки, она знает, как происходит распределение весов вершин, и использует некоторую внутреннюю нумерацию, часто импортируемую из программного обеспечения для 3D-моделирования.

  • Скин содержит информацию, необходимую для привязки этой сетки к этому Skeleton3D. Для каждого из внутренних идентификаторов костей, выбранных программным обеспечением для 3D-моделирования, он содержит две вещи. Во-первых, матрицу, известную как матрица привязки позы, обратная матрица привязки или сокращенно IBM. Во-вторых, Skin содержит имя каждой кости (если этот флаг включен) или индекс кости в списке Skeleton3D (если этот флаг отключен).

Вместе эта информация достаточна, чтобы сообщить Godot, как использовать позы костей в узле Skeleton3D и для рендеринга сетки каждого MeshInstance3D. Обратите внимание, что каждый MeshInstance3D может использовать общие привязки, как это часто бывает в моделях, экспортированных из Blender, или каждый MeshInstance3D может использовать отдельный объект Skin, как это часто бывает в моделях, экспортированных из других инструментов, таких как Maya.

ImportFlags IMPORT_DISCARD_MESHES_AND_MATERIALS = 32

Игнорировать сетки и материалы при импорте. При импорте сцены в формате AnimationLibrary этот флаг всегда включен.

ImportFlags IMPORT_FORCE_DISABLE_MESH_COMPRESSION = 64

Если true, сжатие сетки не будет использоваться. Рассмотрите возможность включения, если вы заметили блочные артефакты в нормалях сетки или UV, или если у вас есть сетки, которые больше нескольких тысяч метров в каждом направлении.


Описания метода

PackedStringArray _get_extensions() virtual required const 🔗

Верните поддерживаемые расширения файлов для этого импортера сцен.


void _get_import_options(path: String) virtual 🔗

Переопределите, чтобы добавить общие параметры импорта. Они появятся в главном доке импорта в редакторе. Добавьте параметры с помощью add_import_option() и add_import_option_advanced().

Примечание: Все экземпляры EditorSceneFormatImporter и EditorScenePostImportPlugin добавят параметры для всех файлов. Рекомендуется проверять расширение файла, если path непустой.

Когда пользователь редактирует настройки проекта, path будет пустым. Рекомендуется добавлять все параметры, если path пустой, чтобы пользователь мог настраивать параметры импорта по умолчанию.


Variant _get_option_visibility(path: String, for_animation: bool, option: String) virtual const 🔗

Должен возвращать true для отображения заданной опции, false для скрытия заданной опции или null для игнорирования.


Object _import_scene(path: String, flags: int, options: Dictionary) virtual required 🔗

Выполните здесь основную часть логики импорта сцены, например, с помощью GLTFDocument или FBXDocument.


void add_import_option(name: String, value: Variant) 🔗

Добавьте определенную опцию импорта (только имя и значение по умолчанию). Эту функцию можно вызвать только из _get_import_options().


void add_import_option_advanced(type: Variant.Type, name: String, default_value: Variant, hint: PropertyHint = 0, hint_string: String = "", usage_flags: int = 6) 🔗

Добавить конкретную опцию импорта. Эту функцию можно вызвать только из _get_import_options().