michinoko blog

Information

date: 2012/07/31
category: seminar.

Stage3D 勉強会 (第2回)

あっというまに満席になったセミナーだけに内容はかなり濃くコアな部分で楽しかった。
僕自身はまだ手を出していなかったので、業界に置いていかれているなと焦り再燃。
ただStage3Dも良いことばかりではなく、開発には今までのFlashとは違う癖があるので、アプリ/サイトの設計をよく考えないといけないかなと。

あと直接はStage3Dとは違うのですが、3Dライブラリまわりの話がかなり出てて、Stage3Dの描画速度のおかげで、昔は重くてスペックの高いマシンでないと動かないような3Dも初代iPadなどでもさくさく動いている!

ただ3D自体は、Flash内でも頑張ればできないこともないでしょうが、純粋の3Dソフトを使ってモデリングしたほうが圧倒的に楽なので、Blenderなどの紹介もよかった。
僕はモデリングするのにフリーの3Dソフトでは、メタセコイヤを使ったことはあるのですが、Blenderは同じフリーでもアニメーションまでできるということで、3Dソフトとしての癖があるらしいですが、ちょっと触ってみたくなるなぁ。w

ちなみに、「Away3D 4.0 Gold」という最近正式リリースされたライブラリのShowreel 。
こんなのがインタラクティブに動く!!
http://www.youtube.com/watch?v=qFT39KdBRYk

以下はセミナーメモ。

Stage3D 勉強会 (第2回)
http://atnd.org/events/30921

■#1:野中さん「Stalingフレームワークの最適化」—–
・「状態」の変更をできるだけ少なく。updateの処理。Canvas的なもの。
・Sprteはコンテナに使う。
・「状態」を決める主なプロパティ
・「着色」のプロパティ。モバイルでは描画が滑らかでなくなることがある。
・1フレーム数の描画数が取れるようになる。Staling1.2から。プロパティ(showStats)をtrueにする。
→フレームにかける。フレームでなくて、コンストラクタに書いてもok。
・「画家のアルゴリズム」
→状態が同じであれば、1回の描画でいける。描画の順番を考えなければいけない。
・「テクスチャアトラス」
→ADCにスプライトシートを使ったアニメーションアーカイブがある。
→スプライトシート(FlashCS6からの機能。)が1つだと、1回の描画で書き出せる。
→テクスチャアトラスは必須!!
→2048×2048が最大サイズ。
→同じテクスチャアトラスを描画順にならべる。まとめると描画の回数を減らせる。
・Spriteオブジェクトのフラット化(QuadBatchクラス)
→GPUのデータ転送が1回になる。ただし状態が同じとき。
→状態を変えるときは、flatten()を再度呼び出すか、unflatten()する
・1個のインスタンスは1個の親に1個だけ入れれる。そういう仕様。
→QuadBatchはいくつも描画される
→注意:
すべて同じ状態。
Image、Quad、QuadBatchオブジェクトだけ
後から状態を変えれない。オブジェクトは除けない。→リセットが必要となる。
・表示オブジェクト四天王(Quad,Container,Sprite,Batch)では、Batchが最速。
・ActionScriptの設定
→BlendMode.NONEに設定する
・DisplayObject.widthやheightプロパティを繰り返し参照するのは避ける。パラメータに代入してから使いまわす。
・staticにして、newしない。メモリを使いまわす。setToとかも。sHelperRectとか。
・touchableプロパティをfalseにする。マウス操作の対象にしないとき。
→子オブジェクトが全部なら、親ごとfalseをセットする
・Starling1.2から。dispatchEventWith()メソッド
→dispatchEventWith(“customType”, false, “testData”);と第3引数に任意のオブジェクト型にそのデータを加えられる。
・ガベレージコレクションを節約できる
・このへんの話
http://www.fumiononaka.com/TechNotes/Flash/FN1206007.html
http://fumiononaka.com/TechNotes/Flash/FN1206002.html

■#2:池田さん「Away3D 4.0 Gold入門」
・個人も商用も無料(ライセンスはApache License v2.0)
・Stage3Dを利用したライブラリ
・2012/07/16に正式公開
・Adobeスポンサー。開発終了の心配はなくなった?
・3dsMaxからプラグインで、AWDデータ(Away3D独自形式)を書き出せる。互換性が高い!らしい。
・Away3DとStarlingなどと混在できるようになった。Starlingのパーティクルエフェクトとか。
→2Dと3Dを混ぜて使える。適材適所。
・Away Physics
→バレットエンジン。C言語のライブラリをAlkemyあるけみーを使って高速演算可能に。3Dの物理演算。
→衝突判定には、ドーム状のシンプルな形で囲って衝突判定しようね。重くなるよ。
→ドメインメモリーを使っている→Stage3Dと同時に使うとFlash Premium機能扱いになるので、Adobeに課金が発生するかも。。。
・ライブコーディング
・簡単に試すなら、ドキュメントクラスはSpriteクラスでなく、View3Dクラスを継承する。
・マテリアルとジオメトリーを、メッシュクラスで結びつける。sceneにメッシュをaddChildする。
・EnterFrameの中で、レンダリングしてあげる。render()。
・PointLightとか入れるとそれっぽい。
・StaticLigthPickerとかに配列保存してあげて、一時的に使う?
・normalMapがバンプマップ。
・反射の制御も可能。スペキュラーも対応。specularMap。
・Stage3Dの勉強には
→flashdailyがオススメ。http://flashdaily.net/

■#3:393さん「Alternativa3DでiPhoneゲーム」
・グライダーゲーム、風をつかんで遠くまで飛ばすゲーム。
・iOSのNative機能の実装。GameCenter(LeaderBoard。世界のヒトと得点共有?)、Twitter連携。
・3Dソフトは、Blender。無料ソフト。3ds形式書き出せるけど、なんかおかしい。フラットシェーディングは無理。
・Alt3Dで読み込めるのは、dae,3ds,a3d。
→dae形式のときは、Blender側でつけたオブジェクト名を自分で指定する必要がある。
→他のやり方もあるので、393さんのブログをみてみよう。
・dispatchよりpublic関数とかのほうが速い。
・パフォーマンス測定時には、ipa-app-storeでコンパイルする。swfはリリースビルド。
・Flash制では、iPhoneの音が鳴り続ける。マナーモードが効かない。
・スライド資料
http://memo.393.bz/archives/2064

■#4:糸数さん「モデリングを始めてみよう」
・Blenderでのモデリング
・Blenderはイラレのパス(svg)形式を読み込める。
・1ヶ月もやれば簡単なものは作れるようになれるらしい