Se eu interpretei seu comentário corretamente, você deseja:
Ter sprites de forma arbitrária no Flash e extrair automaticamente a forma desses sprites para usá-los como formas de colisão no Box2d
Geralmente, as formas de colisão são formas muito mais simples do que o ativo gráfico que representam (desempenho). Um modelo 3d altamente detalhado pode ser representado apenas por um cilindro chanfrado.
Alguns corpos físicos podem ser criados automaticamente por algoritmos, mas também é prática comum desenhá-los / modelá-los manualmente. A menos que você tenha uma quantidade enorme de sprites de formas diferentes, provavelmente não vale a pena implementar um algoritmo que extraia formas para você.
Se você der uma olhada na imagem a seguir, poderá ver que uma forma muito complexa pode ser representada por alguns círculos e polígonos simples (devem ser convexos!). Desenhar essas formas manualmente (provavelmente) será superior a qualquer algoritmo que você possa criar.
Você pode desenhar essas formas em uma ferramenta vetorial como o Illustrator ou o Inkscape e exportá-las para o SVG, que pode ser facilmente analisado. Ou use o Flash e exporte as formas como FXG, que também é um formato que pode ser facilmente analisado.
Se ainda não o convenci e você realmente deseja criar programaticamente as formas de seus sprites, aqui estão duas abordagens que podem funcionar.
- Renderize o sprite em um bitmap (usando BitmapData.draw ) e execute a vetorização no canal alfa. Se a forma resultante for côncava, triangule-a.
- Use a biblioteca as3swf para analisar um arquivo SWF existente no flash. Você pode extrair informações de forma a partir daí. Seu principal problema aqui será: Encontrar as formas que formam o contorno do seu objeto. Converta essa forma em polígonos convexos.