Импорт конфигурации

Godot предоставляет несколько способов настройки импортируемых данных, таких как панель импорта, расширенный диалог настроек импорта и унаследованные сцены. Это можно использовать для внесения дальнейших изменений в импортированную сцену, таких как настройка сеток, добавление информации о физике и добавление новых узлов. Вы также можете написать скрипт, который запустит код в конце процесса импорта для выполнения произвольной настройки.

Обратите внимание, что при необходимости изменение исходных данных предпочтительнее настройки сцены после импорта. Это помогает минимизировать различия между приложением для 3D-моделирования и импортированной сценой. Подробнее см. в статьях Рекомендации по экспорту модели и Настройка типов узлов при помощи суффиксов в названиях.

Рабочие процессы импорта

Поскольку Godot может сохранять сцены только в собственном формате (.tscn/.scn), Godot не может перезаписать исходный файл 3D-сцены (который использует другой формат). Это также более безопасный подход, поскольку позволяет избежать случайных изменений в исходном файле.

Чтобы обеспечить возможность настройки сцены и ее материалов, импортер сцен Godot позволяет использовать различные рабочие процессы относительно импорта данных.

Импортируйте док-станцию после выбора 3D-сцены в док-станции файловой системы

Импортируйте док-станцию после выбора 3D-сцены в док-станции файловой системы

Этот процесс импорта можно настраивать с помощью 3 отдельных интерфейсов в зависимости от ваших потребностей:

  • Вкладка Import после выбора 3D-сцены путем ее однократного щелчка во вкладке FileSystem .

  • Диалоговое окно Advanced Import Settings, доступ к которому можно получить, дважды щелкнув 3D-сцену во вкладке FileSystem или нажав кнопку Advanced… во вкладке Import. Это позволяет вам настраивать параметры каждого объекта в Godot, а также просматривать модели и анимацию. Для получения дополнительной информации см. страницу Расширенные настройки импорта.

  • Импортные подсказки — это специальные суффиксы, добавляемые к именам объектов в программе для 3D-моделирования. Это позволяет настраивать параметры для каждого объекта в программе для 3D-моделирования.

Для базовой настройки достаточно панели Import. Однако для более сложных операций, таких как определение переопределений материалов для каждого материала, потребуется вкладка «Advanced Import Settings», подсказки по импорту или, возможно, и то, и другое.

Использование Import dock

Следующие параметры можно настроить во вкладке Import после выбора 3D-сцены во вкладке FileSystem:

  • Root Type: Тип узла, который будет использоваться в качестве корневого. Рекомендуется использовать типы узлов, наследуемые от Node3D. В противном случае вы потеряете возможность позиционировать узел непосредственно в 3D-редакторе.

  • Root Name: Имя корневого узла в импортированной сцене. Обычно это незаметно при создании экземпляра сцены в редакторе (или перетаскивании из дока файловой системы), поскольку в этом случае корневой узел переименовывается в соответствии с именем файла.

  • Apply Root Scale: Если этот параметр включен, Root Scale будет применён непосредственно к сеткам и анимации, сохраняя масштаб корневого узла по умолчанию (1, 1, 1). Это означает, что при последующем добавлении дочернего узла в импортированную сцену он не будет масштабироваться. Если параметр отключен, Root Scale вместо этого умножит масштаб корневого узла.

Meshes (Сетки)

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

  • Generate LODs: Если этот параметр отмечен, создаются варианты сетки с более низкой степенью детализации, которые будут отображаться на расстоянии для повышения производительности рендеринга. Не все сетки выигрывают от уровня детализации, особенно если они никогда не визуализируются на расстоянии. Отключение этого параметра может уменьшить размер выходного файла и ускорить импорт. Подробнее см. Уровень детализации сетки (LOD).

  • Create Shadow Meshes: Если этот флажок установлен, включается генерация сеток теней при импорте. Это оптимизирует рендеринг теней без потери качества, объединяя вершины, когда это возможно. Это, в свою очередь, снижает пропускную способность памяти, необходимую для рендеринга теней. Генерация сеток теней в настоящее время не поддерживает использование более низкого уровня детализации, чем исходная сетка (но рендеринг теней будет использовать уровни детализации, когда это необходимо).

  • Light Baking: Настраивает режим глобального освещения global illumination mode сеток в 3D-сцене. Если установлено значение Static Lightmaps, режим глобального освещения сеток устанавливается на Static и генерируется UV2 при импорте для запекания карт освещения lightmap baking.

  • Lightmap Texel Size: Видно только если для параметра Light Baking установлено значение Static Lightmaps. Управляет размером каждого текселя на запечённой карте освещения. Меньшее значение обеспечивает более точные карты освещения, но увеличивает их размер и время запекания.

Skins (Скины)

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

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

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

    • Кожа содержит информацию, необходимую для привязки этой сетки к Skeleton3D. Для каждого внутреннего идентификатора кости, выбранного программой 3D-моделирования, она содержит две вещи. Во-первых, матрицу, известную как матрица позы привязки (Bind Pose Matrix), матрица обратной привязки (Inverse Bind Matrix) или сокращённо IBM. Во-вторых, кожа содержит имя каждой кости (если включен параметр Use Named Skins) или индекс кости в списке Skeleton3D (если отключен параметр Use Named Skins).

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

Анимация

  • Import: Если этот параметр отмечен, импортируются анимации из 3D-сцены.

  • FPS: Количество кадров в секунду, используемое для запекания кривых анимации в серии точек с линейной интерполяцией. Рекомендуется настроить это значение в соответствии со значением, используемым в качестве базового в вашей программе для 3D-моделирования. Более высокие значения обеспечивают более точную анимацию с быстрыми изменениями движения, но за счёт увеличения размера файла и потребления памяти. Благодаря интерполяции, превышение 30 кадров в секунду обычно не даёт особого преимущества (поскольку анимация всё равно будет выглядеть плавной при более высокой частоте кадров рендеринга).

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

  • Remove Immutable Tracks: Удаляет дорожки анимации, содержащие только значения по умолчанию. Это может уменьшить размер выходного файла и потребление памяти некоторыми 3D-сценами в зависимости от содержимого дорожек анимации.

Import Script

glTF

  • Embedded Texture Handling: Управляет обработкой текстур, встроенных в сцены glTF. Discard All Textures не импортирует текстуры, что полезно, если вы хотите вручную настроить материалы в Godot. Extract Textures извлекает текстуры во внешние изображения, что уменьшает размер файлов и расширяет возможности импорта. Embed as Basis Universal и Embed as Uncompressed сохраняют текстуры, встроенные в импортированную сцену, со сжатием видеопамяти и без него соответственно.

FBX

  • Importer Which import method is used. ubfx handles fbx files as fbx files. FBX2glTF converts FBX files to glTF on import and requires additional setup. FBX2glTF is not recommended unless you have a specific reason to use it over ufbx or working with a different file format.

  • Allow Geometry Helper Nodes включает или отключает вспомогательные узлы геометрии

  • Embedded Texture Handling: Управляет обработкой текстур, встроенных в сцены fbx. Discard All Textures не импортирует текстуры, что полезно, если вы хотите вручную настроить материалы в Godot. Extract Textures извлекает текстуры во внешние изображения, что уменьшает размер файлов и расширяет возможности импорта. Embed as Basis Universal и Embed as Uncompressed сохраняют текстуры, встроенные в импортированную сцену, со сжатием видеопамяти и без него соответственно.

Опции, специфичные для Blender

Видно только для файлов .blend.

Узлы

  • Visible: All импортирует всё, даже невидимые объекты. Visible Only импортирует только видимые объекты. Renderable импортирует только объекты, отмеченные в Blender как доступные для визуализации, независимо от того, являются ли они видимыми. В Blender визуализируемость включается щелчком по значку камеры рядом с каждым объектом в Outliner, а видимость — значком глаза.

  • Active Collection Only: Если этот флажок установлен, импортируются только узлы, находящиеся в активной коллекции в Blender.

  • Punctual Lights:* Если этот флажок установлен, импортируются источники света (направленные, всенаправленные и точечные) из Blender. "Punctual" не следует путать с "positional", поэтому направленные источники света также включены.

  • Cameras: Если этот флажок установлен, камеры импортируются из Blender.

  • Custom Properties: Если этот флажок установлен, пользовательские свойства импортируются из Blender как дополнения glTF. Эти данные затем можно использовать из плагина редактора, использующего GLTFDocument.register_gltf_document_extension(), который может задавать метаданные узла при импорте (среди прочих вариантов использования).

  • Modifiers: Если установлено значение No Modifiers, модификаторы объектов игнорируются при импорте. Если установлено значение All Modifiers, модификаторы применяются к объектам при импорте.

Meshes (Сетки)

  • Colors: Если этот параметр отмечен, импортируются цвета вершин из Blender.

  • UVs: Если этот флажок установлен, импортируются вершинные UV1 и UV2 из Blender.

  • Normals: Если этот параметр отмечен, импортируются нормали вершин из Blender.

  • Export Geometry Nodes Instances: Если этот флажок установлен, импортируются экземпляры geometry node из Blender.

  • GPU Instances If checked, imports instances and particle systems as GLTF's buffer/accessor data instead of numerous singular Mesh3D object. This does not include Geometry Nodes instancing.

  • Tangents: Если этот флажок установлен, импортируются касательные вершин из Blender.

  • Skins: None пропускает импорт данных skin skeleton из Blender. 4 Influences (Compatible) импортирует данные skin для совместимости со всеми рендерерами, но за счет более низкой точности для определенных ригов. All Influences импортирует данные skin со всеми влияниями (до 8 в Godot), что обеспечивает большую точность, но может быть несовместимо со всеми рендерерами.

  • Export Bones Deforming Mesh Only: Если этот флажок установлен, импортируются только кости, деформирующие сетку из Blender.

Материалы

  • Unpack Enabled:: Если этот параметр отмечен, исходные изображения распаковываются в файловую систему Godot и используются. Это позволяет изменять настройки импорта изображений, например, сжатие видеопамяти. Если этот параметр не отмечен, Blender может преобразовать исходные изображения, например, переупаковать шероховатость и металл в одну текстуру шероховатости и металла. В большинстве случаев этот параметр следует оставить включенным, но если изображения в файле .blend имеют неправильный формат, для корректной работы его необходимо отключить.

  • Export Materials Если установлено значение Placeholder, материалы не импортируются, но сохраняются слоты поверхностей, чтобы можно было назначать отдельные материалы разным поверхностям. Если установлено значение Export, материалы импортируются "как есть" (обратите внимание, что процедурные материалы Blender могут работать некорректно). Если установлено значение Named Placeholder, материалы импортируются, но изображения, упакованные в файл .blend, не импортируются. Текстуры в импортированных материалах придётся переназначать вручную.

Анимация

  • Limit Playback: Если этот параметр отмечен, импорт анимации будет ограничен диапазоном воспроизведения, заданным в Blender (параметры Start и End справа от временной шкалы анимации в Blender). Это позволяет избежать включения неиспользуемых данных анимации, уменьшая размер импортируемой сцены и ускоряя её загрузку. Однако, это также может привести к потере данных анимации, если диапазон воспроизведения в Blender задан неправильно.

  • Always Sample: Если этот флажок установлен, при импорте применяется сэмплирование анимации для обеспечения согласованности интерполяции анимации в Blender и glTF, что приводит к увеличению размера файла. Если флажок не установлен, интерполяция анимации в Blender и импортированной сцене в Godot может отличаться из-за различий в семантике интерполяции.

  • Group Tracks: Если этот флажок установлен, импортирует анимации (активные и на треках NLA) как отдельные треки. Если флажок не установлен, все назначенные действия становятся одной анимацией glTF.

Использование скриптов импорта для автоматизации

Мы можем предоставить специальный скрипт для обработки всей сцены после импорта. Он отлично подходит для постобработки, смены материалов, создания интересных эффектов с геометрией и многого другого.

Создайте скрипт, не привязанный ни к одному узлу, щёлкнув правой кнопкой мыши в доке файловой системы и выбрав New > Script…. В редакторе скриптов введите следующее:

@tool # Needed so it runs in editor.
extends EditorScenePostImport

# This sample changes all node names.
# Called right after the scene is imported and gets the root node.
func _post_import(scene):
    # Change all node names to "modified_[oldnodename]"
    iterate(scene)
    return scene # Remember to return the imported scene

# Recursive function that is called on every node
# (for demonstration purposes; EditorScenePostImport only requires a `_post_import(scene)` function).
func iterate(node):
    if node != null:
        print_rich("Post-import: [b]%s[/b] -> [b]%s[/b]" % [node.name, "modified_" + node.name])
        node.name = "modified_" + node.name
        for child in node.get_children():
            iterate(child)

Функция _post_import(scene: Node) принимает импортированную сцену в качестве аргумента (параметр фактически является корневым узлом сцены). Сцена, которая в конечном итоге будет использована, должна быть возвращена (даже если сцена может быть совершенно другой).

Чтобы использовать свой скрипт, найдите его в параметре "Path" на вкладке импорта в категории "Import Script".

Использование анимационных библиотек

You can also choose to import only animations from a glTF file and nothing else. This is used in some asset pipelines to distribute animations separately from models. For example, this allows you to use one set of animations for several characters, without having to duplicate animation data in every character.

Для этого выберите файл glTF в доке FileSystem, затем измените режим импорта на Animation Library в доке Import:

Изменение типа импорта на «Animation Library» в панели Import

Изменение типа импорта на «Animation Library» в панели Import

Нажмите кнопку Reimport и перезапустите редактор при появлении соответствующего запроса. После перезапуска файл glTF будет импортирован как AnimationLibrary вместо PackedScene. На эту библиотеку анимации можно будет ссылаться в узле AnimationPlayer.

Параметры импорта, доступные после изменения режима импорта на «Animation Library», действуют так же, как и при использовании режима импорта «Scene». Подробнее см. в документе Использование Import dock.

Filter script

Можно указать скрипт фильтра в специальном синтаксисе, чтобы решить, какие дорожки и из каких анимаций следует сохранить.

Скрипт фильтра применяется к каждой импортированной анимации. Синтаксис состоит из двух типов операторов: первый — для выбора анимаций для фильтрации, а второй — для фильтрации отдельных треков в совпавшей анимации. Все шаблоны имён выполняются с использованием нечувствительного к регистру выражения с поддержкой подстановочных знаков ? и * (с использованием String.matchn()).

Скрипт должен начинаться с оператора фильтра анимации (что обозначается строкой, начинающейся с @). Например, если мы хотим применить фильтры ко всем импортированным анимациям, имя которых заканчивается на "_Loop":

@+*_Loop

Аналогичным образом в ту же строку можно добавлять дополнительные шаблоны, разделяя их запятыми. Вот измененный пример, который дополнительно включает все анимации с именами, начинающимися с "Arm_Left", но также исключает все анимации с именами, заканчивающимися на "Attack":

@+*_Loop, +Arm_Left*, -*Attack

Следуя инструкциям фильтра выбора анимации, мы добавляем шаблоны фильтрации дорожек, чтобы указать, какие дорожки анимации следует сохранить или отбросить. Если шаблоны фильтра дорожек не указаны, то все дорожки в пределах согласованной анимации будут отброшены!

Важно отметить, что операторы фильтра дорожек применяются по порядку для каждой дорожки в анимации; это означает, что одна строка может включать дорожку, а более позднее правило может ее отбросить. Точно так же трек, исключенный более ранним правилом, может быть затем снова включен правилом фильтрации ниже в сценарии фильтрации.

Например: включить все дорожки в анимации с именами, оканчивающимися на "_Loop", но удалить все дорожки, влияющие на "Skeleton", которые оканчиваются на "Control", если только в их имени нет "Arm":

@+*_Loop
+*
-Skeleton:*Control
+*Arm*

В приведенном выше примере такие треки, как "Skeleton:Leg_Control" будут отброшены, а треки, такие как "Skeleton:Head" или "Skeleton:Arm_Left_Control" будут сохранены.

Любые строки фильтра трека, которые не начинаются со знака + или -, игнорируются.

Наследование сцен

Во многих случаях может потребоваться внести изменения в импортированную сцену вручную. По умолчанию это невозможно, поскольку при изменении исходного 3D-объекта Godot повторно импортирует всю сцену.

Однако можно вносить локальные изменения, используя наследование сцены. При попытке открыть импортированную сцену с помощью Scene > Open Scene… или Scene > Quick Open Scene… появится следующее диалоговое окно:

Диалог при открытии импортированной 3D-сцены в редакторе

Диалог при открытии импортированной 3D-сцены в редакторе

В унаследованных сценах единственными ограничениями для модификации являются:

  • Узлы из базовой сцены удалить нельзя, но можно добавить дополнительные узлы в любом месте.

  • Подресурсы нельзя редактировать. Вместо этого их необходимо сохранить во внешнем хранилище, как описано выше.

Кроме этого, разрешено все.