. .
CREATE OR DIE Special Downloads Shop webinale

Schauplatz

Artikel
  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Oktober 2007

Papervision3D, Flash und Konsorten

Endlich erhält Flash in Sachen 3D ganz neuen Tiefgang

(Link zum Artikel: http://www.createordie.de/cod/artikel/1318)

Frei begehbare 3D-Räume sind jetzt auch mit Flash möglich. Wie das funktioniert? Papervision3D macht es möglich...

Text: Frank Reitberger

Frei drehbare 3D-Würfel sind wie das obligatorische Kaninchen, das neuerdings ein jeder ohne Probleme aus dem Hut zaubert. Wie spannend ist das also noch? Absolut frei begehbare 3D-Räume, die beispielsweise als Showroom fungieren und in denen dann komplett texturierte Einrichtungskollektionen präsentiert und erlebbar werden, sind da wohl eher die Ausnahme denn die Regel. Wäre das nicht mal eine gelungene Abwechslung? An dieser Stelle sendet Flash endlich kein Testbild mehr, sondern füllt die z-Achse, dank Papervision3D, mit exquisitem Programm!

Unter der Vielzahl an Verwendungsmöglichkeiten der Open Source 3D-Engine für Flash werden hier zwei Varianten genauer unter die Lupe genommen:

  • mit einem komplexen 3D-Charactermodell in Flash arbeiten
  • Flashvideo-Streams direkt auf 3D-Objekte projizieren

Eine gute Figur machen...
Ersetzen wir also zuerst den schon leicht angestaubten 3D-Würfel durch ein etwas aufwändigeres 3D-Charactermodell. Ich habe da mal was vorbereitet und in einem 3D-Programm meiner Wahl schnell ein paar Polygone in Form gebracht, texturiert und anschließend für den Import in Flash vorbereitet (3D-relevante Dateien liegen diesem Artikel bei).

Wer die Wahl hat, hat die Qual
Es gibt viele Möglichkeiten, um an ein 3D-Modell zu kommen, welches dann in Flash verwendet werden kann. Zum einen kann man der hausinternen 3D-Abteilung so lange auf den Wecker fallen, bis diese entnervt ein Modell herausrückt, um wieder in Ruhe arbeiten zu können. Zum anderen sollte man aber die Alternative in Betracht ziehen, es selbst mal auszuprobieren. In einem 3D-Programm seines Vertrauens (Studio Max 3D, Autodesk Maya, um schnell mal einige zu nennen) ein kleines 3D-Modell zu entwickeln, ist mit ein wenig Übung gar nicht so schwer und man bekommt so auch recht schnell brauchbare Resultate zustande. Zu beachten ist hierbei nur, dass das ausgewählte Programm auch über einen Collada-Exporter verfügt.

Collada... ist kein neuer Cocktail
Collada basiert auf XML und soll sich als offenes Austauschformat für Daten zwischen diversen 3D-Programmen etablieren. Hierbei werden nicht nur Modelle und Texturen weitergegeben, sondern auch spezifische Settings zwischen den 3D-Programmen ausgetauscht. Das heißt im Klartext, das in Maya entwickelte 3D-Modell wird über den Collada-Export exportiert und dann z.B. in 3D Studio Max wieder importiert. Die zuvor gesetzten Eigenschaften der 3D-Objekte, beispielsweise die Texturen, bleiben dabei erhalten, dafür ist das Format vorgesehen. Papervision3D kann übrigens auch mit Collada-Dateien umgehen, klingelt da was?

  1. rootNode = scene.addChild( new Collada("grid_only"),"rootNode" );

Da die Papervision3D Engine über eine Methode zum Collada-Import verfügt, ist das Collada-Format eben auch prima für den Import in Flash zu gebrauchen. Importieren wir nun doch einfach mal unser 3D-Austauschformat in Flash und arbeiten dort damit weiter.

  1. // klassen importieren
  2. import flash.events.*;
  3. import flash.display.Sprite;
  4. import org.papervision3d.scenes.*;
  5. import org.papervision3d.objects.*;
  6. import org.papervision3d.cameras.*;
  7. import org.papervision3d.materials.*;
  8. import org.papervision3d.events.*;
  9. // vartypes definieren
  10. var container :Sprite;
  11. var scene :Scene3D;
  12. var camera :Camera3D;
  13. var rootNode :DisplayObject3D;
  14. // setup 3d object & camera
  15. function init(){
  16. // sprite erzeugen und als
  17. // virtuelle bühne benutzen
  18. this.container = new Sprite();
  19. addChild( this.container );
  20. this.container.x = stage.stageWidth/2;
  21. this.container.y = stage.stageHeight/2;
  22. // 3D scene initialisieren
  23. this.scene = new
  24. Scene3D(this.container);
  25. // kamera hinzufügen
  26. camera = new Camera3D();
  27. camera.x = 3000;
  28. camera.z = -2000;
  29. camera.zoom = 12;
  30. camera.focus = 12;
  31. // leeres object namens "rootNode"
  32. // zu der scene hinzufügen welches
  33. // dann das collada-file lädt
  34. rootNode = scene.addChild(
  35. new Collada("grid_only.DAE")
  36. , "rootNode" );
  37. // scene rendern
  38. this.addEventListener(Event.ENTER_FRAME
  39. ,render3D);
  40. }
  41. init();

 

Kommentare
Bisher keine Kommentare
Neuer Kommentar
  • Gute Kommentare werden belohnt.
  •   (optional)
  •   (Kommentar abonnieren/Gravatar - wird nicht veröffentlicht)
  •    Benachrichtige mich bei nachfolgenden Kommentaren per E-Mail
  • -+
Tags
Werbung
Papervision3D