Flash Player 10 и более поздних версий, Adobe AIR 1.5 и более поздних версий
Класс
PerspectiveProjection
в пакете
flash.geom
обеспечивает простой способ применения элементарной перспективы при перемещении объектов отображения в трехмерном пространстве.
Если для трехмерного пространства не создана явно перспективная проекция, трехмерный модуль использует объект PerspectiveProjection по умолчанию, находящийся в корневом объекте и передающийся всем его нижестоящим элементам.
Три свойства, определяющие способ отображения трехмерного пространства объектом PerspectiveProjection:
-
fieldOfView
;
-
projectionCenter
;
-
focalLength
.
При изменении значения свойства
fieldOfView
автоматически изменяется значение свойства
focalLength
и наоборот, так как они являются взаимозависимыми.
Для вычисления значения
focalLength
при указанном значении
fieldOfView
используется следующая формула:
focalLength = stageWidth/2 * (cos(fieldOfView/2) / sin(fieldOfView/2)
Как правило, значение свойства
fieldOfView
изменяется явно.
Поле обзора
Посредством управления свойством
fieldOfView
класса PerspectiveProjection можно сделать приближающийся к пользователю трехмерный экранный объект зрительно больше, а удаляющийся — меньше.
Свойство
fieldOfView
указывает угол от 0 до 180 градусов, определяющий степень перспективной проекции. Чем больше значение, тем больше искажение, применяемое к экранному объекту, который перемещается по оси z. Использование низкого значения
fieldOfView
приводит к низкой степени масштабирования, и создается впечатление, что объекты лишь немного передвинулись назад. При использовании высокого значения
fieldOfView
искажение увеличивается, и создается впечатление, что объект передвинулся на большое расстояние. Использование максимального значения (179.9999 градусов) приводит к эффекту камеры с линзой типа «рыбий глаз». Максимальным значением
fieldOfView
является 179.9999..., а минимальным 0.00001... Только 0 и 180 являются допустимыми значениями.
Центр проекций
Свойство
projectionCenter
представляет точку схода в перспективной проекции. Оно применяется как сдвиг относительно точки регистрации по умолчанию (0,0), которая находится в верхнем левом углу рабочей области.
По мере отдаления объекта от пользователя, он смещается к точке схода и в конце концов исчезает. Представьте себе бесконечно длинный зал. Когда смотришь вглубь зала, вдалеке края стен сходятся в точке схода.
Если точка схода находится в центре рабочей области, зал исчезает в направлении точки в центре. По умолчанию свойство
projectionCenter
указывает центральную точку рабочей области. Например, если требуется, чтобы элементы отображались в левой части рабочей области, а трехмерная область – в правой части, требуется установить для свойства
projectionCenter
точку в правой части рабочей области, чтобы сделать ее точкой схода трехмерной области просмотра.
Фокусное расстояние
Свойство
focalLength
представляет расстояние между исходной точкой поля зрения (0,0,0) и местоположением экранного объекта на его оси z.
Большое фокусное расстояние создает эффект применения телеобъектива с узким видом и сжатым расстоянием между объектами. Маленькое фокусное расстояние создает эффект применения угловой линзы с широким видом и большим искажением. Среднее фокусное расстояние приблизительно соответствует тому, что видит человеческий глаз.
Как правило, значение
focalLength
вычисляется динамически несколько раз в течение преобразования перспективы при удалении объекта, но его также можно задать явно.
Значения по умолчанию для перспективной проекции
Объект PerspectiveProjection по умолчанию, созданный в корневом объекте, имеет следующие значения:
-
fieldOfView: 55
-
perspectiveCenter: stagewidth/2, stageHeight/2
-
focalLength: stageWidth/ 2 * ( cos(fieldOfView/2) / sin(fieldOfView/2) )
Эти значение используются, если не создается собственный объект PerspectiveProjection.
Для самостоятельного изменения свойств
projectionCenter
и
fieldOfView
можно создать экземпляр PerspectiveProjection. В данном случае вновь созданный объект имеет следующие значения по умолчанию, исходя из размера рабочей области по умолчанию 500х500:
|
|
|