Импорт конфигурации
Godot предоставляет несколько способов настройки импортируемых данных, таких как панель импорта, расширенный диалог настроек импорта и унаследованные сцены. Это можно использовать для внесения дальнейших изменений в импортированную сцену, таких как настройка сеток, добавление информации о физике и добавление новых узлов. Вы также можете написать скрипт, который запустит код в конце процесса импорта для выполнения произвольной настройки.
Обратите внимание, что при необходимости изменение исходных данных предпочтительнее настройки сцены после импорта. Это помогает минимизировать различия между приложением для 3D-моделирования и импортированной сценой. Подробнее см. в статьях Рекомендации по экспорту модели и Настройка типов узлов при помощи суффиксов в названиях.
Рабочие процессы импорта
Поскольку Godot может сохранять сцены только в собственном формате (.tscn/.scn), Godot не может перезаписать исходный файл 3D-сцены (который использует другой формат). Это также более безопасный подход, поскольку позволяет избежать случайных изменений в исходном файле.
Чтобы обеспечить возможность настройки сцены и ее материалов, импортер сцен Godot позволяет использовать различные рабочие процессы относительно импорта данных.
Импортируйте док-станцию после выбора 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
Path: Путь к скрипту импорта, который может выполнить код после завершения процесса импорта для пользовательской обработки. Подробнее см. Использование скриптов импорта для автоматизации.
glTF
Embedded Texture Handling: Управляет обработкой текстур, встроенных в сцены glTF. Discard All Textures не импортирует текстуры, что полезно, если вы хотите вручную настроить материалы в Godot. Extract Textures извлекает текстуры во внешние изображения, что уменьшает размер файлов и расширяет возможности импорта. Embed as Basis Universal и Embed as Uncompressed сохраняют текстуры, встроенные в импортированную сцену, со сжатием видеопамяти и без него соответственно.
FBX
Importer Используемый метод импорта. ubfx обрабатывает файлы fbx как файлы fbx. FBX2glTF преобразует файлы FBX в glTF при импорте и требует дополнительной настройки. FBX2glTF не рекомендуется использовать, если у вас нет особых причин использовать его поверх UFBX или работать с другим форматом файлов.
Allow Geometry Helper Nodes включает или отключает вспомогательные узлы геометрии
Embedded Texture Handling: Управляет обработкой текстур, встроенных в сцены fbx. Discard All Textures не импортирует текстуры, что полезно, если вы хотите вручную настроить материалы в Godot. Extract Textures извлекает текстуры во внешние изображения, что уменьшает размер файлов и расширяет возможности импорта. Embed as Basis Universal и Embed as Uncompressed сохраняют текстуры, встроенные в импортированную сцену, со сжатием видеопамяти и без него соответственно.
Использование диалогового окна «Advanced Import Settings (Расширенные параметры импорта)»
Первая вкладка, которую вы увидите, — это вкладка Scene. Параметры, доступные на панели справа, идентичны параметрам панели импорта, но вы получаете доступ к 3D-просмотру. 3D-просмотр можно вращать, удерживая левую кнопку мыши и перетаскивая её. Масштаб можно регулировать с помощью колёсика мыши.
Диалоговое окно «Advanced Import Settings» (вкладка «Scene»). Авторские права: Modern Arm Chair 01 - Poly Haven
Настройка параметров импорта узла
На вкладке Scene можно выбрать отдельные узлы, составляющие сцену, используя древовидную структуру слева:
Выбор узла в диалоговом окне «Advanced Import Settings» (вкладка «Materials»)
Это открывает несколько вариантов импорта для каждого узла:
Skip Import: Если этот флажок установлен, узел не будет присутствовать в итоговой импортированной сцене. Включение этого параметра отключает все остальные параметры.
Generate > Physics: Если этот флажок установлен, создается родительский узел PhysicsBody3D с формами столкновений, которые являются родственными узлами MeshInstance3D.
Generate > NavMesh: Если этот флажок установлен, генерируется дочерний узел NavigationRegion3D для navigation. Mesh + NavMesh сохраняет исходную сетку видимой, тогда как NavMesh Only импортирует только навигационную сетку (без визуального представления). NavMesh Only предназначен для использования при ручном создании упрощённой сетки для навигации.
Generate > Occluder: Если этот флажок установлен, генерируется узел OccluderInstance3D родственного уровня для occlusion culling, используя геометрию сетки в качестве основы для формы окклюдера. Mesh + Occluder сохранит исходную сетку видимой, тогда как Occluder Only импортирует только окклюдер (без визуального представления). Occluder Only предназначен для использования при ручном создании упрощённой сетки для окклюдера.
Эти параметры видны только в том случае, если включены некоторые из указанных выше параметров:
Physics > Body Type: Видно только при включенном параметре Generate > Physics. Управляет создаваемым PhysicsBody3D. Static создаёт StaticBody3D, Dynamic создаёт RigidBody3D, Area создаёт Area3D.
Physics > Shape Type: Видно только при включенном параметре Generate > Physics. Trimesh обеспечивает точное потреугольное столкновение, но может использоваться только с телом типа Static. Другие типы менее точны и могут потребовать ручной настройки, но могут использоваться с любым типом тела. Для статической геометрии уровня используйте Trimesh. Для динамической геометрии по возможности используйте примитивные формы для повышения производительности или один из режимов выпуклого разложения, если форма большая и сложная.
Decomposition > Advanced: отображается только если параметр Physics > Shape Type установлен на Decompose Convex. Если флажок установлен, можно настроить расширенные параметры разложения. Если флажок отключен, можно настроить только предустановленную Precision (которой обычно достаточно).
Decomposition > Precision: Отображается только если параметр Physics > Shape Type установлен на Decompose Convex. Управляет точностью, используемой для выпуклого разложения. Более высокие значения приводят к более детальному столкновению, но за счёт более медленной генерации и повышенной загрузки процессора при моделировании физики. Для повышения производительности рекомендуется поддерживать это значение как можно ниже для ваших сценариев использования.
Occluder > Simplification Distance: отображается только в том случае, если для параметра Generate > Occluder задано значение Mesh + Occluder или Occluder Only. Более высокие значения приводят к созданию сетки окклюдера с меньшим количеством вершин (что снижает загрузку процессора) за счёт увеличения количества проблем с окклюдером (например, ложных срабатываний или ложных отрицаний). Если вы столкнулись с тем, что объекты исчезают, когда камера находится рядом с определённой сеткой, попробуйте уменьшить это значение.
Настройка параметров импорта сетки и материалов
В диалоговом окне «Advanced Import Settings» есть два способа выбора отдельных сеток или материалов:
Переключитесь на вкладку Meshes или Materials в левом верхнем углу диалогового окна.
Оставаясь на вкладке Scene, разверните параметры в древовидной структуре слева. После выбора сетки или материала здесь отображается та же информация, что и на вкладках Meshes и Materials, но в виде древовидной структуры, а не списка.
Если вы выберете сетку, на панели справа появятся различные параметры:
Диалоговое окно «Advanced Import Settings» (вкладка Meshes (Сетки))
Возможны следующие варианты:
Save to File: Сохраняет ресурс Mesh во внешнем файле (это не файл сцены). Обычно вам не нужно использовать это для размещения сетки в 3D-сцене — вместо этого следует напрямую создать экземпляр 3D-сцены. Однако прямой доступ к ресурсу сетки полезен для определенных узлов, таких как MeshInstance3D, MultiMeshInstance3D, GPUParticles3D или CPUParticles3D. - Вам также потребуется указать путь к выходному файлу с помощью параметра, который появляется после включения Save to File. Рекомендуется использовать расширение выходного файла
.resдля уменьшения размера файла и повышения скорости загрузки, поскольку.tresнеэффективно для записи больших объемов данных.Generate > Shadow Meshes: Переопределение для каждой сетки параметра импорта для всей сцены Meshes > Create Shadow Meshes, описанного в Использование Import dock. Default будет использоваться параметр импорта для всей сцены, а Enable или Disable можно принудительно включить или отключить это поведение для конкретной сетки.
Generate > Lightmap UV: переопределение для каждой сетки для параметра импорта всей сцены Meshes > Light Baking, описанного в Использование Import dock. Default будет использоваться параметр импорта всей сцены, а Enable или Disable могут принудительно включать или отключать это поведение для конкретной сетки. - Установка значения Enable для сцены с режимом запекания света Static эквивалентна настройке этой сетки на использование Static Lightmaps. Установка значения Disable для сцены с режимом запекания света Static Lightmaps эквивалентна настройке этой сетки на использование Static.
Generate > LODs: переопределение для каждой сетки параметра импорта для всей сцены Meshes > Generate LODs, описанного в Использование Import dock. Default будет использоваться параметр импорта для всей сцены, а Enable или Disable можно принудительно включить или отключить это поведение для конкретной сетки.
LODs > Normal Split Angle: Минимальная разница углов между двумя вершинами, необходимая для сохранения ребра геометрии при генерации уровня детализации сетки. При возникновении визуальных проблем с генерацией уровня детализации уменьшение этого значения может помочь (за счёт снижения эффективности генерации уровня детализации).
LODs > Normal Merge Angle: Минимальная разница углов между двумя вершинами, необходимая для сохранения ребра геометрии при генерации уровня детализации сетки. При возникновении визуальных проблем с генерацией уровня детализации уменьшение этого значения может помочь (за счёт снижения эффективности генерации уровня детализации).
Если вы выберете материал, на панели справа появится только один вариант:
Диалоговое окно Advanced Import Settings (вкладка Materials)
Если установлен флажок Use External и указан путь вывода, это позволяет использовать внешний материал вместо материала, включенного в исходный файл 3D-сцены; см. раздел ниже.
Извлечение материалов в отдельные файлы
Хотя Godot может импортировать материалы, созданные в программах для 3D-моделирования, конфигурация по умолчанию может не подойти вам. Например:
Вы хотите настроить характеристики материала, не поддерживаемые вашим 3D-приложением.
Вы хотите использовать другой режим фильтрации текстур, так как эта опция настраивается в материале, начиная с Godot 4.0 (а не в изображении).
Вы хотите заменить один из материалов совершенно другим материалом, например, пользовательским шейдером.
Чтобы иметь возможность изменять материалы 3D-сцены в редакторе Godot, вам необходимо использовать внешние ресурсы материалов.
В левом верхнем углу диалогового окна «Advanced Import Settings» выберите Actions… > Extract Materials:
Извлечение всех встроенных материалов во внешние ресурсы в диалоговом окне «Advanced Import Settings»
После выбора этой опции выберите папку, в которую необходимо извлечь файлы .tres, затем подтвердите извлечение:
Подтверждение извлечения материала в поддиалоговом окне «Advanced Import Settings»
Примечание
После извлечения материалов 3D-сцена будет автоматически настроена на использование внешних ссылок на материалы. Таким образом, вам не придётся вручную включать опцию Use External для каждого материала, чтобы внешний материал .tres работал.
При включении параметра Use External помните, что в диалоговом окне «Advanced Import Settings» будут отображаться исходные материалы сетки (разработанные в программе для 3D-моделирования). Это означает, что ваши изменения материалов не будут видны в этом диалоговом окне. Для предварительного просмотра изменённых материалов необходимо поместить импортированную 3D-сцену в другую сцену с помощью редактора.
Godot не перезаписывает изменения, внесённые в извлечённые материалы, при повторном импорте исходной 3D-сцены. Однако, если имя материала в исходном 3D-файле будет изменено, связь между исходным и извлечённым материалами будет потеряна. В результате вам потребуется использовать диалоговое окно «Дополнительные параметры импорта», чтобы связать переименованный материал с существующим извлечённым материалом.
Вышеуказанные действия можно выполнить на вкладке Materials диалогового окна, выбрав материал, включив опцию Save to File, а затем указав путь сохранения с помощью параметра Path, который появляется после включения опции Save to File.
Использование скриптов импорта для автоматизации
Мы можем предоставить специальный скрипт для обработки всей сцены после импорта. Он отлично подходит для постобработки, смены материалов, создания интересных эффектов с геометрией и многого другого.
Создайте скрипт, не привязанный ни к одному узлу, щёлкнув правой кнопкой мыши в доке файловой системы и выбрав 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".
Использование анимационных библиотек
Начиная с Godot 4.0, вы можете импортировать только анимацию из файла glTF и ничего больше. Это используется в некоторых процессах разработки ресурсов для распределения анимации отдельно от моделей. Например, это позволяет использовать один набор анимаций для нескольких персонажей, не дублируя данные анимации для каждого персонажа.
Для этого выберите файл glTF в доке FileSystem, затем измените режим импорта на 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" будут сохранены.
Любые строки фильтра трека, которые не начинаются со знака + или -, игнорируются.
Хранилище
По умолчанию, анимация сохраняется как встроенная. Вместо этого её можно сохранить в файл. Это позволяет добавлять к анимации собственные дорожки и сохранять их после повторного импорта.
Оптимизировать
При импорте анимации запускается оптимизатор, который значительно уменьшает размер анимации. В общем, это всегда следует включать, если вы не подозреваете, что анимация может быть нарушена из-за ее включения.
Клипы
Можно указать несколько анимаций из одной временной шкалы как клипы. Для того, чтобы это работало, модель должна иметь только одну анимацию с именем default. Чтобы создать клипы, измените размер клипа на значение больше нуля. Затем вы можете дать клипу имя, указать, на каких кадрах он начинается и на каких заканчивается, и выбрать, будет ли анимация повторяться или нет.
Наследование сцен
Во многих случаях может потребоваться внести изменения в импортированную сцену вручную. По умолчанию это невозможно, поскольку при изменении исходного 3D-объекта Godot повторно импортирует всю сцену.
Однако можно вносить локальные изменения, используя наследование сцены. При попытке открыть импортированную сцену с помощью Scene > Open Scene… или Scene > Quick Open Scene… появится следующее диалоговое окно:
Диалог при открытии импортированной 3D-сцены в редакторе
В унаследованных сценах единственными ограничениями для модификации являются:
Узлы из базовой сцены удалить нельзя, но можно добавить дополнительные узлы в любом месте.
Подресурсы нельзя редактировать. Вместо этого их необходимо сохранить во внешнем хранилище, как описано выше.
Кроме этого, разрешено все.