Flash Player 10 i nowsze wersje, Adobe AIR 1.5 i nowsze wersje
Klasa
PerspectiveProjection
w pakiecie
flash.geom
umożliwia łatwe zastosowanie prostego rzutu perspektywicznego podczas przemieszczania obiektów wyświetlanych w przestrzeni trójwymiarowej.
Jeśli w sposób jawny nie utworzymy rzutu perspektywicznego dla przestrzeni 3D, mechanizm obsługi geometrii 3D użyje domyślnego obiektu PerspectiveProjection, który istnieje w obiekcie nadrzędnym i jest propagowany do wszystkich jego obiektów podrzędnych.
Oto trzy właściwości obiektu PerspectiveProjection definiujące sposób wyświetlania obiektów w przestrzeni 3D:
-
fieldOfView
-
projectionCenter
-
focalLength
Zmodyfikowanie wartości właściwości
fieldOfView
automatycznie powoduje zmodyfikowanie właściwości
focalLength
i na odwrót, ponieważ te właściwości są wzajemnie zależne.
Do obliczania wartości
focalLength
na podstawie danej wartości
fieldOfView
służy wzór:
focalLength = stageWidth/2 * (cos(fieldOfView/2) / sin(fieldOfView/2)
Zazwyczaj to właśnie właściwość
fieldOfView
jest modyfikowana w sposób jawny.
Pole widzenia
Manipulując właściwością
fieldOfView
klasy PerspectiveProjection, można spowodować, że obiekt wyświetlany 3D zbliżający się do obserwatora będzie widoczny jako coraz większy, a obiekt oddalający się od obserwatora będzie widoczny jako coraz mniejszy.
Właściwość
fieldOfView
określą kąt z przedziału od 0 do 180, który wyznacza poziom zniekształcenia wprowadzanego przez rzut perspektywiczny. Im większa wartość, tym silniej będzie zniekształcony obiekt poruszający się wzdłuż osi z. Niska wartość
fieldOfView
powoduje, że skalowanie jest minimalne, a obiekt pozornie tylko nieznacznie oddala się od obserwatora. Wysoka wartość
fieldOfView
powoduje większe zniekształcenie i pozornie większe oddalenie obiektu. Wartość maksymalna 179,9999... skutkuje skrajnie silnym efektem „rybiego oka”. Maksymalna wartość właściwości
fieldOfView
wynosi 179,9999..., a wartość minimalna to 0,00001... Wartości wynoszące dokładnie 0 i 180 nie są dozwolone.
Środek rzutowania
Właściwość
projectionCenter
reprezentuje znikający punkt w rzucie perspektywicznym. Jest stosowana jako przesunięcie względem domyślnego punktu rejestracji (0,0) znajdującego się w lewym górnym rogu stołu montażowego.
W miarę jako obiekt pozornie oddala się od obserwatora, pochyla się w kierunku znikającego punktu, a na koniec znika. Wyobraźmy sobie nieskończenie długi korytarz. Gdy spoglądamy w ten korytarz, krawędzie jego ścian zbiegają się w odległym znikającym punkcie.
Jeśli znikający punkt znajduje się pośrodku stołu montażowego, korytarz zbiega się do środka stołu. Wartość domyślna właściwości
projectionCenter
odpowiada właśnie środkowi stołu montażowego. Jeśli na przykład chcemy, aby elementy pojawiały się po lewej stronie stołu montażowego, a pozorna głębia trójwymiarowa zajmowała prawą stronę stołu, należy ustawić właściwość
projectionCenter
na punkt po prawej stronie stołu montażowego, aby tam właśnie znajdował się znikający punkt rzutu 3D.
Ogniskowa
Właściwość
focalLength
reprezentuje odległość między punktem obserwacji (0,0,0) a położeniem obiektu wyświetlanego na osi z.
Długa ogniskowa daje efekt podobny do fotografowania przez teleobiektyw, tj. wąskie pole widzenia i skrócenie odległości między obiektami. Krótka ogniskowa daje efekt podobny do fotografowania przez obiektyw szerokokątny, który zapewnia szerokie pole widzenia kosztem dużych zniekształceń. Średnia ogniskowa odpowiada w przybliżeniu charakterystyce ludzkiego oka.
Zwykle właściwość
focalLength
jest dynamicznie przeliczana w trakcie transformacji perspektywicznej, w miarę jak obiekt przemieszcza się. Można jednak jawnie przypisać wartość tej właściwości.
Domyślne wartości rzutu perspektywicznego
Domyślnie utworzony obiekt PerspectiveProjection w obiekcie nadrzędnym ma następujące wartości właściwości:
-
fieldOfView: 55
-
perspectiveCenter: stagewidth/2, stageHeight/2
-
focalLength: stageWidth/ 2 * ( cos(fieldOfView/2) / sin(fieldOfView/2) )
Te wartości obowiązują, jeśli nie utworzymy własnego obiektu PerspectiveProjection.
Możliwe jest utworzenie instancji obiektu PerspectiveProjection w celu modyfikowania właściwości
projectionCenter
i
fieldOfView
. W takim przypadku domyślne wartości właściwości nowo utworzonego obiektu są następujące (dla domyślnego rozmiaru stołu montażowego 500 na 500):
|
|
|