Thread(そうめん)× Away3D × Blenderで作成(僕がそうめんを使う理由的な)
August 22, 2008
Away3DのColladaアニメーションと、先日参加した「そうめんワークショップ」のおさらいを兼ねて作成。
作る際に気がついたことなど次の順に書いときます。
1.Actionscript Thread Library(そうめん)
2.Away3D
3.Blender
Actionscript Thread Library(そうめん)
使ってみて感じたこと。
1.addEventListenerぜんぜん使わなくなった
具体的には1箇所だけ使った(スレッドの構成ちゃんとすればなくすこと可能)。
2.順序だててプログラミングできる
addEventListenerを使うと、ハンドラメソッドに飛んで、そこからつぎに飛んで、、、という感じにあっち行ってこっち行って、となり、そのうち頭もこんがらがっていく。
スレッド使うと、メインの処理にスレッドをだーっと並べておけば、それが処理の流れそのものになり、順序だててプログラミングするのが楽でした。
3.あとからソースをみたときにわかりやすい
2で述べたように処理の流れはスレッドの順序を見ればわかり、その内容は個々のスレッドクラスを見ればわかる。というわけで、わかりやすい。
4.わりととりかえしがつく
(遠い目をしながら)addEventListener時代はイベントの順序を変えたくなったときに、手間がかかった。
「そうめん」使えば、スレッドの順序をかえてやるだけでいい。
スレッドを順番に処理してくれるシリアルエグゼキュータ(SerialExecutor)を使っていれば、なお簡単。
次のソースだとaddThreadした順番に処理が行われるので、addThreadする順番を変えてやればいい。
var serialExec:SerialExecutor = new SerialExecutor();
serialExec.addThread(initThread);
serialExec.addThread(loaderThread);
serialExec.addThread(loadedThread);
serialExec.addThread(displayThread);
serialExec.addThread(away3dControlThread);
serialExec.start();
些細かもしれないけれど、おっ、これいいじゃんという使い道。
ローディング表示で、100%になったら「complete !」と出して、しばらくしてからそれを削除して、コンテンツを表示する場合。
次のように書くと、2秒たってからその次の処理に行く。そこでremoveChild。
これまではタイマー使ってとかしてました。
loading.gotoAndPlay("complete");
sleep(2 * 1000);
そうめんワークショップの懇親会で、Beintaractive !様とProgressionとの併用についてちらっと話したところ、「個々のページクラス内でスレッド使うといいかも」と言っていたけれど、確かに。
Away3Dの話
今回、rev.612で作成。
rev.613以降だとオブジェクトがそもそも表示されないという事態に(れいによってBlenderから書き出したdaeの問題だと思いますが)。
また、rev.612で次のようにColladaにマテリアルセットしたところ、うまく反映せず(前はうまくいった気がした)。
_loader = Collada.load("./dae/people.dae",{material:new MovieMaterial(material)});
Blenderの話
note.x様も書いている通り、アニメーション付きdaeを作成する際、注意することがある。
今回はそのうちのふたつを反映しています(時が解決してくれるのかな)。
1.ルートボーンを二つにする
2.ボーン名にドットが含まれないようにする(Arm.RならArm_Rにしとく)
それぞれ入手先
Actionscript Thread Library(そうめん)
Away3D
Blender
最後に
「そうめんワークショップ」行ってよかったと実感。
開発者の口から開発者の言葉で話を聞くことで、ドキュメントの裏側に触れられる気がする。
9月4日のProgressionイベントも行きたいところ。
さとなお.comに次の一文がある。
「社外の人間と飲め。社内の人間とばかり飲んでるヤツはバカと思え」
世に広めたい言葉だと思った。
僕はと言うと、今年後半戦、勉強会やワークショップは都合つく限り行きたい。
タグ:
Trackback
Trackback URL for this entry:



















