Группа¶
Содержание
Производный объект от:
Базовый объект для:
Предупреждение
В интерфейсе версии Standard данный тип объектов недоступен. Вместо него следует использовать производный объект Система координат (TransformNodeReactor), являющийся производным от данного объекта, и, как следствие, имеющий все свойства, события и действия данного объекта.
Объект типа Группа (GroupNodeReactor) и его производные используются для группировки нескольких объектов Узел (NodeReactor), для одновременой работы с ними. Например, в группу и производные можно добавить несколько объектов для совместного скрытия и показа объектов:

Производые объекты могут также модифицировать внешний вид нижележащих объектов. Например, объекты Система координат (TransformNodeReactor) могут добавлять преобразования (перемещение, вращение, масштаб) для всех объектов-потомков. Например, пусть имеет место следующая иерархия объектов:

В примере выше изображены два объекта: «Кольцо» и «Мяч», оба расположены в одном объекте Система координат (TransformNodeReactor) - «Мяч и корзина». Объекты «Кольцо» и «Мяч» называются потомками, или дочерними объектами по отношению к «Молекуле воды», «Молекула воды» же является предком, или родительским объектом по отношению к его дочерним объектам.
Теперь изменение параметров «Мяч и корзина» будет менять поведение объектов-потомков:
Начальная ситуация |
Объект «Мяч и корзина» был скрыт |
Объект «Мяч и корзина» был перемещён |
---|---|---|
![]() При скрытии объекта «Мяч и корзина» скрылись все его потомки
|
![]() При перемещении объекта «Мяч и корзина» (см. Система координат.Перемещение (TransformNodeReactor.trans)) вместе с ним переместились все его потомки
|
Одним из важнейших производных типов объектов - Метка (MarkerReactor). Каждая метка является производной от Система координат (TransformNodeReactor), и перемещается в виртуальном пространстве сцены вместе с реальной меткой дополненной реальности. Таким образом, возникает один из основных паттернов использования меток - если в метку в качестве потомков поместить какие-либо объекты, то они будут перемещаться вместе с реальной меткой дополненной реальности (подробнее см. в Метка (MarkerReactor)).
Работа с потомками и иерархией¶
Вводится в Группа (GroupNodeReactor)
Каждый объект, производный от Группа (GroupNodeReactor) может иметь одного или нескольких потомков, производных от Узел (NodeReactor). Например, любой Модель (ModelReactor) может быть добавлен на метку - в Метка (MarkerReactor), или любой объект может быть добавлен в Сцена (SceneReactor).
Примечание
Вся система объектов, производных от Узел (NodeReactor) повторяет структуру библиотеки OpenSceneGraph . Соответственно, многие особенности библиотеки распрастраняются и на систему объектов EV Toolbox.
Иерархия объектов может быть изменена в списке объектов при помощи drag’n’drop или при помощи контекстного меню.

Параметр |
Описание |
---|---|
Список потомков данного объекта |
Действие |
Описание |
---|---|
Добавить потомка в конец списка потомков |
|
Вставить потомка в середину списка потомков. |
|
Удалить последнего потомка из списка потомков |
|
Убирает указанный объект из списка потомков. |
|
Убирает объект по данному индексу из списка потомков. |
|
Убирает заданное число объектов из списка потомков, начиная с заданного индекса. |
|
Полностью очищает список потомков объекта. |
- параметр Список потомков¶
- параметр children¶
Список всех дочерних объектов. Имеет тип
table
, в котором находятся ссылки на все дочерние объекты.Примечание
В интерфейсе версии Standard данный параметр устанавливается неявно, путём переноса объектов в списке объектов
Пример использования:
local marker = ... -- Тип MarkerReactor local model = ... -- Тип NodeReactor или производный local transform = ... -- Тип TransformNodeReactor -- Подписываемся на onHide маркера - событие исчезновения его из вида marker:subscribeEvent("onHide", function() -- Переносим трансформацию маркера на transform transform.trans = marker.trans transform.rotate = marker.rotate transform.scale = marker.scale -- Удаляем модель из маркера marker:removeChild(model) -- Добавляем модель в transform transform:addChild(model) end) -- При показе метки marker:subscribeEvent("onShow", function() -- Удаляем модель из transform'а transform:removeChild(model) -- Добавляем модель в маркер marker:addChild(model) end)
- действие Дочерний узел - добавить¶
- действие addChild(child)¶
Добавить потомка в конец списка потомков
- Параметры
Узел / child – Объект, производный от Узел (NodeReactor), который будет добавлен в качестве потомка
- действие Дочерний узел - вставить¶
- действие insertChild(index, child)¶
Вставить потомка в середину списка потомков.
- Параметры
Индекс / index – Индекс, на который надо вставить нового потомка. Индексация начинается с единицы.
Узел / child – Объект, производный от Узел (NodeReactor), который будет добавлен в качестве потомка
- действие Дочерний узел - удалить последний¶
- действие removeLastChild()¶
Удалить последнего потомка из списка потомков
- действие Дочерний узел - удалить¶
- действие removeChild(child)¶
Убирает указанный объект из списка потомков.
Если данного объекта не было в спике потомков, то ничего не происходит. Если в списке потомков данный объект встречался дважды, будет удалено только первое вхождение.
- Параметры
Узел / child – Объект, который необходимо убрать из списка потомков
- действие Дочерний узел - удалить по индексу¶
- действие removeChild(index)
Убирает объект по данному индексу из списка потомков.
- Параметры
Индекс / index – Индекс объекта в списке потомков, который необходимо удалить.
- действие Группа - удалить дочерние узлы¶
- действие removeChildren(startIndex, numChildren = 1)¶
Убирает заданное число объектов из списка потомков, начиная с заданного индекса.
Примечание
Вызов с Числом узлов равным единице равносилен вызову Дочерний узел - удалить по индексу (removeChild)
- Параметры
Начать с индекса / startindex – Индекс первого объекта, который должен быть удалён
Число узлов / numChildren – Число потомков, которые должны быть удалены из списка потомков