
AS3Exporterのテスト(要:FlashPlayer9)
Blenderから頂点・頂点インデックス・UV座標値を、各種AS3用3Dエンジン(Away3D、PV3D、Sandy)に対応した.asファイルとして吐き出すスクリプトが公開されてたのを最近見つけたんで使ってみた。スクリプト本体のダウンロードや、導入方法、基本的な使い方は、下記配布元で懇切丁寧に解説されてる。
http://rozengain.com/?postid=54
Away3D2.0以降で使う場合は、パッケージ構造の変更に対応するために下記のような修正が必要だった。
AS3Export.py – 187〜199行目
as_output_string = "package "+as_package_name.val+" {\n"
as_output_string += "\timport away3d.core.*;\n"
as_output_string += "\timport away3d.core.mesh.*;\n"
as_output_string += "\timport away3d.core.material.*;\n"
as_output_string += "\timport away3d.core.utils.*;\n\n"
as_output_string += "\tpublic class "+as_class_name.val+" extends Mesh {\n"
as_output_string += "\t\tprivate var ve:Array;\n"
as_output_string += "\t\tprivate var fa:Array;\n\n"
as_output_string += "\t\tpublic function "+as_class_name.val+"(init:Object = null) {\n"
as_output_string += "\t\t\tsuper( init );\n"
as_output_string += "\t\t\tinit = Init.parse(init);\n"
as_output_string += "\t\t\tve = [];\n"
を、下記のように変更した。
as_output_string = "package "+as_package_name.val+" {\n"
as_output_string += "\timport away3d.core.*;\n"
as_output_string += "\timport away3d.core.base.*;\n\n"
as_output_string += "\tpublic class "+as_class_name.val+" extends Mesh {\n"
as_output_string += "\t\tprivate var ve:Array;\n"
as_output_string += "\t\tprivate var fa:Array;\n\n"
as_output_string += "\t\tpublic function "+as_class_name.val+"(init:Object = null) {\n"
as_output_string += "\t\t\tsuper( init );\n"
as_output_string += "\t\t\tve = [];\n"
それ以外は今のとこ問題なく、最新の2.46でもちゃんと動作した。
忘れがちなので要注意だったのが、Colladaエクスポーターと違って△ポリに自動変換してくれないので、エクスポート前に△ポリに変換しておくべし。
書き出された .as は、普通にMeshを継承したクラスになってるので、プリミティブオブジェクトと同じように扱えばオッケ。
当然ながらアニメーションには対応してないけど、これ結構便利かも。頂点とUV定義だけで充分な場合Collada使う意味無いし、そういうケースのほうが多いし。あと、モデルデータがファイルとして存在しない分コンテンツ保護にも繋がりそう。