GLTFState

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

Наследуется от: FBXState

Представляет все данные файла glTF.

Описание

Содержит все узлы и ресурсы файла glTF. Используется GLTFDocument в качестве хранилища данных, что позволяет GLTFDocument и всем классам GLTFDocumentExtension оставаться без состояния.

GLTFState может быть заполнен путем чтения файла GLTFDocument или путем преобразования сцены Godot. Затем данные могут быть использованы для создания сцены Godot или сохранены в файле glTF. Код, который преобразуется в сцену Godot или из нее, может быть перехвачен в произвольных точках классами GLTFDocumentExtension. Это позволяет сохранять пользовательские данные в файле glTF или преобразовывать пользовательские данные в узлы Godot или из них.

Обучающие материалы

Свойства

float

bake_fps

30.0

String

base_path

""

Array[PackedByteArray]

buffers

[]

String

copyright

""

bool

create_animations

true

String

filename

""

PackedByteArray

glb_data

PackedByteArray()

HandleBinaryImageMode

handle_binary_image_mode

1

bool

import_as_skeleton_bones

false

Dictionary

json

{}

int

major_version

0

int

minor_version

0

PackedInt32Array

root_nodes

PackedInt32Array()

String

scene_name

""

bool

use_named_skin_binds

false

Методы

void

add_used_extension(extension_name: String, required: bool)

int

append_data_to_buffers(data: PackedByteArray, deduplication: bool)

int

append_gltf_node(gltf_node: GLTFNode, godot_scene_node: Node, parent_node_index: int)

Array[GLTFAccessor]

get_accessors() const

Variant

get_additional_data(extension_name: StringName) const

AnimationPlayer

get_animation_player(anim_player_index: int) const

int

get_animation_players_count(anim_player_index: int) const

Array[GLTFAnimation]

get_animations() const

Array[GLTFBufferView]

get_buffer_views() const

Array[GLTFCamera]

get_cameras() const

int

get_handle_binary_image() const

Array[Texture2D]

get_images() const

Array[GLTFLight]

get_lights() const

Array[Material]

get_materials() const

Array[GLTFMesh]

get_meshes() const

int

get_node_index(scene_node: Node) const

Array[GLTFNode]

get_nodes() const

Node

get_scene_node(gltf_node_index: int) const

Array[GLTFSkeleton]

get_skeletons() const

Array[GLTFSkin]

get_skins() const

Array[GLTFTextureSampler]

get_texture_samplers() const

Array[GLTFTexture]

get_textures() const

Array[String]

get_unique_animation_names() const

Array[String]

get_unique_names() const

void

set_accessors(accessors: Array[GLTFAccessor])

void

set_additional_data(extension_name: StringName, additional_data: Variant)

void

set_animations(animations: Array[GLTFAnimation])

void

set_buffer_views(buffer_views: Array[GLTFBufferView])

void

set_cameras(cameras: Array[GLTFCamera])

void

set_handle_binary_image(method: int)

void

set_images(images: Array[Texture2D])

void

set_lights(lights: Array[GLTFLight])

void

set_materials(materials: Array[Material])

void

set_meshes(meshes: Array[GLTFMesh])

void

set_nodes(nodes: Array[GLTFNode])

void

set_skeletons(skeletons: Array[GLTFSkeleton])

void

set_skins(skins: Array[GLTFSkin])

void

set_texture_samplers(texture_samplers: Array[GLTFTextureSampler])

void

set_textures(textures: Array[GLTFTexture])

void

set_unique_animation_names(unique_animation_names: Array[String])

void

set_unique_names(unique_names: Array[String])


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

enum HandleBinaryImageMode: 🔗

HandleBinaryImageMode HANDLE_BINARY_IMAGE_MODE_DISCARD_TEXTURES = 0

При импорте файла glTF со встроенными бинарными изображениями все изображения отбрасываются, и вместо них используются нетекстурированные материалы. Изображения, хранящиеся в отдельных файлах в папке res://, не затрагиваются этим; они будут использоваться так, как были импортированы Godot.

HandleBinaryImageMode HANDLE_BINARY_IMAGE_MODE_EXTRACT_TEXTURES = 1

При импорте файла glTF со встроенными бинарными изображениями, программа извлекает их и сохраняет в отдельные файлы. Это позволяет импортировать изображение с помощью импортера изображений Godot, который затем может настраивать параметры импорта пользователем, включая, при необходимости, сжатие изображения в форматы текстур VRAM.

Это позволит сохранить байты изображения точно так, как они есть, без повторного сжатия. Для форматов изображений, предоставляемых расширениями glTF, имя файла будет заканчиваться расширением файла, предоставленным методом GLTFDocumentExtension._get_image_file_extension() класса расширения.

Примечание: Эта опция доступна только в редакторе. Во время выполнения она работает так же, как HANDLE_BINARY_IMAGE_MODE_EMBED_AS_UNCOMPRESSED.

HandleBinaryImageMode HANDLE_BINARY_IMAGE_MODE_EMBED_AS_BASISU = 2

При импорте файла glTF со встроенными бинарными изображениями в сгенерированную сцену встраиваются текстуры, сжатые с помощью Basis Universal в видеопамять. Изображения, хранящиеся в виде отдельных файлов в папке res://, не затрагиваются этим; они будут использоваться в том виде, в котором были импортированы Godot.

HandleBinaryImageMode HANDLE_BINARY_IMAGE_MODE_EMBED_AS_UNCOMPRESSED = 3

При импорте файла glTF со встроенными бинарными изображениями, в сгенерированную сцену встраиваются текстуры, сжатые без потерь. Изображения, хранящиеся в отдельных файлах в папке res://, не затрагиваются этим; они будут использоваться так, как были импортированы Godot.


Константы

HANDLE_BINARY_DISCARD_TEXTURES = 0 🔗

Устарело: Use HANDLE_BINARY_IMAGE_MODE_DISCARD_TEXTURES instead.

Отбрасывает все встроенные текстуры и использует нетекстурированные материалы.

HANDLE_BINARY_EXTRACT_TEXTURES = 1 🔗

Устарело: Use HANDLE_BINARY_IMAGE_MODE_EXTRACT_TEXTURES instead.

Извлекает встроенные текстуры для повторного импорта и сжатия. Только редактор. Действует как несжатый во время выполнения.

HANDLE_BINARY_EMBED_AS_BASISU = 2 🔗

Устарело: Use HANDLE_BINARY_IMAGE_MODE_EMBED_AS_BASISU instead.

Встраивает текстуры VRAM, сжатые с помощью Basis Universal, в сгенерированную сцену.

HANDLE_BINARY_EMBED_AS_UNCOMPRESSED = 3 🔗

Устарело: Use HANDLE_BINARY_IMAGE_MODE_EMBED_AS_UNCOMPRESSED instead.

Встраивает текстуры, сжатые без потерь, в сгенерированную сцену, соответствуя старому поведению.


Описания свойств

float bake_fps = 30.0 🔗

  • void set_bake_fps(value: float)

  • float get_bake_fps()

Частота кадров (FPS) анимации для импорта или экспорта.


String base_path = "" 🔗

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


Array[PackedByteArray] buffers = [] 🔗

There is currently no description for this property. Please help us by contributing one!


Строка авторских прав в заголовке актива файла glTF. Устанавливается во время импорта, если присутствует, и экспорта, если не пусто. Для получения дополнительной информации см. документацию по заголовку актива glTF.


bool create_animations = true 🔗

  • void set_create_animations(value: bool)

  • bool get_create_animations()

There is currently no description for this property. Please help us by contributing one!


String filename = "" 🔗

Имя файла, связанное с этими данными glTF. Если он заканчивается на .gltf, это текстовый glTF, в противном случае это двоичный GLB. Это будет установлено во время импорта при добавлении из файла и будет установлено во время экспорта при записи в файл. При записи в буфер это будет пустая строка.


PackedByteArray glb_data = PackedByteArray() 🔗

Двоичный буфер, прикрепленный к файлу .glb.

Note: The returned array is copied and any changes to it will not update the original property value. See PackedByteArray for more details.


HandleBinaryImageMode handle_binary_image_mode = 1 🔗

При импорте файла glTF с неимпортированными необработанными бинарными изображениями, встроенными в бинарные буферы BLOB-объектов, в URI данных или в отдельные файлы, не импортированные Godot, это свойство управляет обработкой изображений. Изображения могут быть отброшены, сохранены как отдельные файлы или встроены в сцену с потерями или без потерь. См. HandleBinaryImageMode для получения информации о параметрах.

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


bool import_as_skeleton_bones = false 🔗

  • void set_import_as_skeleton_bones(value: bool)

  • bool get_import_as_skeleton_bones()

Если true, то все узлы GLTF в документе будут костями одного узла Godot Skeleton 3D.


Dictionary json = {} 🔗

Исходный необработанный документ JSON, соответствующий этому GLTFState.


int major_version = 0 🔗

  • void set_major_version(value: int)

  • int get_major_version()

There is currently no description for this property. Please help us by contributing one!


int minor_version = 0 🔗

  • void set_minor_version(value: int)

  • int get_minor_version()

There is currently no description for this property. Please help us by contributing one!


PackedInt32Array root_nodes = PackedInt32Array() 🔗

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

Note: The returned array is copied and any changes to it will not update the original property value. See PackedInt32Array for more details.


String scene_name = "" 🔗

  • void set_scene_name(value: String)

  • String get_scene_name()

Имя сцены. При импорте, если не указано, это будет имя файла. При экспорте, если указано, имя сцены будет сохранено в файле glTF.


bool use_named_skin_binds = false 🔗

  • void set_use_named_skin_binds(value: bool)

  • bool get_use_named_skin_binds()

There is currently no description for this property. Please help us by contributing one!


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

void add_used_extension(extension_name: String, required: bool) 🔗

Добавляет расширение к списку расширений, используемых этим файлом glTF во время сериализации. Если required равен true, расширение также будет добавлено в список требуемых расширений. Не запускайте это в GLTFDocumentExtension._export_post(), так как на этом этапе слишком поздно добавлять расширения. Окончательный список сортируется в алфавитном порядке.


int append_data_to_buffers(data: PackedByteArray, deduplication: bool) 🔗

Добавляет заданный массив байтов data к буферам и создает для него GLTFBufferView. Возвращается индекс назначения GLTFBufferView. Если deduplication равен true, буферы сначала ищутся на наличие дубликатов данных, в противном случае всегда добавляются новые байты.


int append_gltf_node(gltf_node: GLTFNode, godot_scene_node: Node, parent_node_index: int) 🔗

Добавляет заданный GLTFNode к состоянию и возвращает его новый индекс. Это можно использовать для экспорта одного узла Godot как нескольких узлов glTF или для внедрения новых узлов glTF во время импорта. При импорте это должно быть вызвано до того, как GLTFDocumentExtension._generate_scene_node() завершится для родительского узла. При экспорте это должно быть вызвано до того, как GLTFDocumentExtension._export_node() запустится для родительского узла.

Параметр godot_scene_node — это узел сцены Godot, который соответствует этому узлу glTF. Настоятельно рекомендуется установить его на допустимый узел, но он может быть null, если нет соответствующего узла сцены Godot. Один узел сцены Godot может использоваться для нескольких узлов glTF, поэтому при экспорте нескольких узлов glTF для одного узла сцены Godot используйте один и тот же узел сцены Godot для каждого.

Параметр parent_node_index — это индекс родительского GLTFNode в состоянии. Если -1, узел будет корневым, в противном случае новый узел будет добавлен в список дочерних узлов родителя. Индекс также будет записан в свойство GLTFNode.parent нового узла.


Array[GLTFAccessor] get_accessors() const 🔗

There is currently no description for this method. Please help us by contributing one!


Variant get_additional_data(extension_name: StringName) const 🔗

Получает дополнительные произвольные данные в этом экземпляре GLTFState. Это можно использовать для хранения данных о состоянии каждого файла в классах GLTFDocumentExtension, что важно, поскольку они не имеют состояния.

Аргументом должно быть имя GLTFDocumentExtension (не обязательно совпадать с именем расширения в файле glTF), а возвращаемое значение может быть любым, которое вы задали. Если ничего не было задано, возвращаемое значение равно null.


AnimationPlayer get_animation_player(anim_player_index: int) const 🔗

Возвращает узел AnimationPlayer с указанным индексом. Эти узлы используются только в процессе экспорта при конвертации узлов Godot AnimationPlayer в анимации glTF.


int get_animation_players_count(anim_player_index: int) const 🔗

Возвращает количество узлов AnimationPlayer в этом GLTFState. Эти узлы используются только в процессе экспорта при преобразовании узлов Godot AnimationPlayer в анимации glTF.


Array[GLTFAnimation] get_animations() const 🔗

Возвращает массив всех GLTFAnimation в файле glTF. При импорте они будут сгенерированы как анимации в узле AnimationPlayer. При экспорте они будут сгенерированы из узлов Godot AnimationPlayer.


Array[GLTFBufferView] get_buffer_views() const 🔗

There is currently no description for this method. Please help us by contributing one!


Array[GLTFCamera] get_cameras() const 🔗

Возвращает массив всех GLTFCamera в файле glTF. Это камеры, на которые ссылается индекс GLTFNode.camera.


int get_handle_binary_image() const 🔗

Устарело: Use handle_binary_image_mode instead.

Устаревший нетипизированный псевдоним для handle_binary_image_mode. При импорте файла glTF с неимпортированными необработанными бинарными изображениями, встроенными в бинарные буферы BLOB-объектов, в URI данных или в отдельные файлы, не импортированные Godot, этот параметр управляет обработкой изображений.


Array[Texture2D] get_images() const 🔗

Получает изображения файла glTF как массив Texture2D. Это изображения, на которые ссылается индекс GLTFTexture.src_image.


Array[GLTFLight] get_lights() const 🔗

Возвращает массив всех GLTFLight в файле glTF. Это источники света, на которые ссылается индекс GLTFNode.light.


Array[Material] get_materials() const 🔗

There is currently no description for this method. Please help us by contributing one!


Array[GLTFMesh] get_meshes() const 🔗

Возвращает массив всех GLTFMesh-ов в файле glTF. Это сетки, на которые ссылается индекс GLTFNode.mesh.


int get_node_index(scene_node: Node) const 🔗

Возвращает индекс GLTFNode, соответствующий этому узлу сцены Godot. Это обратный метод get_scene_node(). Полезно во время процесса экспорта.

Примечание: Не каждый узел сцены Godot будет иметь соответствующий GLTFNode, и не каждый GLTFNode будет иметь сгенерированный узел сцены. Если для этого узла сцены нет индекса GLTFNode, возвращается -1.


Array[GLTFNode] get_nodes() const 🔗

Возвращает массив всех GLTFNode в файле glTF. Это узлы, на которые ссылаются GLTFNode.children и root_nodes. Сюда входят узлы, которые не могут быть сгенерированы в сцене Godot, или узлы, которые могут генерировать несколько узлов сцены Godot.


Node get_scene_node(gltf_node_index: int) const 🔗

Возвращает узел сцены Godot, который соответствует тому же индексу, что и GLTFNode, из которого он был сгенерирован. Это обратный метод get_node_index(). Полезно во время процесса импорта.

Примечание: Не каждый GLTFNode будет иметь сгенерированный узел сцены, и не каждый сгенерированный узел сцены будет иметь соответствующий GLTFNode. Если для этого индекса GLTFNode нет узла сцены, возвращается null.


Array[GLTFSkeleton] get_skeletons() const 🔗

Возвращает массив всех GLTFSkeleton в файле glTF. Это скелеты, на которые ссылается индекс GLTFNode.skeleton.


Array[GLTFSkin] get_skins() const 🔗

Возвращает массив всех GLTFSkin в файле glTF. Это скины, на которые ссылается индекс GLTFNode.skin.


Array[GLTFTextureSampler] get_texture_samplers() const 🔗

Извлекает массив сэмплеров текстур, которые используются текстурами, содержащимися в glTF.


Array[GLTFTexture] get_textures() const 🔗

There is currently no description for this method. Please help us by contributing one!


Array[String] get_unique_animation_names() const 🔗

Возвращает массив уникальных имен анимаций. Используется только в процессе импорта.


Array[String] get_unique_names() const 🔗

Возвращает массив уникальных имен узлов. Используется как в процессе импорта, так и в процессе экспорта.


void set_accessors(accessors: Array[GLTFAccessor]) 🔗

There is currently no description for this method. Please help us by contributing one!


void set_additional_data(extension_name: StringName, additional_data: Variant) 🔗

Устанавливает дополнительные произвольные данные в этом экземпляре GLTFState. Это можно использовать для хранения данных о состоянии каждого файла в классах GLTFDocumentExtension, что важно, поскольку они не имеют состояния.

Первым аргументом должно быть имя GLTFDocumentExtension (не обязательно совпадать с именем расширения в файле glTF), а вторым аргументом может быть все, что угодно.


void set_animations(animations: Array[GLTFAnimation]) 🔗

Устанавливает GLTFAnimation-ы в состояние. При импорте они будут сгенерированы как анимации в узле AnimationPlayer. При экспорте они будут сгенерированы из узлов Godot AnimationPlayer.


void set_buffer_views(buffer_views: Array[GLTFBufferView]) 🔗

There is currently no description for this method. Please help us by contributing one!


void set_cameras(cameras: Array[GLTFCamera]) 🔗

Устанавливает GLTFCamera-ы в состояние. Это камеры, на которые ссылается индекс GLTFNode.camera.


void set_handle_binary_image(method: int) 🔗

Устарело: Use handle_binary_image_mode instead.

Устаревший нетипизированный псевдоним для handle_binary_image_mode. При импорте файла glTF с неимпортированными необработанными бинарными изображениями, встроенными в бинарные буферы BLOB-объектов, в URI данных или в отдельные файлы, не импортированные Godot, этот параметр управляет обработкой изображений.


void set_images(images: Array[Texture2D]) 🔗

Устанавливает изображения в состояние, сохраненное как массив Texture2D. Это может быть использовано во время экспорта. Это изображения, на которые ссылается индекс GLTFTexture.src_image.


void set_lights(lights: Array[GLTFLight]) 🔗

Устанавливает GLTFLight-ы в состояние. Это источники света, на которые ссылается индекс GLTFNode.light.


void set_materials(materials: Array[Material]) 🔗

There is currently no description for this method. Please help us by contributing one!


void set_meshes(meshes: Array[GLTFMesh]) 🔗

Устанавливает GLTFMesh-ы в состоянии. Это сетки, на которые ссылается индекс GLTFNode.mesh.


void set_nodes(nodes: Array[GLTFNode]) 🔗

Устанавливает GLTFNode в состояние. Это узлы, на которые ссылаются GLTFNode.children и root_nodes. Некоторые из установленных здесь узлов могут не генерироваться в сцене Godot или могут генерировать несколько узлов сцены Godot.


void set_skeletons(skeletons: Array[GLTFSkeleton]) 🔗

Устанавливает GLTFSkeleton-ы в состоянии. Это скелеты, на которые ссылается индекс GLTFNode.skeleton.


void set_skins(skins: Array[GLTFSkin]) 🔗

Устанавливает GLTFSkin-ы в состояние. Это скины, на которые ссылается индекс GLTFNode.skin.


void set_texture_samplers(texture_samplers: Array[GLTFTextureSampler]) 🔗

Задает массив сэмплеров текстур, которые используются текстурами, содержащимися в glTF.


void set_textures(textures: Array[GLTFTexture]) 🔗

There is currently no description for this method. Please help us by contributing one!


void set_unique_animation_names(unique_animation_names: Array[String]) 🔗

Устанавливает уникальные имена анимаций в состоянии. Используется только в процессе импорта.


void set_unique_names(unique_names: Array[String]) 🔗

Устанавливает уникальные имена узлов в состоянии. Используется как в процессе импорта, так и в процессе экспорта.