- ベストアンサー
Flashで3Dゲームを作成するには
Flashで3Dゲームを作成したいと考えています。 Windowsの3Dゲームアプリケーションを開発した経験はあるのですが、Flashはまったくの素人です。 "Flash 3D"で検索してSwiftというものが見つかりましたが、これは3Dデータを静的に組み込むもののように見受けられます。 3Dポリゴンをリアルタイムでグリグリ動かすようなゲームを開発したいのですが、Flashには(C++で言うところのDirectXやOpenGLのような)3D描画用のライブラリはあるのでしょうか? どなたかご教示いただけますと幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Flash は2Dの絵を扱うソフトですから、3次元座標を計算するためのクラスやポリゴンのレンダリング API などは一切提供されていません。 どうしてもやりたいのなら、1から自作するしかありません。 Flash なのに3Dらしきコンテンツを時おり見かけますが、それは 1) 3DCG 作成ソフトで最初から3Dで作り、その輪郭線をなぞって swf ファイルに出力する 2) ムービークリップに3次元座標を割り振り、それを元に遠近感を出す 3) 描画 API でポリゴンらしきものを描画する 4) 動きや見せ方を工夫して、いかにも3Dらしく見えるように作る といった、多大な努力と工夫の結果です。Flash にある3D関連のシステムを利用して作っているのではありません。 今時の家庭用ゲーム機や DirectX でフルポリゴンのゲームを作ったとしても、ポリゴンで視点がグルグル回ってというだけでは誰も感動してくれません。 ポリゴンを扱うために整備されたプラットフォームであり、ポリゴンの作品が当たり前のようにあふれている世界だからです。 Flash は本来は2Dの世界で平面的な発想で当たり前、その手の作品はどこにでもあって大した感動もありませんが、3Dというとちょっと珍しく高度なテクニックのように見えます。 本来はできないことだからこそ、Flash で3Dの表現というだけで見る人を感嘆させる作品になるのです。 **************************** 1) は、ご質問文にある通り Swift 3D などの 3DCG を本業とする編集ソフトを使う方法です。 最初は普通の 3DCG と同様にポリゴンを組み合わせてモデルを作り、動きを付けてアニメにします。 出来上がった 3DCG のポリゴンの輪郭線だけを抽出してセル画アニメのような絵にし、これを Flash Player で再生できる形式( swf ファイル)に記録します。 ”トゥーンレンダリング”というレンダラーを持っている 3DCG 編集ソフトでは、swf ファイルへの書き出しにも対応していることが多いようです。 一般に 3DCG は、写真と見紛うリアルな画像や質感の表現を目的にする傾向があります。 トゥーンレンダリングは逆に、リアルな 3DCG からセル画アニメのような平坦なイラストタッチの絵を作る目的のレンダリング方法です。 ・・・しかし、トゥーンレンダリングで作られた3D Flash は所詮はパラパラマンガと同じ原理で、3次元座標の計算やポリゴンの描画を行っているわけではありません。 要するに 3DCG から作るパラパラマンガのアニメなので、手描きでは難しいリアルな立体感や立体的な動きも表現できるというだけの話です。 再生するだけならいいのですが、プレイヤーの操作によってリアルタイムで画面が変わるゲームなどには不向きです。 **************************** 2) は Flash のムービークリップを使う方法で、いわゆる3Dスプライト(四角い平面のポリゴンにテクスチャを貼ったもの)に近いものです。 3Dでは、遠くにあるものほど小さく霞んで見えます。 この遠近感を3次元座標を割り振って計算により求め、ムービークリップの大きさやアルファ(透明度)に反映させます。 視点のベクトルを考えると、ズームや視点の移動も可能です。 旧 Macromedia の開発者向けのサイトに、ムービークリップで3Dらしい動きを表現する講座が載っていました。 現在は Adobe のサイト内に併合されています。 英語のページですが、よろしければご参照ください。 どうも、昔出版された書籍か何かの一部分だけを抜粋したもののようです。 ・Macromedia Flash Developer Center Flash Super Samurai Chapter 2:3D and Flash http://www.adobe.com/devnet/flash/articles/samurai_ch2.html ↑このページ自体は大したボリュームがなく簡単そうに見えますが、侮ってはいけません。ページ内のリンクで表示(またはダウンロード)できる PDF ファイルの内容が強烈です。 数学と・・・まあ、日本人なら英語もですが、自信がない方は見ない方がいいかもしれません(^^;) **************************** 3) はポリゴンの原理そのもののようなもので、Flash にある描画用スクリプトで1枚ずつポリゴンを描画します。 例えば四角形のポリゴンは4つの頂点を持っていて、4つそれぞれに3次元座標が割り振られています。 この頂点が移動・拡大 / 縮小・回転した時にどの座標に移動するかは、計算により求めることができます。 移動した先の頂点をそれぞれ線で結んだものが、最も原始的な3D表現であるワイヤフレームの表現です。 閉じた空間であれば、ActionScript では1色またはグラデーションで塗りつぶすことができます。 光源を設定し法線を求めて光源計算を・・・というのも、理論上はできるのでしょうが、そこまですると処理が重くなり現実的ではないと思います。 残念ながら、テクスチャを貼ることはできません。 Flash 8 ではビットマップを扱えるようになったので、上手くすればできるのかもしれませんが、処理は重いわメモリは食うわで、これまた現実的ではないと思われます。 Flash でポリゴンを描画する講座もあります。 やはり英語版なのですが、 ・Creating 3D Classes with ActionScript 2.0 http://www.adobe.com/devnet/flash/articles/3d_classes.html ↑ Flash MX 2004 以降に搭載された、ActionScript 2.0 対応の講座です。 どんなものが作れるかは、最後の” Putting the Pieces Together ”に簡単なサンプルがあります。 同じ著者の似たような内容で、Flash MX 向けの講座もあります。 こちらは ActionScript 1.0 向けです。 ・Creating real-time 3D objects with Macromedia Flash MX dynamic drawing tools http://www.adobe.com/devnet/flash/articles/flash_3d.html **************************** 4) は3Dでもポリゴンでもなく、ただ”3Dのように見せる”ためのごまかしに過ぎません。 例えばY軸回りに回転する物体を真正面から見ると、楕円を描いて動いているように見えます。 この点を利用してムービークリップを楕円の軌道を描いて回るように動かすと、3Dのような動きの出来上がりです。 これだけではあまり3Dらしく見えないので、もう1つ、「遠くにあるものほど小さく霞む」という特徴を利用します。 楕円の軌道ですと、楕円の左右の端に近寄るほど物体を細く上下に近寄るほど太く見せるという考え方でも、立体的な雰囲気を表現できます。 これらの表現方法には公式などは特になく、様々な考え方があります。 Flash を使ったアイデアや作例を多数扱っているサイトや書籍では、”3Dっぽい表現”の作り方を取り上げているところもあります。 興味がありましたら探してみてください。 ---------------------------------------------------------------- ・・・とまあ、どの方法にしても、3Dのゲームにするとなるとあまり実用的ではありませんね。 もともと3Dは対象外のソフトですから、3Dらしい動きを表現することだけで手一杯になってしまうのも無理はありません。 Flash で3D関連の処理を自作するとなると、Flash と ActionScript はもちろん、3DCG や数学の知識も必須です。 3D関連のライブラリを用意してくれている環境では、ポリゴンをどうやって描画しているか、中でどんな計算が行われているかはとりあえず知らなくても何とかなってしまいます。 ですが、1から自作するとなるとそうはいきません。3DCG の原理や計算方法を知らないと、ポリゴンを描画する、もしくは3Dらしく表現するための基本のシステムを構築できません。 3Dは計算が複雑になるので、処理を高速にするための知識もあると便利です。 Web での公開にも向く3Dゲームでしたら、#1の方がおっしゃる Director というソフトが向いています。 Flash の兄貴分のようなものですが、ActionScript ではなく Lingo というスクリプト言語が搭載されています。 ただし、高機能であるだけにお値段も相当張ります。 市販のゲーム並にフルポリゴンのゲームを・・・とお考えなら、やはり DirectX などで作った方が充実したものが作れると思いますよ。
その他の回答 (2)
- chem_taro
- ベストアンサー率32% (33/101)
「SWIFT 3D」は2Dレンダラーですので、ポリゴンの描画エンジンなどではありません。 基本的に、FLASHで3Dを扱うのは「コマアニメ」として書き込んでいくことになると思います。 したがって、FLASHでグリグリ動かすようなものは無理です。(コマアニメで模擬的に再現する・・・のもかなり大変でしょうね)
お礼
お礼を言うのが遅くなり申し訳ありませんでした。 アドバイスありがとうございます。
Flash は 3D に大変向いていません。 ご質問を見た感じ,しようと考えられているのは, Macromedia(Adobe)で言うと, 「Director」 の Shockwave 3D のようなものではないでしょうか。 「Shockwave 3D Gallery」 http://www.adobe.com/jp/products/shockwaveplayer/3d_content/samples/ Flash でも 透視変換 という考え方を使えば, できるにはできるようなことをこのコミュニティの某人がおっしゃっていましたが, まぁ大変なことでしょう。 「"透視変換" Flash」 Google検索 http://www.google.co.jp/search?q=%22%E9%80%8F%E8%A6%96%E5%A4%89%E6%8F%9B%22+Flash
お礼
素早いご回答ありがとうございました。 Flashは3Dに向いていないということがわかりましたが、どうしても必要なので、なんとか自前で実装しようと思います。 アドバイスありがとうございます。
お礼
たいへん詳しい返答をありがとうございます。 Creating 3D Classes with ActionScript 2.0 の講座が参考になりました。