ページ

2008年3月7日金曜日

[3DCG?] 革新的な 3D ゲームエンジン...ってバカだろw(もちろんいい意 味で

本文は↓を見てください。
http://shinichiaoyagi.blog25.fc2.com/blog-entry-20.html

[3DCG?] 革新的な 3D ゲームエンジン...ってバカだろw(もちろんいい意味で

新しい3Dゲームエンジン、その名も Microsoft Excel !?
で知りました。

Microsoft Excel: Revolutionary 3D Game Engine?
英文で 5ページありますが、途中に貼られてる画像を見るだけでもなんとなくわかるんじゃないかと思います。

簡単に紹介すると、まず 1ページ目
これがすごい!
"Figure 1: Essence of the 3D engine" (3D エンジンの本質) といったタイトルがついた画像がありますが、まさにこれが 3D エンジンになっています。
シート上に赤丸で数値が書かれていますが、それぞれをざっと説明すると

  1. 投影する際のパラメータです。スクリーンの幅、高さとか。
  2. 各頂点の座標です。
  3. 4×4 の変換行列です。3×3 の回転部分は下の 4 の回転角から求められます。
  4. 回転角です。
  5. 2 と 3 から求めたワールド座標系での各頂点の座標です。
  6. 5 から求めたパースをつけて透視投影した各頂点の座標です。
  7. 6 から求めたスクリーン座標系での各頂点の座標です。
  8. 各辺の両端の頂点の指定と、その頂点たちの座標 (7 のスクリーン座標系の座標) です。

ということだと思います (間違ってたらごめんなさい。なにせ 3D 初心者なので)
4 のところの回転角を変更するとあとは単なるシート上の計算式なので Excel が 3→5→6→7 と再計算してくれて、結果となる 8 が求まります。

いやぁ、、、まぁ、、、確かに言われてみりゃ、そりゃそうなんですが、、、なんというか、、、
その発想はなかったわ
としか言いようがないなwww

続いて 2ページ目
Excel-native Cell Graphics (ECG) が紹介されています。
そのまんまですが、「Excel がネイティブに持ってるセルグラフィックス」 ですね。
2ページ目の画像を見ればわかるとおり 「セルを小さくして、罫線消して、色を塗ればピクセルになるんじゃね?」 ということですw
んで、 3ページ目 ではこの ECG を使って立方体がクルクルするデモが紹介されています。
同じく 3ページ目にある "our example Excel engine files" というリンクからデモファイルが落とせます。
これに入っている ECG_demo_without_grids.xls がそれです。
このファイルを Excel で開き、マクロを有効にし、ECG_Demo マクロを実行してやれば立方体がクルクル回ります。
Excel 2007 でもちゃんと動きました。
この立方体の座標計算は 1ページ目で紹介されていた 3D エンジン (つか、単なる Background という名前のシートだけどw) で行われています。
マクロがやっているのは 4 の回転角のところの角度を書き換えることだけです。
あとは 8 のところの座標を使って線を引いています。

ところで、この 「セルをピクセルに見立てる」 という方法はぜんぜん新しいものじゃありません。
この手法を使ったものはいろいろあるとは思いますが、私が一番印象に残っているのはやはり パッセルマン です。
はじめて見たときは、度肝を抜かれたというか、笑ったというか...敵キャラの動きやサウンドまで再現してるんですから。
ほんと、思わず 「なんで Excel でやる必要があるんだよ!」 と言っちゃいましたよ。
で、作者さんのこの言葉を見て激しく納得するわけです。。。「Excelで動かすことに意義がある!」
wwwww

ちなみに、ずいぶん久しぶりにパッセルマンを起動 (起動と言うのかな?w) してみましたが、Excel 2007 でもちゃんと動きました。

と、話が横にそれました。
さらに 4ページ ですごいことになりますw
4ページ目では Office-level Graphics Abstraction Layer (OGAL) なるものが紹介されています。
4ページ目の冒頭には

もし、リサイズ可能なピクセルや可変アクセプト比といった ECG の拡張機能が必要ないのであれば、別の Excel レンダリングサブシステム -Office-level Graphics Abstraction Layer - を選択することができる。

なんて書いてありますw
最初はなんのことやらわからなかったんですが、これはすごい!
3ページ目のデモファイルに入っている OGAL_demo.xls で動きますから、ぜひ一度動かしてみてください。
Excel に読み込んで、マクロを有効にして、OGAL_demo マクロを実行すれば動くはずです。
まぁ、面倒なときは 4ページ目にある YouTube の動画を見てもらえばそのまんまですが。

いやぁ、本気で最初はどうやってるのかわかんなかったです。
Excel にオートシェープってありますよね?丸とか四角とか書くやつ。あれの三角形を使って三角ポリゴンを描画してるんです。
だからシート上のどこへでも描画できるんですね。
しかも、3D エンジンも強化されています。
Background シートを見てもらえばわかりますが、辺ではなく三角ポリゴンを指定するようになっていて、ライトの向きと環境光のパワーも指定できるようです。
で、法線の向きと面の色も計算するようになっていて、さらに z 値でソートして z 値の深い順に三角ポリゴンを描画することによって陰面処理も行っています。

いやぁ、まじでこれはすごいわ。
つか、バカだろ (もちろん、いい意味でw
なにをやっているかがわかったとき、鳥肌がたっちゃいましたよw
ほんと、世の中にはすごい人がいるなぁwww

最後にいちおう書いときますが、技術的な内容はものすごくちゃんとしたものですが、ECG とか OGAL とかってそれらしい名前をつけたりしているのは著者さんの (半分) ジョークでしょう。
たぶん、マイクロソフトの人に 「OGAL について解説して」 とか言っても 「はぁ?」 と言われると思うのでご注意をwww