SceneUtils - Руководство по Вердж3Д - Софт Эйт Софт
Description: Узнайте как использовать SceneUtils в интерактивных 3Д-веб-приложениях сделанных на Вердж3Д

# SceneUtils

Класс, содержащий полезные функции для манипуляций со сценой.

## Методы

### # .assignDefaultControls(camera : Camera, sceneBox : Box3)

- camera — штатная камера сцены.
- sceneBox — бокс, охватывающий все объекты, расположенные на сцене.

Назначает настройки управления камерой на основе параметра `sceneBox`.

### # .calcSceneBox(scene : Scene) → Box3

scene — текущая сцена.

Рассчитывает охватывающий бокс сцены.

### # .checkActionIsUsed(scene, action) → Boolean

- scene — сцена, на которой проверяется, выполняется ли действие над одним из объектов сцены.
- action — действие для проверки.

Проверяет, выполняется ли данное действие над одним из объектов сцены, т.е. существует ли целевой объект действия на сцене.

### # .createDefaultCamera(sceneBox : Box3, aspect : Float) → Camera

- sceneBox — коробка сцены.
- aspect — соотношение сторон камеры.

Создаёт экземпляр PerspectiveCamera камеры, которая смотрит в центр коробки сцены.

### # .createMeshesFromMultiMaterialMesh(mesh : Mesh) → Group

mesh — меш с несколькими материалами.

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

### # .createMultiMaterialObject(geometry, materials) → Group

- geometry — геометрия для набора материалов.
- materials — материалы объекта.

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

### # .getAnimationActionByName(scope, [param:String animClipName) → AnimationAction

- scope — экземпляр класса application.
- animClipName — имя анимационного клипа.

Ищет анимационное действие по названию клипа.

### # .getMaterialByName(appInstance : App, matName : String) → Material

- appInstance — приложение, для которого осуществляется поиск материала.
- matName — имя материала.

Ищет материал с заданным именем. Если не найден, возвращает `null`.

### # .getMaterialsByName(appInstance : App, matName : String) → Material

- appInstance — приложение, для которого осуществляется поиск материала.
- matName — имя материала.

Ищет все материалы с заданным именем. Если не найдены, возвращает `[]`.

### # .reduceVertices(object : Object3D, func : Function, initialValue : T) → T

- object — объект для прогона (внутри использует traverseVisible).
- func — функция поиска, применяемая для редуцирования. Должна быть вида: `(value: T, vertex: Vector3) → T`.
- initialValue — начальное значение для инициализации редуцирования. Требуется, поскольку также задаёт тип редуцирования, поскольку это не обязательно Vector3.

Работает аналогично Array.prototype.reduce(), но оперирует с вертексами всех дочерних объектов в мировой системе координат. Также может работать с преобразованием типа, выдавая тип отличный от Vector3. Может использоваться в частности для совмещения пространства камеры со сценой.

## Исходный файл

О том как получить исходный код этого модуля читайте тут.