Skip to main content

SceneLib API

В приложении предоставлена возможность взаимодействия с модулем SceneLib с помощью программного интерфейса (API), что позволяет управлять процессами и оптимизировать их. Инструментарий представлен на таких языках программирования как Python, C++ и LuaScript и может использоваться для управления графом функций, создания и модификации локаций, а также редактирования атрибутов.

SceneLib API, представленное на разных языках обладает рядом особенностей:

  • C++ API предоставляет максимально широкий инструментарий, который позволяет управлять вычислением локаций, изменять атрибуты, создавать и редактировать локации, изменять интересы клиента, запускать или останавливать процесс обработки данных локаций и т.д.
  • Python API реализован с помощью привязки методов Python к C++ API таким образом предоставляя весь инструментарий API на языке Python.
  • LuaScript API данный язык используется как вспомогательный, методы, представленные в рамках API позволяют управлять атрибутами и CookInterface. Особенностью является возможность использовать Lua-скрипты в составе функционального графа с помощью узла SceneLibLuaScript

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

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

API предоставляет пользователю возможность управлять локациями и их атрибутами следующим образом:

Создание дочерних локаций: Пользователь может создавать дочерние локации для уже существующих. Что необходимо для организации иерархии данных, динамического создания новых локаций и связывания их с родительскими.

Удаление локаций: Пользователь может удалять как текущие, так и дочерние локации. Данная функция используется для реорганизации проекта или очистки неиспользуемых данных.

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

Получение значений атрибутов входного узла: Пользователь может использовать API для получения значений атрибутов входного узла. Это может использоваться при необходимости отладки различных функций и значений атрибутов.

Подробное описание функционала SceneLib API для C++ и Python представлено в API Reference программы.

Описание SceneLib API для LuaScript представлено в следующих разделах:

Клиенты SceneLib

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

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

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

Атрибуты SceneLib

Атрибуты (Attributes) являются базовыми объектами для хранения данных в SceneLib. Функции графа вычислений принимают атрибуты в качестве аргументов, каждый объект сцены также имеет собственный набор атрибутов для хранения данных о геометрии, материалах, матрицах трансформации и т.д. Таким образом, вся информация о сцене представлена атрибутами, привязанными к локациям в иерархии графа сцены.

Атрибуты могут хранить данные примитивных типов - int, float, double, string, а также структурированные данные в виде кортежей (tuples) и массивов (arrays).

Каждый атрибут базового типа также содержит массив временных выборок (samples), который позволяет хранить значения, изменяющиеся во времени.

Важной особенностью является иммутабельность (неизменяемость) атрибутов - после создания их значение не может быть изменено. Для обновления используются дополнительные узлы, которые создают новый атрибут на основе существующего.

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

Для иерархической организации данных используются групповые атрибуты (GroupAttributes), которые содержат именованный набор дочерних атрибутов.

Редактирование атрибутов в интерфейсе SceneLib осуществляется с помощью Attribute Editor - специальной панели, позволяющей просматривать и модифицировать значения атрибутов выделенных объектов сцены.