AS3-Tutorium:Physics:3D-Physics-Engines
Dieser Artikel wird derzeit von einem Autor gründlich bearbeitet. Die Inhalte sind daher evtl. noch inkonsistent.
Grundlegendes Prinzip
Physics-Engines stellen lediglich Algorithmen für die physikalische Berechnung, jedoch keine Routinen zur Darstellung von Objekten, zur Verfügung! Da Flex oder Flash selber auch keine echten 3D-Engines besitzen, brauchen Sie für die Darstellung eine zusätzliche Bibliothek. Im Code müssen Sie selbständig die physikalische Objekte mit den darstellenden Objekten verbinden, da beide sonst unabhängig voneinander agieren würden. Weiterhin müssen sie beachten, dass die physikalische Berechnung so kompliziert ist, dass nicht alle Objekte die Sie darstellen können, auch physikalisch in ihrer ganzen Komplexität berücksichtigen können. Auf den Umgang mit den Libraries in AS3 wird später genauer eingegangen.
Bemerkung 1
Zu einer Definition kann man viele sinnvolle Bemerkungen angeben.
Bemerkung 2
Natürlich sollte eine Bemerkung einen sinnvollen Titel erhalten und nicht einfach Bemerkung 1, Bemerkung 2 etc. genannt werden.
3D-Engines
Papervision3D
Papervision3D eine sehr populäre 3D-Engine für Actionscript. Sie kann alle wichtigen primitive Objekte wie Quader, Kugeln, Ebenen und Zylinder darstellen. Auch komplexe Objekte, beispielsweise 3D-Models aus Maya sind mit einer Hilfsklasse, dem Collada, sehr einfach einzubinden.
Man kann koordinatengenau Punktlichter setzen und verschiedene Materialen, wie beispielweise das einfache FlatShadeMaterial oder das WireFrameMaterial auf seine Objekte anwenden.
Und auch sonst ist Papervision eine recht mächtige Engine. Sie unterstützt beispielsweise die komplexe Rechnung mit Matrizen und stellt uns mit der Matrix3D eine Klasse mit vielen nützlichen Methoden zur Verfügung.
Die Dokumentation von Papervision3D fällt etwas spärlich aus und verzichtet auf eine ausführliche Beschreibung der Methoden. Da aber einige gute Tutorials im Web zu finden sind fällt der Einstieg nicht schwer.
Insgesamt ist die Arbeit mit Papervision sehr simpel und effektiv: Man erstellt seine Objekte; fügt diese der Szene hinzu, konfiguriert den Renderer, und los geht’s.
Sonstiged Engines
Sandy3D
Away3D
Alternativa
3D-Physics-Engines
WOW-Engine
WOW, nicht zu verwechseln mit World of Warcraft, ist die verbreitetste aller 3D-Physics-Engines für Actionscript. Man stößt bei der Internet-Recherche fast nur auf Beispiele mit der WOW-Engine, was nicht ganz verständlich ist.
Die Arbeit mit der WOW-Engine ist durchweg intuitiv und komfortabel. Man erstellt seine Objekte, modifiziert ggbf. die Elastizität o.ä., verbindet sie mit der Darstellung und aktualisiert sie jedes Frame.
Die Engine hat jedoch einige große Nachteile:
1. Die Performance lässt zu wünschen übrig. Schon nicht allzu viele gleichzeitig zu berechnende Objekten zwingen die Physics-Engine in die Knie.
2. Es gibt keine Kollisionsberechnung von Quader, Würfeln.
3. Auch sonstige Feinheiten wie Federn o.ä. fehlen.
Was dann überhaupt noch übrig bleibt: Die Kollision von Kugeln sowie einfache Gravitation; bei schlechter Performance. Es ist daher unverständlich, warum die WOW-Engine einen solchen Status erlangt hat. Eine bessere Alternative wird im Folgenden dargestellt.
flashjiglib
Die flashjiglib ist aus unerklärchlich Gründen in den Weiten des World Wide Webs sehr schwer zu entdecken. Sie ist eine Portierung der jiglib aus C++ und deutlich ausgereifter als die WOW-Engine:
Die Arbeit mit der flashjiglib ist ebenso intuitiv, die Performance um Welten besser( durch zahlreiche Demos bewiesen, siehe[...Link..]). Die jiglib unterstützt die Kollision von Kugeln, Quadern, begrenzten Ebenen und Kapseln. Die physikalische Berechnung von Federn ist ebenfalls möglich. Last but not least bringt die flashjiglib Komfortfunktionen mit sich; die es beispielsweise erlauben, die Papervision-Initialisierung zu verkürzen.
Tutorial
bla
test
Quellen
Wenn die Definitionen und/oder die Anmerkungen nicht von einem selbst stammen, sollte man die Quellen angeben (das sind natürlich nur Beispiele, keine echten Quellen dieses Artikels :-) ):
- Hinz und Kunz, "Der Bau einer Musterseite", 7. Auflage, Wiki-Verlag, 1931
Besser ist es spezielle Quellendokumente zu erstellen (und diese dann auch mit Inhalt zu füllen):
- Kowarschick, W. et al. (2005): Musterquelle (Buch)
- Goldratt, E.; Cox , J. (2004): The Goal
- Leach, L. (2005): Critical Chain Project Management
Auch externe Quellen können zitiert werden.
- Kowarschicks gesammelte Werke (besser als eigenes Quellen-Dokument, basierend auf der Vorlage:Quelle:URL)
- Wikipedia (so nicht, da zu allgemein und außerdem nicht der Wikipedia-Verweis benutzt wurde)
- Wikipedia:Vorlage (Datenverarbeitung) (sondern eher so, aber noch besser auch als eigenes Quellen-Dokument)
Siehe auch
Zu guter letzt kann Sekundärliteratur angegeben werden, die zwar im Artikel nicht direkt verwendet, aber doch irgendwie interessant ist. Außerdem sollten eine oder mehrere Kategorien angegeben werden sowie ein Verweis auf den zugehörigen englischen Artikel in GlossaryWiki, auch wenn es diesen noch gar nicht gibt.
- Theory of Constraints (Quellen) (eine ganze Sammlung von Quellen in einem Quellen-Dokument)
- Wikipedia: Formatvorlagen