Papervision3D Grundlagen I Basics
Dezember 5th, 2009 by adminPapervision3D Grundlagen: Papervision3D (in der Kurzform auch PV3D) ist eine Open Source 3D API, die es ermöglicht, dreidimensionale Inhalte mit Flash zu erstellen. Im folgenden Beispiel werden die ersten Grundlagen, also die absoluten Basics von PV3D erklährt. Das Ergebniss dieses Tutorials ist ein Pfeil der um X,Y und Z-Achse rotiert. Und so sieht er aus:
Den Code zu dem Beispiel entnehmt ihr hier:
package{ import flash.display.Sprite import flash.events.Event import org.papervision3d.view.Viewport3D import org.papervision3d.scenes.Scene3D import org.papervision3d.cameras.Camera3D import org.papervision3d.materials.ColorMaterial import org.papervision3d.objects.primitives.Arrow import org.papervision3d.render.BasicRenderEngine public class PV3D extends Sprite { private var viewport: Viewport3D private var scene: Scene3D private var camera: Camera3D private var material: ColorMaterial private var primitive: Arrow private var renderer: BasicRenderEngine public function PV3D():void { viewport = new Viewport3D(400, 250, false, true) addChild(viewport) scene = new Scene3D() camera = new Camera3D() renderer = new BasicRenderEngine() material = new ColorMaterial(0x990000) primitive = new Arrow(material) scene.addChild(primitive) addEventListener(Event.ENTER_FRAME, onEnterFrame) } private function onEnterFrame(e:Event):void { primitive.rotationY += 2 primitive.rotationX += 2 primitive.rotationZ += 2 renderer.renderScene(scene, camera, viewport) } } }
Papervision3D Grundlagen:
Neben dem eigentlichen Objekt und seiner Oberfläche gibt es vier grundlegende Elemente jeder Papervision3D-Anwendung. Hier eine Brücke zum Verständnis: Zunächst wäre da der Raum und als diesen könnt ihr euch die Instanz von Scene3D vostellen. Dann der Sichtbare Bereich, das Fenster zu diesem Raum, auf dem räumliche Inhalte abgebildet werden: das Viewport3D-Objekt. Das muss auf der Bühne liegen. Als nächstes der Betrachter oder die Kamera, deren Position über die Perspektive bestimmt, naheliegender weise das Camera3D Objekt. Und zu guter letzt muss jede 3D-Szene gerendert werden, das übernimmt das BasicRenderEngine-Objekt.
private var viewport: Viewport3D private var scene: Scene3D private var camera: Camera3D private var material: ColorMaterial private var primitive: Arrow private var renderer: BasicRenderEngine
Als Textur wird hier eine simples Farbmaterial genutzt, natürlich gibt es die Möglichkeit Bitmaps und auch interaktive Inhalte zu nutzen. Doch für den Anfang sollte das reichen, weiter gehts mit dem eigentlichen Objekt (dem Pfeil), dass zu den primitiven Objekten von Papervision3D gehört und zur Initialisierung ein Material erfordert, also die rote Textur (das ist das ColorMaterial-Objekt). Anschließend wird der Preil noch der szene hinzugefügt:
material = new ColorMaterial(0x990000) primitive = new Arrow(material) scene.addChild(primitive)
Anmerkung Nutzt man statt eines Pfeils andere Modelle, ist es möglich zusätzlich anzugeben, aus wievielen Segmenten das jeweilige Objekt aufgebaut werden soll. Hierbei gilt grundlegend, je mehr Segmente dabei zum Einsatz kommen, desto detailierter die Form (gut vorstellbar mit Kugel-Objekten) und desto höher die erforderliche Rechenkapazität.
Gerendert werden muss, bei bewegten 3D-Inhalten, in jedem Frame, von daher bietet es sich an, einen Listener für ein EnterFrame Event zu registrieren. Um eine einfache Animation zu erzeugen, werden vor jedem Rendern die Rotationswerte des Pfeils auf allen Achsen verändert, was zu der Drehbewegung führt:
addEventListener(Event.ENTER_FRAME, onEnterFrame) private function onEnterFrame(e:Event):void { primitive.rotationY += 2 primitive.rotationX += 2 primitive.rotationZ += 2 renderer.renderScene(scene, camera, viewport) }
Das wars auch schon, alles was bleibt, ist es viel Spaß beim Ausbau dieser einfachen PV3D Animation zu wünschen und natürlich bei den folgenden Grundlagen-Tutorials.