Inzicht in 3D-weergaveobjecten in Flash Player en de AIR-runtime

Flash Player 10 of hoger, Adobe AIR 1.5 of hoger

In Flash Player-versies vóór Flash Player 10 en in Adobe AIR-versies vóór Adobe AIR 1.5 hebben weergaveobjecten twee eigenschappen, x en y , om ze op een 2D-vlak te plaatsen. Vanaf Flash Player 10 en Adobe AIR 1.5 heeft elk ActionScript-weergaveobject de eigenschap z , waarmee u het object langs de z-as kunt plaatsen die doorgaans wordt gebruikt om diepte of afstand aan te geven.

Flash Player 10 en Adobe AIR 1.5 bevat ondersteuning voor 3D-effecten. Weergaveobjecten zelf zijn echter plat. Elk weergaveobject, zoals een MovieClip- of Sprite-object, wordt gerenderd in twee dimensies, op één vlak. Met de 3D-functies kunt u deze vlakke objecten in alle drie dimensies plaatsen, verplaatsen, roteren en anderszins transformeren. U kunt ook 3D-punten beheren en omzetten naar 2D x- en y-coördinaten zodat u 3D-objecten kunt projecteren op een 2D-weergave. U kunt een groot aantal 3D-ervaringen simuleren met deze functies.

Het 3D-coördinatenstelsel dat ActionScript gebruikt, wijkt af van andere stelsels. Wanneer u in ActionScript 2D-coördinaten gebruikt, wordt de waarde van x hoger als u langs de x-as naar rechts beweegt en wordt de waarde van y hoger als u langs de y-as omlaag beweegt. Het 3D-coördinatenstelsel houdt zich aan deze conventies en voegt hier een z-as aan toe waarvan de waarden hoger worden als u van het gezichtspunt af beweegt.

De positieve richtingen van de x-, y- en z-as in het 3D-coördinatenstelsel van ActionScript.
A.
+Z-as

B.
Oorsprong

C.
+X-as

D.
+Y-as

Opmerking: Houd er rekening mee dat Flash Player en AIR 3D altijd in lagen representeert. Dit betekent dat als object A in de weergavelijst vóór object B komt, Flash Player of AIR A altijd vóór B rendert, ongeacht de waarde van de z-as van de twee objecten. U lost dit conflict tussen de volgorde in de weergavelijst en de volgorde op de x-as op door de lagen van 3D-weergaveobjecten op te slaan met de methode transform.getRelativeMatrix3D() en vervolgens een andere volgorde te geven. Zie Matrix3D-objecten gebruiken om de weergavevolgorde te wijzigen voor meer informatie.

De volgende ActionScript-klassen ondersteunen de nieuwe 3D-functies:

  1. De klasse flash.display.DisplayObject beschikt over de eigenschap z en nieuwe rotatie- en schalingseigenschappen voor het bewerken van weergaveobjecten in de 3D-ruimte. De methode DisplayObject.local3DToGlobal() biedt een eenvoudige manier om 3D-geometrie te projecteren op een 2D-vlak.

  2. De klasse flash.geom.Vector3D kan worden gebruikt als gegevensstructuur voor het beheer van 3D-punten. De klasse ondersteunt ook rekenkundige methoden voor vectoren.

  3. De klasse flash.geom.Matrix3D ondersteunt complexe transformaties van 3D-geometrie, zoals roteren, schalen en transleren.

  4. De klasse flash.geom.PerspectiveProjection bestuurt de parameters voor het toewijzen van 3D-geometrie aan een 2D-weergave.

Er zijn twee verschillende manieren om 3D-afbeeldingen te simuleren in ActionScript:

  1. Vlakke objecten rangschikken en animeren in de 3D-ruimte. Bij deze aanpak voegt u animatie aan weergaveobjecten toe met behulp van de eigenschappen x, y en z van weergaveobjecten, of stelt u rotatie- en schalingseigenschappen in met behulp van de klasse DisplayObject. Complexere bewegingen kunt u bereiken met behulp van het DisplayObject.transform.matrix3D-object. Het DisplayObject.transform.perspectiveProjection-object past aan hoe de weergaveobjecten worden getekend in 3D-perspectief. Gebruik deze aanpak als u animatie wilt toevoegen aan 3D-objecten die hoofdzakelijk uit vlakken bestaan. Voorbeelden van deze aanpak zijn 3D-afbeeldingengalerieën of 2D-animatieobjecten die in de 3D-ruimte zijn gerangschikt.

  2. 2D-driehoeken genereren op basis van 3D-geometrie en deze driehoeken renderen met structuren. Als u deze aanpak kiest, moet u eerst gegevens over 3D-objecten definiëren en beheren, en deze gegevens vervolgens converteren naar 2D-driehoeken die kunnen worden gerenderd. U kunt bitmapstructuren toewijzen aan deze driehoeken. De driehoeken worden vervolgens naar een grafisch object getekend met de methode Graphics.drawTriangles() . Voorbeelden van deze aanpak zijn het laden van 3D-modelgegevens uit een bestand en het model op het scherm renderen, of 3D-terrein genereren en tekenen als driehoekige netten.