Skip to main content

Модуль SceneLib

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

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

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

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

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

В программе реализована система трансляции данных из USD в формат UsdSceneLib, который обрабатывается графом вычислений SceneLib с помощью включенной в нее системы UsdSceneLibPrim Type. Таким образом, изменения данных SceneLib локаций (например, редактирование значений атрибутов, связей между узлами графа или создание и удаление узлов) будут отражены в USD.

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

Использование графа функций позволяет последовательно управлять визуализацией сцены с помощью фильтров, которые модифицируют атрибуты, добавляют/удаляют функции или меняют топологию объектов.

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

Граф SceneLib

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

Граф функций SceneLib поддерживает использование рекурсивных процедурных элементов, что дает возможность рассчитывать данные при необходимости, используя отложенное вычисление локаций. Преимущество данного подхода заключается в эффективном и оптимизированном использовании ресурсов. Благодаря отложенному вычислению, локации (данные) вычисляются и загружаются только в тот момент, когда они необходимы пользователю, а не заранее.

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

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

Начало работы с модулем SceneLib

Работа с узлами в графе вычислений SceneLib

Работа с модулем SceneLib осуществляется посредством панелей Node Editor, Scene Graph, Attribute Editor и Attribute View.

Граф вычислений позволяет представлять для визуализации локации в различных комбинациях и видах. Локации в графе вычислений SceneLib могут обладать многоуровневой структурой.

Локации учитываются при вычислении данных сцены по мере раскрытия иерархического древа в панели Scene Graph. Панель Scene Graph позволяет управлять интересами клиента - системой, служащей для управления отображениями данных, которые учитываются при обработке сцены. Данная панель представляет собой графический интерфейс для управления интересами клиента в сцене, позволяя оптимизировать вычисления. Посредством представленных манипуляторов, пользователь может управлять раскрытием иерархии сцены, что влияет на то, какие из локаций вычисляются.

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

Узлы могут соединяться с помощью с помощью указания пути в атрибуте in.

Отложенное вычисление локаций

Функционал "Анимационной 3D платформы" позволяет просматривать иерархию локаций с помощью панели Scene Graph:

При раскрытии иерархии, отображаемые в панели Scene Graph локации будут учитываться модулем SceneLib при расчетах. По умолчанию все локации свернуты и в панели отображается только /root, которая является корневой.

Локации в панели Scene Graph могут быть развернуты двойными кликом или нажатием на иконку plus.

Чтобы раскрыть ветку и все дочерние элементы, нажмите ПКМ и выберите Expand.

Чтобы свернуть ветку и все дочерние элементы, нажмите ПКМ и выберите Collapse.

Визуализация объектов SceneLib

Программа позволяет изменять используемый Scene Delegate в панели Viewport. Посредством меню Context, пользователь может переключаться между режимами отображения содержимого SceneLib и USD.

На следующем изображении представлено два набора данных: сфера, созданная с помощью Viewport и изображение комнаты, загруженное с помощью инструментов SceneLib.

context

Изменения, произведенные в графе вычислений SceneLib будут отображены в панели Viewport, включая модификации атрибутов, создание и удаление связей между узлами и добавление новых узлов.

Работа со SceneLib с помощью API

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

Описание API и его особенностей представлено в следующем разделе: