Документация Help

Дескриптор 3d модели

Ссылка на дескриптор модели приходит из основного API вместе со списком статусов.

Содержимое дескриптора:

Поле

Тип

Назначение

model

строка

Имя объекта (в построении 3d модели не участвует)

id

число

Внутренний номер (в построении 3d модели не участвует

version

число

Версия, увеличивается на 1 при каждом редактировании содержимого

files

список

Список всех файлов, относящихся к дескриптору. Сюда относятся как фрагменты, из которых строится изображение, так и файлы скриптов

scripts

список

Список скриптов используемых для генерации изображения

colors

список

Список предварительно заданных целевых цветов объекта


Список "files"

Пример:

{ "files": [ { "key": "back-light-on+trunk", "url": "https://ssss/models_ext/426/back-light-on%2Btrunk.png", "hash": "7979d88c8c5623ae77f942fbcccb22fc1fb3bff0651b0040f56e07c187dc9642" }, ] }

Состоит из объектов, описывающих ресурсы, необходимые для генераци 3d модели.

Поле

Тип

Назначение

key

строка

Ключ. По этому ключу скрипт ссылается на ресурсы.

url

строка

Ссылка на ресурс для загрузки.

hash

строка

Хеш содержимого ресурса.


Список "scripts"

Пример:

{ "scripts": [ { "minRuntime": 1, "script": "carbuilder" } ] }

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

Код, производящий разбор дескриптора, зная версию спецификации которую он поддерживает сам, определяет подходящий ему скрипт, используя поле minRuntime.

Логика использования поля minRuntime следующая:

  • выбираются объекты у которых minRuntime <= <реализуемая-кодом-версия-спецификации>

  • среди оставшихся выбирается объект с максимальным значением поля minRuntime

Пример из МП для Android

val script = data.scripts.filter { it.minRuntime <= Runtime.RUNTIME_VERSION }.maxByOrNull { it.minRuntime } ?: return

Поле script найденного в этом списке объекта будет ключом в списке files.

Список "colors"

Пример:

{ "colors": [ { "id": "black", "name": [ { "lang": "ru", "name": "Черный" } ], "color": { "hue": 220, "saturation": 0, "lightness": 0 } } ] }

Список определяет предварительно заданные цвета 3d модели для использования в UI выбора цвета.

Last modified: 30 декабря 2023