Пазлы объектов (Objects) — Софт Эйт Софт
Description: Как управлять 3Д-объектами с помощью пазлов Вердж3Д.

# Пазлы объектов (Objects)

Пазлы из этой категории выполняют различные операции с объектами.

## Содержание

- Перечень пазлов
  - show
  - hide
  - is visible
  - clone object
  - create object
  - remove object
  - set transform
  - get transform
  - change local transform
  - snap to object
  - parent
  - set object direction
  - get object direction
  - get objects from
  - set morph factor
  - get morph factor
  - make object from
  - add annotation
  - remove annotation
  - open annotation
  - close annotation
  - create text object
  - update text object
  - get object dimension
  - distance
  - get custom props
  - outline
  - set shadow param
  - update light probe
  - create instances

#

## Перечень пазлов

#

### show

Делает видимым указанный объект, который изначально или ранее был скрыт. Также работает для списка объектов, группы (или списка групп) или с пазлом all objects. Если в сцене нет такого объекта (объектов) или объект уже виден, ничего не делает.

#

### hide

Делает указанный объект невидимым. Также работает для списка объектов, группы (или списка групп) или с пазлом all objects. Если в сцене нет такого объекта (объектов) или объект уже невидим, ничего не делает.

#

### is visible

Проверяет, является ли объект (или любой из объектов в списке) видимым в данный момент. Если да, то возвращает логическое значение true, в противном случае возвращает false. Если в сцене нет такого объекта (объектов), возвращается false.

#

### clone object

Создает копию объекта, генерирует уникальное имя для нового объекта и немедленно добавляет его в сцену. Возвращает имя нового объекта. Не работает со списками, группами или пазлом all objects.

Данный пазл поддерживает дополнительные настройки, доступные по значку шестерёнки:

also clone materials
  По умолчанию "clone object" не клонирует материалы, назначая материал исходного объекта на склонированный. Опция also clone materials позволяет создать копию материала (или нескольких материалов) исходного объекта.
preserve object groups
  По умолчанию "clone object" сбрасывает группы на склонированном объекте. Включите опцию preserve object groups чтобы перенести имена групп исходного объекта.

Данная функциональность используется в демо-приложении Clone Object (исходные файлы доступны в магазине ассетов).

#

### create object

Создает и добавляет новый объект в сцену. Этот пазл создает объекты минуя 3Д-редактор и поэтому может быть полезен для изучения визуального программирования, а также для создания примитивных объектов пользователями, не имеющими достаточных навыков 3Д-моделирования. В сочетании с пазлом make object from вы можете создавать достаточно сложную геометрию.

Для геометрических объектов, таких как кубы или чайники, этот пазл создает физически-корректный нодовый материал белого цвета (со значением roughness равным `1` и metalness равным `0`). Для настройки этого материала используйте пазлы set color и set value.

Для объектов типа plane with texture, пазл также назначает примитивную текстуру в виде шахматной доски. Эта текстура может быть изменена с помощью пазла replace texture.

Вариант пазла plane with html используется для создания плоскостей, отображающих HTML-ресурсы: вебсайтов, пользовательских интерфейсов или роликов с сервисов просмотра видео.

Внутри такой пазл использует трансформируемый в трёхмерном пространстве элемент `<iframe>` с шириной (в пикселях), указываемой с помощью входа res.

Данная функциональность используется в демо-приложении Webpage Inside 3d (исходные файлы доступны в магазине ассетов).

#

### remove object

Удаляет указанный объект из сцены. Также работает для списка объектов, группы (или списка групп) или с пазлом all objects. Если в сцене нет указанного объекта (объектов), пазл ничего не делает.

#

### set transform

Перемещает, вращает или масштабирует объект в соответствии с заданными параметрами преобразования. Переключатель offset позволяет перемещать/вращать/масштабировать объект относительно исходного положения/вращения/масштаба. Любой из входов оси можно оставить пустым. Данный пазл поддерживает списки объектов, группы (или списки групп), а также пазл all objects.

В ряде случает требуется ввести вектор (состоящий из заданных координат X, Y, Z). В этом случае вы можете изменить пазл, нажав на значок шестеренки и установив переключатель use vector. Переключатель world space позволяет осуществлять трансформации в мировой системе координат (эйлеровские углы отсчитываются в порядке XYZ), в противном случае трансформации производятся в системе координат объекта.

#

### get transform

Получает данные о положении, вращении или масштабе объекта. Не работает со списками, группами или пазлом all objects.

#

### change local transform

Перемещает, поворачивает или масштабирует объект в соответствии с заданными данными преобразования в его локальном пространстве. Любой из входов оси можно оставить пустым. Также работает для списка объектов, группы (или списка групп) или с пазлом all objects. Иногда требуется ввести вектор (состоящий из заданных координат X, Y, Z). В этом случае вы можете изменить пазл, нажав на значок шестеренки и установив переключатель use vector.

#

### snap to object

Перемещает объект в позицию другого объекта, копируя его данные преобразования. Также копируется вращение и масштаб. Не работает со списками, группами или пазлом all objects.

#

### parent

Создает родительское отношение между объектами, так что первый объект учитывает положение/вращение/масштаб второго. Данный пазл не работает со списками, группами или пазлом all objects.

Укажите <none> в качестве второго значения, чтобы лишить объект родительских прав.

#

### set object direction

Устанавливает направление объекта на точку/вектор с координатами X, Y, Z. Переключатель point определяет, относятся ли координаты X, Y, Z к какой-либо точке в трехмерном пространстве или представляют собой вектор направления. Переключатель lock up фиксирует ось вверх-вниз объекта, чтобы она оставалась перпендикулярной горизонтальной поверхности.

В ряде случаев может потребоваться подать на вход пазла векторное значение (состоящее из координат X, Y, Z). В этом случае измените пазл, нажав на значок шестеренки и установив переключатель use vector.

Например, чтобы направить какой-либо объект на камеру, используйте следующие пазлы:

#

### get object direction

Возвращает вектор направления объекта или числовые компоненты вектора X, Y, Z.

#

### get objects from

Этот универсальный пазл позволяет:

- получить список объектов, содержащихся в группе, сделав её перечисляемой
- преобразовать вывод пазла all objects в список, сделав его перечисляемым
- получить дочерние объекты некоего родительского объекта
- отфильтровать объекты по типу (например, камеры, лампы, аннотации и т.д.), полному имени или его части
- конвертировать имена объектов в идентификаторы и обратно

В выпадающем списке вы можете указать получение объектов определенного типа:

- all — get all objects
- annotation — get only annotation objects
- bone — get only bones
- camera — get only cameras
- empty — get only empty objects
- mesh — get only meshes
- light — get only lights
- first — get the first object found; use this option with the name filter to retrieve the first object matching the name

Например, вы можете использовать следующие пазлы, чтобы заставить посмотреть в камеру все объекты-меши, находящиеся на сцене:

Переключатель enable name filter во всплывающем окне шестерёнки активирует фильтр имён:

- equal to — отфильтровать объекты с данным именем
- starting with — отфильтровать объекты, начало имени которых содержит указанный текст, например слово "Куб" отфильтрует объекты "Куб", "Куб.001", "КубИзЗолота", и т.д.
- ending with — отфильтровать объекты, конец имени которых содержит указанный текст, например слово "Куб" отфильтрует объекты "Куб", "МойКуб", "Зелёный_Куб", но не "Куб.001"
- including — отфильтровать объекты, имя которых содержит указанный текст, например слово "Куб" отфильтрует "Куб", "МойКубПростоЗамечательный", "Куб2", и т.д.

Фильтр имён зависит от регистра символов, т.е. строки "Куб", "куб", "КУБ" отфильтруют разные объекты.

Переключатель return unique object ids во всплывающем окне шестерёнки используется, чтобы возвращать уникальные идентификаторы объектов вместо имён:

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

Идентификаторы, полученные с помощью данного пазла (выглядят как 5c464bf0-043a-40ee-b864-5c026436d7de), могут быть переданы в любые другие пазлы, которые принимают на вход объекты.

Допустим вы загрузили некоторую сцену "NewCarScene" динамически, и эта сцена содержит модель "Car". В то же время на вашей главной сцене уже присутствует модель с тем же именем "Car". Чтобы изменить материал на свежезагруженной модели, вам потребуется использовать следующие пазлы:

Если же вы просто подадите "Car" на вход пазла "assign material", "FancyMaterial" будет назначен на первой найденной модели автомобиля, а это явно не соответствует тому, что вам требуется получить.

Пазл "get objects from" также может использоваться для преобразования имени объекта в идентификатор (или несколько идентификаторов, если на сцене присутствуют несколько объектов с одним именем):

Вы также можете преобразовать идентификатор в имя объекта, воспользовавшись пазлом:

#

### set morph factor

Устанавливает коэффициент морф-таргета объекта. Пазл также может принимать на вход список объектов, группу (или список групп), а также пазл all objects.

Вы можете задать морф-таргет, передав его название в виде текста. В этом случае необходимо изменить пазл, нажав на значок шестеренки и установив переключатель flexible target input:

Пример:

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

#

### get morph factor

Возвращает коэффициент морф-таргета объекта (также называется «значение» или «вес»). Не работает со списками, группами или пазлом all objects.

Пример:

Вы можете задать морф-таргет, передав его название в виде текста. В этом случае необходимо модифицировать пазл, нажав на значок шестеренки и установив на флажке flexible target input:

#

### make object from

Создать новый объект посредством применения логической операции (называемой CSG, от constructive solid geometry) над двумя указанными объектами. Если переключатель clean не установлен, исходные объекты не изменяются и должны быть скрыты/удалены с помощью других пазлов.

Пример:

В качестве одного из объектов можно подать плоскость отсечения (выбрав операцию intersect). В таком случае другой объект будет усечён.

Ограничения:

1. Геометрия объектов со скинингом или морфингом будет запечена.
2. Объекты с картами нормалей не поддерживаются.

#

### add annotation

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

Например, чтобы добавить аннотацию к объекту "Cube" с меткой "1" и описанием "This is point of interest #1", используйте пазл:

Вы можете назначать своё собственное имя на объекте-аннотации. Для этого необходимо изменить пазл, нажав на значок шестеренки и установить переключатель enable "name" option:

Этот пазл создает 2 HTML-элемента (для метки и описания), которые можно стилизовать в настройках диспетчера приложений или с использованием CSS-классов.

Вы также можете задать стиль каждой отдельной аннотации с использованием назначаемых идентификаторов:

По умолчанию аннотация, закрываемая какой-либо геометрией, автоматически закрывается и становится полупрозрачной. Это поведение можно отключить, выключив опцию fade annotations пазла настроек приложения.

Вместо пазла аннотаций вы можете использовать его низкоуровневую альтернативу — пазл bind element, но он не раскрывается при нажатии и не может быть заслонён геометрией.

#

### remove annotation

Удаляет ранее добавленную аннотацию с объекта. Пазл может принимать на вход список объектов, группу (или список групп), а также пазл all objects.

#

### open annotation

Открывает аннотацию с указанной меткой.

#

### close annotation

Закрывает аннотацию с указанной меткой.

#

### create text object

Создаёт новый текстовый объект в соответствии с заданным текстовым наполнением и параметрами.

Базовые опции:

with text
  Текстовое наполнение.
font
  Шрифт, используемый для генерации текста. Поддерживаются форматы: WOFF, TTF, OTF.
size
  Размер текста в единицах движка (определяются пакетом моделирования: метры, дюймы, и т.д.).
extrude
  Объём выдавливания текстовых глифов.

Расширенные опции:

segments
  Количество сегментов геометрии. Меньше — увеличенная производительность, больше — улучшенное качество.
bevel thickness
  Толщина каймы текста.
bevel size
  Размер каймы текста.
horizontal align
  Горизонтальное выравнивание текста.
vertical align
  Вертикальное выравнивание текста.

#

### update text object

Обновляет геометрию текстового объекта в соответствии с заданным текстовым наполнением. Текстовой объект должен быть создан с помощью пазла create text object или экспортирован из пакета моделирования.

Пазл может принимать на вход список объектов, группу (или список групп), а также пазл all objects.

#

### get object dimension

Выводит размеры объекта в виде отдельных X, Y, Z компонентов или вектора XYZ в локальной системе координат (с применённым масштабированием) или в мировой (world) системе координат.

В режиме world данный пазл работает со списком объектов, с группой (списком групп) или с пазлом all objects.

Пример: рендеринг текстового поля с длиной объекта (в сантиметрах), длина которого меняется динамически.

Пазл имеет ограничения. Для объектов с морфингом он возвращает максимально возможные значения размеров. Для объектов со скиннингом он возвращает исходные размеры.

#

### distance

Выводит расстояние между двумя указанными объектами. Не работает со списками, группами и пазлом all objects.

#

### get custom props

Возвращает словарь с пользовательскими свойствами объекта.

Пользовательские свойства могут быть назначены в «Блендере» с помощью панели Custom Properties:

либо введены в диалоговом окне Object Properties пакета «3дс Макс»:

либо созданы в «Майе» с помощью меню Attributes → Add Attributes.... редактора атрибутов:

В случае с «Майей» необходимо назначить дополнительный атрибут customProperties со списком имен пользовательских свойств, разделенных пробелами.

#

### outline

Применяет или удаляет эффект контура к указанному объекту. Требуется включение эффекта контура в «Блендере», «3дс Максе» или «Майе». Пазл может принимать на вход список объектов, группу (или список групп), а также пазл all objects.

#

### set shadow param

Включает/выключает отбрасывание/получение теней для данного объекта. Также работает для списка объектов, группы (списка групп) и с пазлом all objects.

#

### update light probe

Обновляет/перерисовывает карту отражений для данного объекта светового зонда.

#

### create instances

Создаёт экземпляры указанного объекта. В отличие от пазла clone object, здесь не создаётся копия объекта, а используется возможность графического процессора для генерации геометрии на лету. Это гораздо эффективнее, чем рендеринг отдельных объектов, поэтому с помощью данного пазла можно отрендерить десятки или даже сотни тысяч объектов даже на устройствах с низкими характеристиками.

positions, rotations, scales могут быть группами. Эти группы должны включать объекты, задающие трансформации экземпляров (в большинстве случаем это будут объекты-пустышки).

Вы также можете использовать списки векторов:

При использовании равномерного масштабирования (когда значения координат X, Y, Z одинаковы), можно упростить вход scales до списка чисел:

Входы rotations и scales не являются обязательными и могут быть опущены. В таком случае повороты и масштабирования будут браться из исходного объекта (будут одинаковыми для всех экземпляров).

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

## Проблемы с пазлами?

Обратитесь за помощью на наш форум!