Трехмерные экранные объекты во Flash Player и среде выполнения AIR

Flash Player 10 и более поздних версий, Adobe AIR 1.5 и более поздних версий

Во всех версиях Flash Player до Flash Player 10 и Adobe AIR до Adobe AIR 1.5 экранные объекты имели два свойства: x и y , используемые для их позиционирования в двухмерном пространстве. Начиная с версии Flash Player 10 и Adobe AIR 1.5, каждый экранный объект ActionScript имеет свойство z , которое позволяет располагать объект вдоль оси z, обычно используемой для представления глубины или расстояния.

В приложениях Flash Player 10 и Adobe AIR 1.5 представлена поддержка трехмерных эффектов. Тем не менее, экранные объекты по сути являются плоскими. Каждый экранный объект, такой как MovieClip или Sprite, в конечном счете визуализируется в двух измерениях в одной плоскости. Трехмерные функции позволяют размещать, перемещать, поворачивать и преобразовывать каким-либо другим способом эти плоские объекты во всех трех измерениях. Они также позволяют управлять трехмерными точками и преобразовывать их в двухмерные координаты осей x и y для проецирования трехмерных объектов на двухмерную плоскость. С помощью этих функций можно моделировать различные трехмерные эффекты.

Используемая в ActionScript трехмерная система координат отличается от других систем. При использовании двухмерных координат в ActionScript значение координаты x увеличивается при перемещении вправо вдоль оси x, а значение координаты y увеличивается при перемещении вниз по оси y. Трехмерная система координат сохраняет эти условия и добавляет ось z, значение которой увеличивается при удалении от точки обзора.

Положительные направления осей x, y и z в трехмерной системе координат ActionScript.
A.
+ ось Z

Б.
Начало координат

В.
+ ось X

Г.
+ ось Y

Примечание. Важно помнить, что проигрыватель Flash Player и среда AIR всегда представляют трехмерное пространство в виде слоев. Это означает, что если объект A находится перед объектом В в списке отображения, то Flash Player или AIR всегда выполняет визуализацию A перед В независимо от значений по оси z для обоих объектов. Для разрешения этого конфликта между порядком элементов в списке отображения и порядком по оси z необходимо с помощью метода transform.getRelativeMatrix3D() сохранить слои трехмерных экранных объектов, а затем изменить их порядок. Дополнительные сведения см. в разделе « Использование объектов Matrix3D для изменения порядка отображения ».

Следующие классы ActionScript поддерживают новые трехмерные функции:

  1. Класс flash.display.DisplayObject содержит свойство z , а также новые свойства rotation и scaling для управления экранными объектами в трехмерном пространстве. Метод DisplayObject.local3DToGlobal() обеспечивает простой способ проецирования трехмерной геометрии на двухмерную плоскость.

  2. Класс flash.geom.Vector3D можно использовать в качестве структуры данных для управления трехмерными точками. Он также поддерживает векторную математику.

  3. Класс flash.geom.Matrix3D поддерживает сложные преобразования трехмерной геометрии, например, поворот, масштабирование и перемещение.

  4. Класс flash.geom.PerspectiveProjection управляет параметрами для преобразования трехмерной геометрии в двухмерный вид.

В ActionScript имеется два разных подхода к моделированию трехмерных изображений.

  1. Организация и анимация плоских объектов в трехмерном пространстве. Этот подход включает анимацию объектов отображения с использованием свойств x, y и z объектов отображения или путем присвоения значений свойствам rotation и scaling с помощью класса DisplayObject. Более сложное движение достигается при помощи объекта DisplayObject.transform.matrix3D. Объект DisplayObject.transform.perspectiveProjection позволяет настроить способ рисования объектов отображения в трехмерной перспективе. Используйте этот подход при анимации трехмерных объектов, имеющих в основном плоские поверхности. В качестве примера этого подхода можно привести галереи трехмерных изображений или двухмерные анимированные объекты, расположенные в трехмерном пространстве.

  2. Создание двухмерных треугольников из трехмерных геометрических фигур и визуализация этих треугольников с применением текстур. Для использования этого подхода сначала необходимо определить и упорядочить данные о трехмерных объектах, а затем преобразовать их в двухмерные треугольники для выполнения визуализации. На эти треугольники можно наложить текстуры растровых изображений, а затем с помощью метода Graphics.drawTriangles() эти треугольники отображаются в объекте Graphics. Этот подход используется, например, для загрузки данных трехмерной модели из файла и визуализации этой модели на экране или для рисования трехмерной поверхности в виде сетки с треугольными ячейками.