GltfDocumentExtension
Класс расширения GLTFDocument.
Класс расширения GltfDocument.
Расширяет функциональность класса GltfDocument, позволяя выполнять произвольный код на различных этапах импорта или экспорта glTF.
Для использования создайте новый класс, расширяющий GLTFDocumentExtension, переопределите необходимые методы, создайте экземпляр вашего класса и зарегистрируйте его с помощью GltfDocument.RegisterGltfDocumentExtension.
Примечание: Все классы GLTFDocumentExtension дублируются в начале процесса импорта или экспорта. За исключением значений конфигурации, эти классы должны быть без состояния для корректной работы. Если вам необходимо хранить данные, используйте методы set_additional_data и get_additional_data в GltfState или GltfNode.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
GltfDocumentExtensionКонструктор
public GltfDocumentExtension();Методы24
_ConvertSceneNodevoid
public virtual void _ConvertSceneNode(GltfState state, GltfNode gltfNode, Entity sceneNode);Часть процесса экспорта. Этот метод запускается после GltfDocumentExtension._ExportPreflight и до GltfDocumentExtension._ExportPostConvert.
Запускается при конвертации данных из узла сцены Reckfell. Этот метод можно использовать для обработки данных узла сцены Reckfell в формат, который может использоваться GltfDocumentExtension._ExportNode.
| Имя | Тип | По умолчанию |
|---|---|---|
state | GltfState | — |
gltfNode | GltfNode | — |
sceneNode | Entity | — |
_ExportGetPropertyListReckfell.Collections.Array<Reckfell.Collections.Dictionary>
public virtual Reckfell.Collections.Array<Reckfell.Collections.Dictionary> _ExportGetPropertyList(Entity rootEntity);Этот метод применяется до начала экспортного процесса. GltfDocumentExtension._ExportPreflight при экспорте сцены из редактора, или в других ситуациях она вообще не может быть запущена.
В отличие от остальных методов экспорта, это не происходит при вызове а GltfDocument"применяемые методы экспорта в последовательном порядке со всем остальным, но, скорее, прогоняются до того, как происходит весь этот процесс, что позволяет конфигурации происходить заранее, возможно, за несколько минут или часов до начала GltfDocumentExtension._ExportPreflight. Это позволяет расшириться, чтобы определить, какие свойства будут показываться в диалоговом режиме экспорта редактора на основе содержания сцены, скрывая любые настройки, которые не имеют отношения к этой сцене. root_node параметр может быть null, в этом случае должны быть указаны все свойства.
| Имя | Тип | По умолчанию |
|---|---|---|
rootEntity | Entity | — |
Reckfell.Collections.Array<Reckfell.Collections.Dictionary>_ExportNodeError
public virtual Error _ExportNode(GltfState state, GltfNode gltfNode, Reckfell.Collections.Dictionary json, Entity node);Часть процесса экспорта. Этот метод запускается после GltfDocumentExtension._GetSaveableImageFormats и до GltfDocumentExtension._ExportPost. Если этот GltfDocumentExtension используется для экспорта изображений, он запускается после GltfDocumentExtension._SerializeTextureJson.
Этот метод можно использовать для изменения окончательного JSON каждого узла. Данные должны быть в первую очередь сохранены в gltf_node до сериализации JSON, но исходный Entity Reckfell также предоставляется, если он доступен. node может быть null, если он недоступен, например, при экспорте данных glTF, не сгенерированных из сцены Reckfell.
| Имя | Тип | По умолчанию |
|---|---|---|
state | GltfState | — |
gltfNode | GltfNode | — |
json | Reckfell.Collections.Dictionary | — |
node | Entity | — |
Error_ExportObjectModelPropertyGltfObjectModelProperty
public virtual GltfObjectModelProperty _ExportObjectModelProperty(GltfState state, EntityPath entityPath, Entity reckfellNode, int gltfNodeIndex, ReckfellObject targetObject, int targetDepth);Часть процесса экспорта. Позволяет классам GLTFDocumentExtension предоставлять сопоставления для свойств узлов в дереве сцены Reckfell, указателям JSON на свойства glTF, как определено объектной моделью glTF.
Возвращает экземпляр GltfObjectModelProperty, который определяет, как свойство должно быть сопоставлено. Если ваше расширение не может обработать свойство, верните null или экземпляр без каких-либо указателей JSON (см. GltfObjectModelProperty.HasJsonPointers). Вам следует использовать GltfObjectModelProperty.SetTypes для установки типов и задать указатель(и) JSON с помощью свойства GltfObjectModelProperty.JsonPointers.
Параметры предоставляют контекст для свойства, включая EntityPath, узел Reckfell, индекс узла GLTF и целевой объект. target_object будет равен reckfell_node, если не может быть найден ни один подобъект, в противном случае он будет указывать на подобъект. Например, если путь ^"A/B/C/MeshInstance3D:mesh:surface_0/material:emission_intensity", он получит узел, затем сетку, а затем материал, поэтому target_object будет ресурсом Material, а target_depth будет равен 2, поскольку для достижения цели было пройдено 2 уровня.
| Имя | Тип | По умолчанию |
|---|---|---|
state | GltfState | — |
entityPath | EntityPath | — |
reckfellNode | Entity | — |
gltfNodeIndex | int | — |
targetObject | ReckfellObject | — |
targetDepth | int | — |
GltfObjectModelProperty_ExportPostError
public virtual Error _ExportPost(GltfState state);Часть процесса экспорта. Этот метод запускается последним, после всех остальных частей процесса экспорта. Этот метод можно использовать для изменения окончательного JSON сгенерированного файла glTF.
| Имя | Тип | По умолчанию |
|---|---|---|
state | GltfState | — |
Error_ExportPostConvertError
public virtual Error _ExportPostConvert(GltfState state, Entity root);Часть процесса экспорта. Этот метод запускается после GltfDocumentExtension._ConvertSceneNode и перед GltfDocumentExtension._ExportPreserialize.
Этот метод можно использовать для изменения структур данных преобразованного узла перед сериализацией с любыми дополнительными данными из дерева сцены.
| Имя | Тип | По умолчанию |
|---|---|---|
state | GltfState | — |
root | Entity | — |
Error_ExportPreflightError
public virtual Error _ExportPreflight(GltfState state, Entity root);Часть процесса экспорта. Этот метод запускается первым, до всех остальных частей процесса экспорта.
Возвращаемое значение используется для определения того, следует ли использовать этот экземпляр GltfDocumentExtension для экспорта заданного файла glTF. Если OK, экспорт будет использовать этот экземпляр GltfDocumentExtension. Если не переопределено, возвращается OK.
| Имя | Тип | По умолчанию |
|---|---|---|
state | GltfState | — |
root | Entity | — |
Error_ExportPreserializeError
public virtual Error _ExportPreserialize(GltfState state);Часть процесса экспорта. Этот метод запускается после GltfDocumentExtension._ExportPostConvert и до GltfDocumentExtension._GetSaveableImageFormats.
Этот метод можно использовать для изменения состояния перед выполнением сериализации. Он запускается каждый раз при генерации буфера с помощью GltfDocument.GenerateBuffer или записи в файловую систему с помощью GltfDocument.WriteToFilesystem.
####генерат сцена_ узел
| Имя | Тип | По умолчанию |
|---|---|---|
state | GltfState | — |
Error_GenerateSceneNodeEntity3D
public virtual Entity3D _GenerateSceneNode(GltfState state, GltfNode gltfNode, Entity sceneParent);Часть процесса импорта. Этот метод запускается после GltfDocumentExtension._ImportPreGenerate и до GltfDocumentExtension._ImportNode.
Запускается при генерации узла сцены Reckfell из GLTFNode. Возвращаемый узел будет добавлен в дерево сцены. На этом этапе можно сгенерировать несколько узлов, если они добавляются как дочерние элементы возвращаемого узла.
Примечание: Параметр scene_parent может быть null, если это единственный корневой узел.
#####get_image_file
| Имя | Тип | По умолчанию |
|---|---|---|
state | GltfState | — |
gltfNode | GltfNode | — |
sceneParent | Entity | — |
Entity3D_GetImageFileExtensionstring
public virtual string _GetImageFileExtension();Возвращает расширение файла, используемое для сохранения данных изображения, например, ".png". Если определено, когда это расширение используется для обработки изображений, и изображения сохраняются в отдельный файл, байты изображения будут скопированы в файл с этим расширением. Если это задано, должен быть класс ResourceImporter, способный импортировать файл. Если не определено или пусто, Reckfell сохранит изображение в файл PNG.
######_сохранимый_имаг_формат
string_GetSaveableImageFormatsstring[]
public virtual string[] _GetSaveableImageFormats();Часть процесса экспорта. Этот метод запускается после GltfDocumentExtension._ConvertSceneNode и до GltfDocumentExtension._ExportNode.
Возвращает массив форматов изображений, которые могут быть сохранены/экспортированы этим расширением. Это расширение будет выбрано в качестве экспортера изображений, только если GltfDocument.ImageFormat GltfDocument находится в этом массиве. Если этот GltfDocumentExtension выбран в качестве экспортера изображений, следующим будет запущен один из методов GltfDocumentExtension._SaveImageAtPath или GltfDocumentExtension._SerializeImageToBytes, в противном случае следующим будет запущен GltfDocumentExtension._ExportNode. Если имя формата содержит "Lossy", будет отображен ползунок качества с потерями.
########получение_поддержка_
string[]_GetSupportedExtensionsstring[]
public virtual string[] _GetSupportedExtensions();Часть процесса импорта. Этот метод запускается после GltfDocumentExtension._ImportPreflight и до GltfDocumentExtension._ParseNodeExtensions.
Возвращает массив расширений glTF, поддерживаемых этим классом GLTFDocumentExtension. Используется для проверки возможности загрузки файла glTF с требуемыми расширениями.
string[]_ImportNodeError
public virtual Error _ImportNode(GltfState state, GltfNode gltfNode, Reckfell.Collections.Dictionary json, Entity node);Часть процесса импорта. Этот метод запускается после GltfDocumentExtension._GenerateSceneNode и перед GltfDocumentExtension._ImportPost.
Этот метод можно использовать для внесения изменений в каждый из сгенерированных узлов сцены Reckfell.
| Имя | Тип | По умолчанию |
|---|---|---|
state | GltfState | — |
gltfNode | GltfNode | — |
json | Reckfell.Collections.Dictionary | — |
node | Entity | — |
Error_ImportObjectModelPropertyGltfObjectModelProperty
public virtual GltfObjectModelProperty _ImportObjectModelProperty(GltfState state, string[] splitJsonPointer, Reckfell.Collections.Array<EntityPath> partialPaths);Часть процесса импорта. GLTFDocumentExtension классов для составления карт JSON Показания на свойства glTF, как они определены в модели объекта gITF, на свойства узлов в сценном дереве Reckfell.
Возвращается a GltfObjectModelProperty Если ваше расширение не может справиться с этим имуществом, возвращайтесь. null или случай без каких-либо строений (см. GltfObjectModelProperty.HasEntityPathsВы должны использовать GltfObjectModelProperty.SetTypes - устанавливать типы и GltfObjectModelProperty.AppendPathToProperty функция полезна для большинства простых случаев.
Во многих случаях partial_paths будет содержать начало пути, что позволит ему завершить путь. /nodes/3/extensions/MY_ext/prop, Reckfell даст тебе EntityPath который ведет к узлу 3, так что GLTFDocumentExtension класс должен решить только последний MY_ext/prop В этом примере расширение должно проверяться split.size() > 4 and split[0] == "nodes" and split[2] == "extensions" and split[3] == "MY_ext" в начале функции для проверки JSON Применяется указатель, и тогда он может использовать partial_paths и обрабатывает split[4].
| Имя | Тип | По умолчанию |
|---|---|---|
state | GltfState | — |
splitJsonPointer | string[] | — |
partialPaths | Reckfell.Collections.Array<EntityPath> | — |
GltfObjectModelProperty_ImportPostError
public virtual Error _ImportPost(GltfState state, Entity root);Часть процесса импорта. Этот метод запускается последним, после всех остальных частей процесса импорта. Этот метод можно использовать для изменения финальной сцены Reckfell, созданной в процессе импорта.
| Имя | Тип | По умолчанию |
|---|---|---|
state | GltfState | — |
root | Entity | — |
Error_ImportPostParseError
public virtual Error _ImportPostParse(GltfState state);Часть процесса импорта. Этот метод запускается после GltfDocumentExtension._ParseNodeExtensions и перед GltfDocumentExtension._ImportPreGenerate.
Этот метод можно использовать для изменения любых данных, импортированных до сих пор после анализа каждого узла, но до генерации сцены или любого из ее узлов.
| Имя | Тип | По умолчанию |
|---|---|---|
state | GltfState | — |
Error_ImportPreGenerateError
public virtual Error _ImportPreGenerate(GltfState state);Часть процесса импорта. Этот метод запускается после GltfDocumentExtension._ImportPostParse и перед GltfDocumentExtension._GenerateSceneNode.
Этот метод можно использовать для изменения или чтения из любой обработанной структуры данных перед генерацией узлов и последующим запуском последнего шага импорта по узлам.
| Имя | Тип | По умолчанию |
|---|---|---|
state | GltfState | — |
Error_ImportPreflightError
public virtual Error _ImportPreflight(GltfState state, string[] extensions);Часть процесса импорта. Этот метод запускается первым, до всех остальных частей процесса импорта.
Возвращаемое значение используется для определения того, следует ли использовать этот экземпляр GltfDocumentExtension для импорта заданного файла glTF. Если OK, импорт будет использовать этот экземпляр GltfDocumentExtension. Если не переопределено, возвращается OK.
| Имя | Тип | По умолчанию |
|---|---|---|
state | GltfState | — |
extensions | string[] | — |
Error_ParseImageDataError
public virtual Error _ParseImageData(GltfState state, byte[] imageData, string mimeType, Image retImage);Часть процесса импорта. Этот метод запускается после GltfDocumentExtension._ParseNodeExtensions и до GltfDocumentExtension._ParseTextureJson.
Запускается при разборе данных изображения из файла glTF. Данные могут быть получены из отдельного файла, URI или буфера, а затем переданы как массив байтов.
| Имя | Тип | По умолчанию |
|---|---|---|
state | GltfState | — |
imageData | byte[] | — |
mimeType | string | — |
retImage | Image | — |
Error_ParseNodeExtensionsError
public virtual Error _ParseNodeExtensions(GltfState state, GltfNode gltfNode, Reckfell.Collections.Dictionary extensions);Часть процесса импорта. Этот метод запускается после GltfDocumentExtension._GetSupportedExtensions и до GltfDocumentExtension._ImportPostParse.
Запускается при разборе расширений узлов GLTFNode. Этот метод можно использовать для обработки данных расширения JSON в формат, который может использоваться GltfDocumentExtension._GenerateSceneNode. Возвращаемое значение должно быть членом перечисления Error.
####Парсе_текстур_Json
| Имя | Тип | По умолчанию |
|---|---|---|
state | GltfState | — |
gltfNode | GltfNode | — |
extensions | Reckfell.Collections.Dictionary | — |
Error_ParseTextureJsonError
public virtual Error _ParseTextureJson(GltfState state, Reckfell.Collections.Dictionary textureJson, GltfTexture retGltfTexture);Часть процесса импорта. Этот метод запускается после GltfDocumentExtension._ParseImageData и до GltfDocumentExtension._GenerateSceneNode.
Запускается при разборе текстуры JSON из массива текстур glTF. Это можно использовать для установки индекса исходного изображения для использования в качестве текстуры.
| Имя | Тип | По умолчанию |
|---|---|---|
state | GltfState | — |
textureJson | Reckfell.Collections.Dictionary | — |
retGltfTexture | GltfTexture | — |
Error_SaveImageAtPathError
public virtual Error _SaveImageAtPath(GltfState state, Image image, string filePath, string imageFormat, float lossyQuality);Часть процесса экспорта. Этот метод запускается после GltfDocumentExtension._GetSaveableImageFormats и до GltfDocumentExtension._SerializeTextureJson.
Этот метод запускается при сохранении изображений отдельно от файла glTF. Если изображения встроены, вместо него запускается GltfDocumentExtension._SerializeImageToBytes. Обратите внимание, что эти методы запускаются только тогда, когда в качестве экспортера изображений выбрано GltfDocumentExtension.
| Имя | Тип | По умолчанию |
|---|---|---|
state | GltfState | — |
image | Image | — |
filePath | string | — |
imageFormat | string | — |
lossyQuality | float | — |
Error_SerializeImageToBytesbyte[]
public virtual byte[] _SerializeImageToBytes(GltfState state, Image image, Reckfell.Collections.Dictionary imageDict, string imageFormat, float lossyQuality);Часть процесса экспорта. Этот метод запускается после GltfDocumentExtension._GetSaveableImageFormats и до GltfDocumentExtension._SerializeTextureJson.
Этот метод запускается при встраивании изображений в файл glTF. Когда изображения сохраняются отдельно, вместо него запускается GltfDocumentExtension._SaveImageAtPath. Обратите внимание, что эти методы запускаются только тогда, когда в качестве экспортера изображений выбрано GltfDocumentExtension.
Этот метод должен задать тип MIME изображения в image_dict с ключом "mimeType". Например, для изображения PNG он будет установлен на "image/png". Возвращаемое значение должно быть byte[], содержащим данные изображения.
| Имя | Тип | По умолчанию |
|---|---|---|
state | GltfState | — |
image | Image | — |
imageDict | Reckfell.Collections.Dictionary | — |
imageFormat | string | — |
lossyQuality | float | — |
byte[]_SerializeTextureJsonError
public virtual Error _SerializeTextureJson(GltfState state, Reckfell.Collections.Dictionary textureJson, GltfTexture gltfTexture, string imageFormat);Часть процесса экспорта. Этот метод запускается после GltfDocumentExtension._SaveImageAtPath или GltfDocumentExtension._SerializeImageToBytes и перед GltfDocumentExtension._ExportNode. Обратите внимание, что этот метод запускается только тогда, когда этот GltfDocumentExtension выбран в качестве экспортера изображений.
Этот метод можно использовать для настройки расширений для текстуры JSON путем редактирования texture_json. Расширение также должно быть добавлено как используемое расширение с GltfState.AddUsedExtension, обязательно установите required на true, если вы не предоставляете запасной вариант.
| Имя | Тип | По умолчанию |
|---|---|---|
state | GltfState | — |
textureJson | Reckfell.Collections.Dictionary | — |
gltfTexture | GltfTexture | — |
imageFormat | string | — |
Error