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 - специальной панели, позволяющей просматривать и модифицировать значения атрибутов выделенных объектов сцены.