Med klassen
PerspectiveProjection
i
flash.geom
-paketet kan du på ett enkelt sätt få ett elementärt perspektiv för att flytta visningsobjekt i 3D-rymden.
Om du inte uttryckligen skapar en perspektivprojektion för 3D-rymden, använder 3D-motorn standard-PerspectiveProjection-objektet som finns i roten och det sprids till alla underordnade.
Följande tre egenskaper definierar hur ett PerspectiveProjection-objekt visas i 3D-rymden:
-
fieldOfView
-
projectionCenter
-
focalLength
Om du ändrar värdet på
fieldOfView
ändras värdet på
focalLength
automatiskt, och vice-versa, eftersom de är beroende av varandra.
Formeln som används för att beräkna
focalLength
med givet
fieldOfView
-värde är:
focalLength = stageWidth/2 * (cos(fieldOfView/2) / sin(fieldOfView/2)
Vanligtvis ändrar du
fieldOfView
-egenskapen uttryckligen.
Synfält
Genom att manipulera egenskapen
fieldOfView
för klassen PerspectiveProjection kan du göra så att ett 3D-visningsobjekt som närmar sig betraktaren verkar vara större, och ett objekt som viker av från betraktaren verkar vara mindre.
Egenskapen
fieldOfView
anger en vinkel mellan 0 och 180 grader som bestämmer styrkan i perspektivprojektionen. Ju större värde, desto större förvrängning tillämpas på ett visningsobjekt som flyttas utmed z-axeln. Ett lågt
fieldOfView
-värde leder till en väldigt liten skalning och får det att verka som om objektet flyttar bara något bakåt i rymden. Ett högt
fieldOfView
-värde leder till större förvrängning och rörelsen verkar vara större. Det maximala värdet 179,9999... grader skapar en effekt av en extrem fisheye-lins. Det högsta värdet för
fieldOfView
är 179,9999... och det minsta värdet är 0,00001... 0 och 180 är otillåtna värden.
Projektionscentrum
Egenskapen
projectionCenter
representerar flyktpunkten i perspektivprojektionen. Den används som en förskjutning från standardregistreringspunkten (0,0) i scenens övre vänstra hörn.
När ett objekt verkar flyttas längre bort från vypunkten, skevas det mot flyktpunkten för att slutligen försvinna. Föreställ dig en oändligt lång sal. När du tittar nedåt salen, sammanstrålar väggarna till en slutpunkt längst ned i salen.
Om slutpunkten finns i mitten av scenen, försvinner salen mot en punkt i mitten. Standardvärdet för egenskapen
projectionCenter
är scenens mitt. Om du till exempel vill att elementen ska visas till vänster på scenen och en 3D-yta ska visas till höger, ställer du in
projectionCenter
på en punkt som pekar till höger på scenen så att den blir flyktpunkten i 3D-visningsområdet.
Brännvidd
Egenskapen
focalLength
representerar avståndet mellan vypunktens origo (0,0,0) och placeringen av visningsobjektet på z-axeln.
En lång brännvidd kan liknas vid ett teleobjektiv med en smal vy och komprimerade avstånd mellan objekten. En kort brännvidd kan liknas vid ett vidvinkelobjektiv, där du får en bred vy med stor förvrängning. En medellång brännvidd ger ungefär det som ses med det mänskliga ögat.
Egenskapen
focalLength
beräknas vanligtvis om dynamiskt under perspektivomformningen allt eftersom visningsobjektet flyttas, men du kan ställa in det uttryckligen.
Standardvärden för perspektivprojektion
Standardobjektet för PerspectiveProjection som skapas vid roten har följande värden:
-
fieldOfView: 55
-
perspectiveCenter: stagewidth/2, stageHeight/2
-
focalLength: stageWidth/ 2 * ( cos(fieldOfView/2) / sin(fieldOfView/2) )
Dessa värden används om du inte skapar ett eget PerspectiveProjection-objekt.
Du kan instansiera ett eget PerspectiveProjection-objekt om du tänker ändra
projectionCenter
och
fieldOfView
själv. I så fall är standardvärdena för det nya objektet följande, baserat på standardstorleken 500 x 500 för en scen:
|
|
|