Cook Interface (LuaScript)
Cook Interface представляет собой универсальный интерфейс, предназнач енный для запроса и изменения данных Scenegraph.
Используемые в процессе работы с данными методы могут быть условно разделены на две группы:
- Функции, которые запрашивают входные данные графа сцены. Функции такого типа предоставляют данные в режиме "только для чтения".
- Функции, которые модифицируют данные графа сцены. Влияние таких функций на сцену можно отследить после исполнения программного кода. Например, функции данного типа могут: создавать или полностью удалять локации, а также модифицировать их атрибуты.
Атрибуты CookInterface
CookInterface.get_attr(name, location, input_index, inherit)
Возвращает указанный атрибут Scenegraph. Используется как вспомогательный инструмент при выполнении задач или для вывода результата взаимодействия нескольких атрибутов. get_attr позволяет получить данные любой части графа сцены по имени и его расположению (как абсолютному, так и относительному).
Стандартно get_attr возвращает значение указанного атрибута относительно стандартной точки входа. В большинстве случаев, граф обладает одной точкой входа, поэтому указывать ветку необязательно. Если граф обладает несколькими входами, например, как в случае с узлом Merge, то для того, чтобы указать ветку используется параметр input_index. При указании, input_index должен соответствовать условию 0 <= input_index < num_input_indexes() (индекс должен быть больше нуля, но меньше количества входов узла).
get_attr возвращает исходные данные локации. Таким образом, при использовании метода set_attr изменения не будут отображаться в результате метода get_attr. В случае, если пользователю требуются данные выхода, необходимо использовать метод get_output_attributes.
Parameters:
- name — Имя атрибута.
- location — Путь к локации.
- input_index — Индекс входа.
- inherit — Если данное значение равно true, то атрибуты будут извлекаться с учетом наследования.
Returns — Значение атрибута на локации по указанному индексу.
CookInterface.get_output_attributes(name)
Возвращает указанный атрибут для текущей локации. Данный метод может быть использован при определении выходных атрибутов с помощью exec_func которые могут быть обработаны при дальнейших операциях.
Parameters:
- name — Имя запрашиваемого атрибута.
Returns — Атрибут на выходе узла. Если не установлен, будет возвращено значение null.
Изменение атрибутов
CookInterface.set_attr(name, att)
Устанавливает указанный атрибут на локацию.
name может быть указано перечислением через точку, например: attr1.attr2.attr3. В данном случае GroupAttribute будет создан для каждого указанного уровня иерархии. В свою очередь, значение groupInherit будет определять глубину наследования GroupAttribute.
Изменение атрибутов с помощью set_attr в текущей локации не будет отражено на функциях, которые взаимодействуют со входом узла, например, на get_attr.
Метод get_attr запрашивает информацию входа локации. Те данные, которые были изменены другими методами или локациями, не будут отображены. Чтобы отобразить все текущие модификации, используйте метод get_output_attributes.
Parameters:
- name — имя атрибута, который будет создан.
- att — значение атрибута.
Scene graph
CookInterface.is_root()
Отображает, является ли текущая локация корневой.
Корневая локация часто, но не всегда соответствует пути /root.
CookInterface.get_root_path()
Возвращает значение текущей локации относительно корневой.
Returns — Путь корневой локации.
CookInterface.name()
Метод для получения имени текущей локации.
Returns — Имя текущей локации.
CookInterface.full_path()
Метод для получения полного пути к текущей локации.
Returns — Полный путь к текущей локации.
CookInterface.parent_path()
Метод получения пути к родительской локации относительно текущей.
Например, при получении исполнении метода на локации geo, будет возвращен следующий путь:
"/root/world/geo" -> "world/geo"
Returns — Родительскую локацию относительно текущей.
CookInterface.get_potential_children()
Возвращает список String атрибутов в виде списка, содержащего список потенциальных дочерних локаций.
Метод delete_self позволяет удалять локацию не затрагивая содержимое родительских. Таким образом, локация будет включена в список потенциальных дочерних.
Parameters:
- out — список потенциальных дочерних локаций.
Управление списком локаций
CookInterface.create_child(name, fn_args, new_fn, data, data_destr)
Создает дочернюю локацию с указанным именем и атрибутами, если локация с этим именем не существует. В случае, если указана существующая локация, целевая локация сохранит имеющиеся значения атрибутов и дочерние локации. Чтобы гарантированно создать дочернюю локацию без предустановленных атрибутов, рекомендуется использовать remove_child перед созданием локации.
Parameters:
- name — Имя локации
- fn_args — Аргументы новой функции, если она указана посредством аргумента new_fn.
- new_fn — Тип функц ии SceneLibFunction, который будет применен к дочерним локациям. Если не указан, применяется текущая функция.
- data — Опциональный указатель на приватные данные, которые могут использоваться на дочерних локациях.
- data_destr — Опциональное значение функции обратного вызова, которое используется для очистки приватных данных.
CookInterface.remove_child(name)
Удаляет указанную дочернюю локацию.
Метод remove_child более эффективен, чем переход в дочернюю локацию и последующее ее удаление с помощью delete_self. Так как использование delete_self не удаляет локацию из списка get_potential_children.
Parameters:
- name — Имя дочерней локации для удаления.
CookInterface.remove_children()
Удаляет на текущей локации все дочерние. В том числе те, которые были созданы в ходе выполнения текущего скрипта.
CookInterface.delete_self()
Удаляет выбранную локацию.
Выз ов функции delete_self не затрагивает родительские локации, оставляя локацию в списке потенциальных дочерних элементов. Поэтому, при удалении локации в большинстве случаев предпочтителен метод remove_child.
Управление обходом локаций
CookInterface.stop_child_traverse()
Останавливает обход дочерних локаций относительно текущей.
Значение Motion Blur
Значения shutter_open и shutter_close определяют минимальное и максимальное время, за которое виртуальный затвор открывается и закрывается. Чем больше разница значений открытого и закрытого затвора, тем большее размытие будет у объектов при движении. Если эти значения равны, размытие движений будет неактивно.
CookInterface.get_frame()
Возвращает значение текущего кадра
Returns — Получить значение текущего кадра.
CookInterface.get_shutter_open()
Время открытия затвора относительно текущего кадра.
Returns — Время открытия затвора.
CookInterface.get_shutter_close()
Время закрытия затвора относительно текущего кадра.
Returns — Время закрытия затвора.
CookInterface.get_num_samples()
Возвращает целочисленное значение временных выборок между отк рытием и закрытием затвора.
Returns — Целочисленное значение временных выборок.
Функции другого типа
CookInterface.prefetch(location_path, input_index)
Вызов функции prefetch передает инструкцию библиотекам Runtime, что указанная локация должна учитываться при расчетах, делая ее данные доступными в произвольный момент.
Метод prefetch рекомендуется использовать, если модуль SceneLib высчитывает несколько различных родительских локаций одновременно.
Не требуется указывать родительские локации функцией prefetch входа по-умолчанию.
Использование prefetch создает зависимость потока данных, поэтому не следует включать в предварительную выборку данные, которые не требуются для задачи.
:param location_path: локация предварительной выборки. :param input_index: индекс, по которому запрашивается указанный атрибут location_path. В большинстве случаев он соответствует стандартному входу. В случае, если узел содержит несколько входных веток (например, Merge), индекс необходимо указывать.
CookInterface.get_private_data()
Возвращает указатель приватных данных на текущей локации.
Returns — Указатель приватных данных.
CookInterface.get_fn_arg(name)
Возвращает значение указанного атрибута или все аргументы локации, если имя атрибута не указано.
Значения атрибутов возвращаются в формате GroupAttribute. Данный метод позволяет получить любые доступные на локации значения атрибутов.
В случае, если требуется получить несколько значений атрибутов, их имена перечисляются без пробелов через знак ".". |br| Например: a.b.c
Parameters:
- name — Список атрибутов через точку.
Returns — Значения атрибутов.
exec_func(string function_type, GroupAttribute args)
Исполнить на локации выбранную функцию SceneLib с указанными аргументами. Возвращает true если функция с указанными параметрами была выполнена и найдена, false если функция с указанными параметрами не найдена.
Parameters:
- function_type — Тип функции, которая должна быть запущена.
- args — GroupAttribute, который передает аргументы указанной функции SceneLib.
num_input_indexes()
Returns — Количество входов текущей локации.
get_input_index()
Возвращает индекс входа выбранной локации.
В большинстве случаев, метод get_input_index будет возвращать значение "0". Если метод возвращает значение равное 0, то используется стандартный индекс. Если значение индекса > 0, то помимо стандартного, используются дополнительные входы.
Метод используется для определения номера входа при использовании Merge.
Некоторые из локаций могут использовать только дополнительные входы. Такие локации создаются отдельно, а затем применяются на остальные с помощью Merge.
Returns — Индекс входа, на котором была создана локация.