Wenn ich Ihren Kommentar richtig interpretiert habe, möchten Sie:
Sprites in Flash beliebig formen und die Form dieser Sprites automatisch extrahieren, um sie als Kollisionsformen in Box2d zu verwenden
In der Regel sind Kollisionsformen viel einfachere Formen als das grafische Element, das sie darstellen (Leistung). Ein sehr detailliertes 3D-Modell kann nur durch einen abgeschrägten Zylinder dargestellt werden.
Einige physische Körper können automatisch durch Algorithmen erstellt werden, aber es ist auch üblich, sie manuell zu zeichnen / modellieren. Wenn Sie nicht über eine große Anzahl unterschiedlich geformter Sprites verfügen, lohnt es sich höchstwahrscheinlich nicht, einen Algorithmus zu implementieren, der Formen für Sie extrahiert.
Wenn Sie sich das folgende Bild ansehen, können Sie sehen, dass eine sehr komplexe Form durch einige Kreise und einfache Polygone dargestellt werden kann (muss konvex sein!). Das manuelle Zeichnen dieser Formen ist (höchstwahrscheinlich) jedem Algorithmus überlegen, den Sie entwickeln können.
![Kollisionsformen](https://i.stack.imgur.com/efyGu.png)
Sie können diese Formen in einem Vektorwerkzeug wie Illustrator oder Inkscape zeichnen und in SVG exportieren, das leicht analysiert werden kann. Oder verwenden Sie Flash und exportieren Sie die Formen als FXG. Dies ist auch ein Format, das leicht analysiert werden kann.
Wenn ich Sie noch nicht überzeugt habe und Sie die Formen wirklich programmgesteuert aus Ihren Sprites erstellen möchten, sind hier zwei Ansätze, die möglicherweise funktionieren.
- Rendern Sie das Sprite in eine Bitmap (mit BitmapData.draw ) und führen Sie eine Vektorisierung auf dem Alphakanal durch. Wenn die resultierende Form konkav ist, triangulieren Sie sie.
- Verwenden Sie die as3swf- Bibliothek, um eine vorhandene SWF-Datei in Flash zu analysieren. Von dort können Sie Forminformationen extrahieren. Ihr Hauptproblem hierbei wird sein: Finden der Form (en), die den Umriss Ihres Objekts bilden. Konvertieren Sie diese Form in konvexe Polygone.