MYWEBAR PRO EDITOR

Обращение к другому объекту

Как обратиться к другому объекту? Т.к. все, что находится на данной сцене — у нас есть возможность дотянуться до любого объекта (до любой планеты, света или, например, камеры).

Для начала — рассмотрим к чему имеется доступ из скрипта с солнцем. Для этого, я написал команду console.log(this); , которая выводит все свойства данной модели в консоль. Далее, зашел в консоль разработчика и получил список свойств группы.

Ниже показан пример свойств данной группы на сцене:
Разберем каждое свойство по отдельности.

  • castShadow Отображается ли объект на карте теней

  • children Массив с дочерними элементами объекта (для сцены, например — это будут все объекты на сцене).

  • fristumCulled Когда это установлено, перед визуализацией объекта проверяется на каждый кадр, находится ли объект в усеченной области камеры. В противном случае объект будет отображаться каждый кадр, даже если он не виден.

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

  • matrix Матрица

  • matrixAutoUpdate Когда это установлено — вычисляется матрица положения (вращение или кватернион) и масштабируется каждый кадр, а также повторно вычисляется свойство matrixWorld.

  • matrixWorld Глобальное преобразование объекта. Если у Object3D нет родителя, он идентичен локальному преобразованию .matrix

  • matrixWorldNeedsUpdate Когда это установлено, он вычисляет matrixWorld в этом кадре и сбрасывает это свойство на false.

  • name Развание текущей группы (т.е., в данном случае — это 3D-объект sun.glb

  • parent Родитель данного объекта. С помощью данного свойства мы можем обращаться к вышестоящим элементам. Например, в данном случае родителем является сцена. Обратившись к сцене — мы сможем увидеть её дочерние элементы (другие объекты на сцене). Таким образом — мы можем "дотянуться" до любой другой модели или объекта.

  • position Позиция

  • quaternion Локальное вращение объекта как кватерниона

  • recieveShadow Создает ли объект тени

  • renderOrder Это значение позволяет переопределить стандартный порядок рендеринга объектов графа сцены, хотя непрозрачные и прозрачные объекты остаются сортированными независимо. Когда это свойство установлено для экземпляра Group , все объекты-потомки будут сортироваться и отображаться вместе. Сортировка идет от наименьшего к наибольшему renderOrder.

  • rotation Поворот

  • scale Размер

  • type Тип объекта, у нас группа (сетка, материал и т.д. — все по отдельности)

  • up Это используется , например, методом lookAt для определения ориентации результата. По умолчанию Object3D.DefaultUp, то есть (0, 1, 0).

  • userData Объект, который можно использовать для хранения пользовательских данных об Object3D. Он не должен содержать ссылок на функции, поскольку они не будут клонированы.

  • uuid Универсальный уникальный идентификатор (UUID)

  • visible Видимый ли объект (группа)

  • id Идентификационный номер группы

Теперь попробуем обратиться через скрипты Солнца к сетке (mesh) планеты Венера.

Для этого, снова пишем:
console.log(this);
Открываем консоль. У нас вывелся объект со свойствами группы Солнце. Теперь, прямо через консоль пытаемся найти сетку Венеры. Для этого — я открываю свойство parents Солнца — это будет сцена. Теперь, в сцене, в ее дочерних элементах children — я ищу группу с Венерой (это группа номер два), и этой группы мы опять открываем дочерний элементы и видим ссылку.
Теперь мы видим тот самый mesh. Для того, чтобы проверить правильность — напишем следующий путь:
 console.log(this.parent.children[2].children);
  • this — ключевое слово, которое указывает на текущий объект, т.е. на Солнце,

  • .parent — родитель Солнца (сцена),

  • .children — дочерние элементы Солнца (все объекты на сцене),

  • [2] — второй элемент массива дочерних элементов (объект Венера),

  • .children — дочерний элемент объекта Венера (группы) - тот самый mesh.

Результатом скрипта — будет объект со свойствами mesh Венеры. Мы все сделали правильно.