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 камеры, которая смотрит в центр коробки сцены.

.createMeshesFromInstancedMesh(instancedMesh : InstancedMesh) → Group

instancedMesh — инстанциируемый меш.

Создаёт группу объектов, которая содержит меш для каждого инстанса данного меша.

.createMeshesFromMultiMaterialMesh(mesh : Mesh) → Group

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

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

.createMultiMaterialObject(geometry, materials) → Group

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

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

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

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. Может использоваться в частности для совмещения пространства камеры со сценой.

.sortInstancedMesh(mesh : InstancedMesh, compareFn : Function)

mesh — InstancedMesh для которого осуществляется сортировка.
compareFn — функция сравнения, определяющая порядок сортировки.

Сортирует инстансы InstancedMesh в соответствии с результатом, возвращаемым из функции сравнения. Данная функция принимает на вход два параметра indexA и indexB и должна возвращать числовое значение. Смотрите описание для Array.prototype.sort, чтобы узнать больше информации о функции сортировки и возвращаемых ею значениях.

Поскольку сортировка является затратным в плане вычислений процессом, «Вердж3Д» не сортирует инстансы InstancedMesh автоматически. Ручная сортировка может быть полезна, чтобы улучшить визуализацию материалов с прозрачностью (сначала задние, потом передние), либо чтобы ускорить рендеринг непрозрачных материалов (сначала передние, потом задние).

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

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