Januar 2008
Papervision3D
inszeniert Mobile Movies im Raum
Anfang 2007 war Papervision3D (PV3D) im experimentellen Bereich bereits seit einigen Monaten das Thema, bei kommerziellen Projekten kam es jedoch kaum zum Einsatz. Im Artikel werden anhand des Fallbeispiels der Website zum "Mobile Movie Award" von o2 die Herausforderungen und Möglichkeiten des kommerziellen Einsatzes von Papervision3D im Flash Player 8 beschrieben.
Text: Michael Sattler und Dennis Baum
Der Mobile Movie Award, bei dem User selbstgedrehte Handyfilme einschicken können, wurde 2007 zum dritten Mal von o2 ausgelobt. Der Mobilfunkanbieter glaubt daran, dass sich Handyfilme mit ihrer sehr eigenen Bildsprache als eigenes Genre durchsetzen können und spricht mit dem Award Profis wie auch Amateure an, sich mit ihren Clips zu bewerben. Anfang dieses Jahres sollte der leicht angestaubte HTML-Auftritt des Awards durch eine Flash-Lösung ersetzt werden. Bei dem zu Grunde liegenden Konzept für die neue Website stand die Bühnenmetapher einer Award-Präsentation im Mittelpunkt, das heißt, der Content der Seite sollte auf einer Bühne präsentiert werden, um die herum eine Anmutung von Tiefe geplant war. Da lag die Idee nahe, dass sich der Content selbst im Raum dreht. Trotz einiger Unsicherheiten im Hinblick auf die Umsetzbarkeit sollte Papervision3D zum Zuge kommen, um die räumliche Darstellung zu verwirklichen.
Papervision3D im Flash Player 8
Die größte Einschränkung, mit der das Projekt von Anfang an konfrontiert war, war die Entwicklung für den Flash Player 8, auf den man sich als Kompromiss geeinigt hatte, nachdem von Kundenseite ursprünglich die Ausrichtung auf den Player 7 angedacht war. Ohne die Performancesteigerung durch AS3 gab es allerdings Bedenken, ob die Performance im Flash Player 8 für PV3D ausreichen würde.Die in diesem Fall zur Verfügung stehende PV3D-Version war die AS2 "Beta RC0" in Revision 10 vom 17.12.2006. Als Content-Präsentationsflächen wurden Planes gewählt, also flache, rechteckige 3D-Elemente. Als Textur für diese Planes wurde das MovieClipMaterial genutzt. Das heißt, die einzelnen Elemente können wie gewohnt in "normalen" MovieClips aufgebaut werden. Diese Clips wurden dann als MovieMaterial instanziert und als MaterialObject3D an die jeweilige Plane übergeben.
Auf diesem Weg wird der MovieClip in ein BitmapData-Objekt geschrieben. Dies führt jedoch normalerweise dazu, dass etwaige Interaktionselemente in den MovieClips nur noch als Teil der Bitmap vorhanden sind und alle Events verlieren. Der wichtigste Schritt war daher, für dieses Problem einen Workaround zu finden. Denn die geplante Website sollte natürlich Standardelemente wie Buttons, Scroller und Formulare enthalten.
Einbau der Interaktionen
Im Hinblick auf den Workaround wurde zunächst mit dem Gedanken gespielt, für jede Interaktion eine unsichtbare 3D-Fläche in den Raum an die Position des dazugehörigen grafischen Elements zu legen. In der frühen Phase des Projekts erschien dies allerdings zu unsicher, da noch nicht alle Screens vorlagen und somit das Ausmaß an nötiger Interaktion noch nicht endgültig zu bewerten war. Darüber hinaus hätte dies zur Folge gehabt, dass zum Beispiel das Scrollen eines Textfelds einen ständigen Aufruf der updateBitmap()-Methode sowie das Setzen des animated-Parameters für die jeweiligen MovieClipMaterials auf true nötig gemacht hätte. Da aber allein der animated-Parameter für das Setup schon zu viel Performance benötigte, wurde diese Herangehensweise kurzerhand verworfen.Das Problem wurde folgendermaßen gelöst: Immer dann, wenn User-Interaktion nötig wird, wird von 3D auf 2D umgeschaltet. Das bedeutet, dass alle als Textur verwendeten Clips zusätzlich als Standard-2D-MovieClip in der Anwendung vorgehalten werden müssen. In der Anwendung selbst verhält sich dies wie folgt: Für jede Plane, die sich über der Bühne befindet, wird, sobald ihre Bewegung abgeschlossen ist, der dazugehörige 2D-MovieClip auf _visible=true gesetzt. Damit dies für den User unbemerkt geschieht, mussten beide Clips, 3D-Material und 2D-MovieClip, völlig identisch aussehen und der 2D-Clip musste immer an der genauen Position des Planes eingeblendet werden.
Die Positionierung des 2D-Clips an die exakte Position des 3D-Materials hatte zur Folge, dass das Flash-Koordinatensystem mit seinem Ursprung in der linken, oberen Ecke mit dem PV3D-Koordinatensystem abgeglichen werden musste, dessen Ursprung sich in der Mitte der Szene befindet. Dieses "Best-of-both-worlds"-Konzept hatte den Vorteil, dass die Stärken von PV3D – Objekte mit überschaubarem Aufwand im 3D-Raum zu bewegen – genutzt werden konnten, ohne die Performance durch Dinge zu belasten, die nicht diesem Zweck dienen.



































