-
import org.papervision3d.scenes.*;
-
import org.papervision3d.cameras.*;
-
import org.papervision3d.objects.*;
-
import org.papervision3d.materials.*;
-
-
-
//::::::::::::: VIDEO ::::::::::::::
-
-
// Timer Klasse und Events vom Typ "TimerEvent" importieren
-
import flash.utils.Timer;
-
import flash.events.TimerEvent;
-
import flash.display.Sprite;
-
import flash.events.MouseEvent;
-
-
-
// ::::::: Video initialisieren ::::::::::::::
-
-
// neues NetConnection-Objekt erzeugen
-
var nc:NetConnection = new NetConnection();
-
-
// lokale Verbindung bzw. HTTP-Verbindung erstellen
-
nc.connect (null);
-
-
//neues NetStream-Objekt
-
var ns:NetStream = new NetStream(nc);
-
-
// neuer Client
-
var customClient:Object = new Object(); // neues Objekt für die Meldungen
-
ns.client = customClient;
-
-
//NetStream mit dem Video-Objekt verknüpfen
-
vid1.vidDisplay.attachNetStream(ns);
-
-
// Video laden und starten
-
ns.bufferTime = 2; // Puffergröße festlegen
-
ns.play ("elephant-dream.flv");
-
-
-
// EventListener für Statusmeldungen
-
ns.addEventListener(NetStatusEvent.NET_STATUS, statusMessage);
-
-
// Funktion zur Anzeige des Status
-
function statusMessage(statusObject:Object) {
-
-
trace ("Message: " + statusObject.info.code);
-
-
if (statusObject.info.code == "NetStream.Play.Stop") {
-
ns.seek(0);
-
}
-
-
};
-
-
-
-
// ::::::::::: PAPERVISION :::::::::::::::::
-
-
-
-
// neues Sprite
-
var mySprite:Sprite = new Sprite();
-
-
// Sprite auf die Buehne setzen
-
this.addChild(mySprite);
-
-
// x und y Koordinaten festlegen
-
mySprite.x = 400;
-
mySprite.y = 300;
-
-
// neues Objekt vom Typ Scene3D
-
var scene:Scene3D = new Scene3D(mySprite);
-
-
// neue Kameraperspektive
-
var myCamera:Camera3D = new Camera3D();
-
-
// Bitmap-Objekte erstellen
-
var bmd:BitmapData = new BitmapData(320, 240);
-
-
// BitmapMaterial erstellt eine Texture aus einem Bitmapobjekt
-
var myMaterial:BitmapMaterial = new BitmapMaterial(bmd);
-
-
// zweiseitig (also auch eine Rueckseite)
-
myMaterial.oneSide = false;
-
-
// 8,8 --> mapping artifacts vermeiden durch Unterteilung in kleinere Segmente
-
var myPlane:Plane = new Plane(myMaterial,320, 240, 8, 8);
-
var myPlane2:Plane = new Plane(myMaterial,320, 240, 8, 8);
-
-
// vom Mittelpunkt auf x = 800 verschieben
-
myPlane.x = 320;
-
myPlane.y = 240;
-
-
// Rechteck mit der Flaeche zum Kreismittelpunkt ausrichten
-
myPlane.rotationY = 270;
-
//myPlane.rotationZ = 45; // Neigung
-
-
// zur 3D-Szene hinzufügen
-
scene.addChild(myPlane);
-
scene.addChild(myPlane2);
-
-
-
// :::::::::::::::::::::::::::::::::::::::::::
-
-
// jedes Frame ausfuehren
-
this.addEventListener(Event.ENTER_FRAME, updateStage);
-
-
// Anfangswinkel setzen
-
var angle:Number = 0;
-
-
function updateStage(evt:Event)
-
{
-
// Winkel um zwei Grad erhoehen
-
angle += (2 * Math.PI) / 180;
-
-
// neues Kamera x und z Position ausrechnen (Einheitskreis multiplizieren mit Faktor)
-
myCamera.x = Math.cos(angle * 2) * 720;
-
myCamera.z = Math.sin(angle * 2) * 720;
-
-
myCamera.zoom = (this.mouseY / 100) + 2;
-
-
// Bitmap erzeugen
-
bmd.draw(vid1);
-
-
// Bitmap hineinladen
-
myMaterial.updateBitmap();
-
-
// Bild aus aktueller Kameraposition erstellen
-
scene.renderCamera(myCamera);
-
}
-
-
// Original MovieClip (nicht 3D) ausblenden
-
vid1.visible = false;
7 Kommentare zum Beitrag "Papervision 3D"
Ein Tutorial für den Einstieg in Papervision 3D kann auf gotoandlearn.com (Lee Brimelow) angeschaut werden.
Zwei recht beeindruckende Papervision 3D Beispiel, wie eine 3D First Person Engine mit P3VD gemacht werden kann:
Hallo,
ich würde gerne wissen, wann es wo Seminare gibt betreffent papervision, danke.
Lieben Gruß
Valerie
Ich habe bisher nur im Blog von PV3D von Workshops zum Thema Papervision gelesen, z.B. hier (war schon im Oktober):
Es gibt ein neues Papervision 3D Showcase, dass die 3D-Möglichkeiten der ActionScript3-Engine präsentiert:
Zwei interessante Papervision-3D-Experimente von Lee Brimelow:
und
Hallo! Weiß jemand, ob man mit PV3D oder Swift 3D stl, dxf oder vrml-Dateien erzeugen kann?
Schreibe einen Kommentar