<< 豆知識 >>FortranでCG作成(VRML)今は昔に比べ、パソコンなどコンピュータの能力が非常に向上したため、3DCGをよく見る機会が増えました。本当に短期間でその画質はとても向上したと思います。 昔、「バーチャルファイター」(カプコン)というゲームが登場しました。このゲームは登場キャラクターが3D加工されていたということで、非常に先進的なゲームとして注目されていました。それまでのゲームは縦・横の2次元のゲームばかりで、立体的なキャラクターが様々な視点でアクションするゲームはとても珍しかったです。 そのCGはまだポリゴンといわれていて、キャラクターの表面が角々していました。顔や体が滑らかではなく、正八面体のように、平らな面の集まりのような描かれ方をしていました。今では、もうそんな画質はありませんよね。表面がつるんつるんで、もう写真なのか画像なのかが分からないぐらいきれいなのが沢山登場しています。 さて、パソコンを使用していると色々なところに登場するこの「CG」ですが、実はFortranもこのCGに縁があるのです。「えっ、だってFortranってコンソールアプリしか作れないんでしょ? CGのような視覚的なものとは無縁じゃないの?」と思ったのではないでしょうか? いえいえ、そんなことはありません。Fortranはまるで領域の違うCGという存在を自由自在に操ることができるのです。 そもそもなぜFortranとCGに関係性があるのでしょうか? それは、Fortran雅楽計算・分析用の言語だからです。僕は文系学生で、簡単な統計分析ぐらいしかしないので特にCGは必要としませんが、理系学生、例えば地学系の分野だと、この情報の立体化は非常に重要な分析ツールになってくるみたいです。数字を見ていただけではなかなか分からない。地形や大気の流れはやはり立体化してみたほうが理解しやすい。しかし描画ソフトを使って作成するのは大変だ,もっと楽な方法はないか,ということでFortranでVRMLを活用しよう、ということみたいです。 「VRML」という言葉を聞いたことがあるでしょうか? VRMLというのは、www上で3DCGを表現するための規格です。プログラミングのようなコード文を書くことで、思い通りの3D画像を作成することができます。作成した3DCGは、Internet ExplorerのようなWebブラウザを使用してみることができます。 ただ、その場合、専用のプラグインが必要です。VRML専用のプラグインです。3種類あるのですが、ここではその代表的存在に当たる「Cosmo player」を紹介します。これは、http://www.karmanaut.com/cosmo/player/ からダウンロードして手に入れることができます。このプラグインを使用して見る場合は、Internet Explorerを使うようにしてください。 バージョンが1.0から今は2.0になっていて、単なる3DCGから、動的な操作が可能となっています。一度使用してみると、とても面白く、「すげぇー!!」と叫んでしまうこと請け合いです。例えば、CGを横に回転させることができたり、拡大縮小や、視点を変えて堪能することができます。さらにすごいのは、まるでFlash動画であるかのような、滑らかな動作をするCG(というかもはや動画)を作ることができたり、ゲームすら作ることもできます(例えばパズル)。もう、CG用のツールと呼ぶには言葉が足りません。 言葉で説明しても、なかなかイメージを持つことは難しいと思います。ぜひ、上で紹介したCosmo playerをダウンロードした後、http://www.toucan.co.jp/を見てみてください。すぐに僕が言っていることが実感できると思います。 では、そんなVRMLを、どうやってFortranで扱うのでしょうか? それは、サブルーチンと組み合わせて使用するのです。サブルーチンにCG作成のためのテンプレートを作っておき、図形に必要なデータをサブルーチンに送ってCGを生成します。例えば、円錐の図形が作りたい時は、円錐作成用のサブルーチンを呼び出し、円錐の色・大きさ・高さなどの円錐データを送信し、後はそれに適合した円錐をサブルーチンに作ってもらうだけです。とても簡単ですね。 そのFortranプログラムをコンパイルして実行すると、(ソース文の内容によって異なりますが)「wrl」ファイルが生成されます。このファイルが、CGを表現するVRMLファイルです。後はこれを、表示するためのプラグインを備えたブラウザで開けば、自分が作成した画像が表示されることになります。 では、どうしたらその図形作成用のサブルーチンを作成できるのでしょうか? それは、VRMLの書法に従ったソース文を作成することになります。このページはVRMLの講座ではないので(というか自分がまだよく分かってないので)、詳しくはお話いたしませんが、http://www.fit.ac.jp/~araya/jis/vrml20.htmlのページを参考にしていただければ大丈夫だと思います。そんなに難しい書法ではないようです。興味のある方は勉強してみてください。 とは言っても、自分のようにいちいちVRMLを勉強している暇がない・面倒だという人が大多数だと思います。もっと手軽に3DCGを楽しみたい、というのが率直な気持ちですよね。そこで、既に作られているサブルーチンをお借りさせていただくことにしましょう。 ネット上には、プログラムのソース文が沢山紹介されています。Fortranも少ないながら、それなりに掲載されています。Fortran版VRMLも例外ではなく、しっかりと特集しているページを見つけました。そこのページをぜひ、使用させてもらいましょう。URLはhttp://gedas.stelab.nagoya-u.ac.jp/simulation/jst2k/vrhtml/jst02b.htmlです。皆さん、忘れてはいないと思いますが、こうした作品にはもちろん著作権がありますので、自分で使用する文には問題ないですが、改造して再配布なんてことはしないで下さいね。出所を教えた自分に影響来るかもしれませんから。 このページの各ブロックに、「サブルーチンパッケージ」というのが用意されています。このリンク先に、様々な図形(例えば3角錐)を作成するためのサブルーチン・テンプレートが作られています。これを拝借して、とりあえず自分のパソコンに保存してください。できれば、いつも自分がFortranソースをコンパイルする場所がいいですね。 そうしたら、後は図形作成用のデータを送信するメインプログラムを作成するだけです。サブルーチンを呼び出すCALL文を使用して、引数にデータを書いてください。どんなデータを渡せばいいのかは、サブルーチン側の引数を見たり、同ページにあるサンプルプログラムを参照してみてください。 サブルーチンはそのメインプログラムのソースにコピーアンドペーストしてしまってもいいのですが、それではCGを作成する機会ごとにいちいちサブルーチンをペーストしなければいけません。どのサブルーチンかをパッケージから探して貼り付ける作業はとても面倒ですね。そこで、INCLUDE文を使用しましょう。この命令文は、メインプログラムのソースとは別ファイルの情報を「取り込む」機能を持っています。C言語の、ヘッダファイルを読み込むための「include<〜>」と同じです。コンパイルする場所にサブルーチンパッケージを保存しておいてくれといったのはこのためで、そうしておけば、INCLUDEするだけで、いちいちサブルーチンをコピーすることなく、そのサブルーチン全てを使用することが可能となります。コピーする際に誤ってサブルーチンを壊してしまうという危険性もなく、非常に有用な手段といえます。 出来上がったプログラムを実行すると、ファイルが生成されます。もし「.for」ファイルが出来上がったら、「.wrl」に拡張子を書き直してください。そのファイルをブラウザで開けば、自分で作ったVRML画像を鑑賞することができます。 VRML画像は単なる静止画ではなく、色々といじることができるので、ぜひ遊んでみてください。クリックして掴んで、右に動かしてマウスを放すと画像がハイスピードで回転します。やってみるととても楽しいです。 図形を組み合わせることで、様々な画像を作り出すことができます。例えば、かかしや、ドラえもん、魔女など。もちろんそれだけソース文は増え、美術のセンスが問われますが、試してみる価値はあると思います。出来上がったらぜひ見せてください。 Fortranは単なる数値計算しかできない,限定された言語だと言う解釈が大多数だと思います。僕もそうだと思っていました。しかし、CG作成という、まったく存在領域の違うこうした意外なこともできるんですね。ますますFortranのことが好きになってしまった僕でした。 参考: ウィキペディア ASCIIデジタル用語辞典 コマンドプロンプトを使ってみよう! コマンドプロンプトで作業効率UP FORTRANの歴史 Fortranを使おう |