subtitle
自慢じゃないですけど、3年ほど前に本誌にIRIS Inventorの紹介記事を書きました。なにが自慢かというと、私の予想したとおり、OpenGLやOpen Inventorは3次元CGのデフェクトスタンダードになりつつあるということです。
OpenGLは、Windowsのハイエンド3次元CGのAPIとしてMicrosoftに採用され、瞬く間に巷に知れわたりました。また、来春発売される任天堂のスーパーファミコンの次世代版(NINTENDO64)のAPIとしてOpenGLのサブセットが使われているという話などもあり、今プログラマが最大の関心を寄せている技術の一つといえます。
一方、Open Inventor(昔は、IRIS Inventorといっていましたが、OpenGLと同様にマルチプラットフォームに対応するクラスライブラリとしてOpen Inventorに名前をかえました)の方は、まだまだ認知度は低いかもしれません。けれど、VRMLといえば本誌読者なら大抵ご存じでしょう。'95年10月号でも特集されていました。実は、VRMLのファイルフォーマットの基になっているのは、Open Inventorのivファイルフォーマットなのです。VRMLのブラウザーであるWebSpaceなどはInventorで開発されています。
Open Inventorは、3次元CGのための高度なクラスライブラリであり、OpenGLで開発されています。この辺のことは、プログラム編で詳しく説明しますが、ともかくこの2つのライブラリが業界標準開発環境になったのは間違いありません。
このようにSGI(Silicon Graphics Ins.)の技術が業界のスタンダードとなったのは、もちろんSGIがCG技術の開発に集中し、他を圧倒する技術力でCG界を牽引してきたその実績によるところが大ですが、忘れてならないのは、数年前に販売され始めたパーソナルグラフィックスWS、Indyの存在でしょう。
それまでもSGIは、Personal IRIS、IndigoとIRISファミリの小型化を進めてきましたが、Indyによって小型化という目標は達成されたといえます。当然さらなる高機能化やゲームマシンへの技術転用は考えられますが、一応、個人でも手が届く値段(決して安いとはいえませんが)とUNIXにしては親しみやすいIndigo Magicなどのユーザインターフェイスを備えてなんとかパーソナルといえるところまではきています。
それに最近では、エンジニアよりもむしろCGアーティストやイラストレータなどのアート系の人に人気があります。今やビジネスシーンもインターネット、マルチメディアでビジュアルバリバリの世界ですので、3次元CGの需要が高まりCGアーティストやハイテクイラストレータは花形職業です。まあ、Macintoshによってコンピュータに目覚めたアーティストの次なる羨望の対象がIndyなのです。
本誌は他に先駆けてこれまでもIndyの紹介をしてきましたが、この連載では、特にIndyを使ってなにができるか?というテーマで話を進めていきます。IndyはMacintoshにできないようなハイエンドのCGの創作に向いています。けれどもだからといって1,000万円もするCGアプリケーションの使い方を書いても、本誌の読者には絵に描いたモチでしかありませんので、このシリーズの制限として、Indyを買ったらついてきたツールやせいぜい本体価格の2倍くらいまでの予算で実現できる環境の範囲内でのワークショップを紹介していこうと考えています。
具体的には次のようなテーマを予定しています。予定はあくまで予定ですので変更することもありえます。
O) Ordinal people ・・・ 何もできないけど闇雲にIndyに憧れている ) C) CG artist ・・・・・・・・ 目指せマルチメディアクリエイター) P) Programmer ・・・・・・・ Walk throughプログラムの1つや2つ朝飯前)
subtitle
それでは本題に入りましょう。今回はVRMLです。NSG(日本シリコングラフィックス株式会社)は、WebSpaceというVRMLブラウザやWebSpaceAuthorというVRMLオーサリングツールを販売しています。これらはWebFORCEというInternet関連製品に含まれていますが、単独で購入することもできるようです(同SoftwareDesign1996年1月号 89ページ『InternetServerマシンメーカ別徹底チェック』参照)。個人でも手の届く範囲の価格なので、今回はWebSpaceAuthorを使ってVRMLを使ったホームページの作成を実践しましょう。
初めに簡単にVRMLの生い立ちを説明します。ただし、この辺ことはSD10月号などで詳しく説明されていますし、この「Indyといっしょ」では実践を重視しますので、簡単に留めます。
インターネットに詳しい読者ならVRMLがどんなものかはお分かりでしょう。VRML Version 1.0の仕様が決まったのは今年('95年)の6月ですから、全く新しい技術です。本当にインターネット関連の技術というのは、 さすがにネットワークをフル活用して進歩していきますので、まさに日進月歩です。VRMLも3D技術をインターネットに活用することに興味を持った人々がインターネット上でメイリングリストを使用して、仕様を決定しました。
とはいえ、こんなに早くこの仕様が決まってインターネット上で立ち上がったのは、ゼロから設計したのではなく、大本になったファイルフォーマットがあったからといえるでしょう。先に述べたようにSGIのOpen Inventor Version 2.0のフォーマットがベースになり、これをHTMLとリンクできるように改良されています。VRMLの詳しい情報を得たい人は次のところにアクセスすればよいでしょう。
http://vrml.wired.com http://www.webcity.co.jp/info/andoh/vrml/vrml.html
WebSpaceの最新版は、
http://webspace.sgi.com
を見てください。
subtitle
WebSpaceAuthorによるVRML実践に入る前に、VRML言語の基本について学んでおきましょう。これから、WebSpaceAuthorのようなモデラー機能やリンクを張る機能を持った簡単VRMLエディターが続々登場すると思いますが、いざというときは手で編集するぐらいの基本知識は持ち合わせていた方が良いと思います。
なんでも簡単にはいかないのがコンピュータですからね。行き詰まったときはさらに低レベルまで戻ってチェックするというのがデバッグの王道というものです。
現在のところNetscape Navigatorなどでは、VRMLデータの表示にはVRML表示用のブラウザが必要になります。IndyのWebFORCEでは、Netscape表示中にVRMLのリンクがクリックされると、WebSpaceが起動してVRMLが表示されます。
さて、それではVRMLの文書がどんなものか見てみましょう。将来的にはバイナリファイルフォーマットもサポートされる可能性もありますが、Version 1.0はテキストファイルのみです。
#VRML V1.0 ascii #最も簡単なVRMLデータ例 #1個の何の変哲もないキューブ Cube { width 1.0 #SFFloat height 1.0 depth 2.0 }
賢いみなさんにはどういうことか理解できますね。#がコメントを意味していること、width、height、depthが直方体のサイズを表していることなど明白でしょう。SFFloatというのは、Inventorの単精度実数のタイプを表しています。 ただし、1行目の
#VRML V1.0 ascii
は、コメントにしてコメントにあらず。もちろんVRML Version 1.0のファイルであることを示していますが、これがないとファイルを読み込まないブラウザもあります。このようなファイル形式は、昔からCGをやっている人なら古典的なものであると思うに違いありません。日本の誇るイマジカのPersonal LINKSやあのRenderManのフォーマットも似たようなものでした。 ところでCubeのような組み込みタイプのオブジェクトにはどんなものがのでしょうか。Open InventorにはNodeという概念があり、このノードを木構造上に構成したのがシーンとなります。このノードも次の6つのノードグループに分けられます。
これらについて、詳しく知りたければ、VRML Version 1.0の仕様書を参照していただ くとして、シェープノードには
などがあります。 Open Inventorには自由曲面などもありますが、Version 1.0では処理速度の問題で外されました。IndexedFaceSetなどがいわゆるポリゴンということになり、ちょっと複雑なモデルなんかは、他のモデラーなどでDXFファイル(AutoCADのフォーマット)でセーブし、VRMLフォーマットに変換してVRMLブラウザに読み込んだりできます。 もっとも最近のモデラーではVRMLで出力できるのが常識のようになっていますので、他のモデラーからのインポートはほとんど困らないでしょう。 話はそれましたが、それではもうちょっと複雑なVRMLファイルを見てみましょうか。それぞれの行の意味については、コメントを参照して下さい。
#VRML V1.0 ascii #セパレータはグループ化のためのノードです。セパレータ内の設定は、セパレータ の#外には影響しません。 Separator { #マテリアルの設定です。表面の色、質感を定義します。 Material {diffuseColor .7 0 0 #赤、緑、青の成分} Cube { width 5 height 5 depth 5 } Separator { #座標変換を指定します。 Transform {translation 10 0 0 #平行移動 X Y Z 成分 } Material { diffuseColor 0 0 1 shininess .9 } #リンク先を示すアンカーを定義します。これについては後述します。 WWWAnchor {name "http://www.cobalt.co.jp/~tuter/vrml/do_something.vrml" description "A link to another world" #球を定義します Sphere { radius 2 } } Separator { Transform { translation 0 8 0 } Material { diffuseColor .7 .7 .2 shininess .3 } #円錐を定義します。 Cone { parts ALL bottomRadius 2 height 5 } } }}
WWWAnchorはオブジェクトにリングを張る機能を定義します。リンク先はVRML文書 でもHTML文書でもかまいません。上記の例では、球をクリックすると
http://www.cobalt.co.jp/~tuter/vrml/do_something.vrml
に飛びます。
description "A link to another world"
は表示されるステータスです。
この他にもVRMLのパーツを読み込むWWWInlineや視点や背景色、LODを定義するDEF文などがあります。あんまり詳しいこと説明しても混乱するだけなのでこの辺でやめましょう。
さて、できたファイルがどんな表示になるかすぐに見たいのが人情です。IndigoMagicのIcon Catalog/WebToolにあるWebSpaceのアイコンをクリックして、WebSpaceでファイルを読み込んでみます。そうすると3つの赤、青、グレーの3つのオブジェクトが表示されているはずです。(図1)座標変換などの効き具合を確かめて下さい。
こんな感じならだれでも、打ち込みでおでんぐらいならなんとかモデリングできそうです。ということで、さっそくおでんを作ることにしましょう。ただし、WebSpaceAuthorという便利なツールがあるのですから、これを使うことにします。
subtitle
WebToolのWebSpaceAuthorを起動します。今作ったファイルを読み込みます。この3つのオブジェクトからおでんというアイデアを思いつきましたが、円錐ははんぺんに似てなくもありません。しかしはんぺんは3角柱と相場は決まっているので、これは円錐を削除して、WebSpaceAutorについているShape Modelerで新規に作ることにしましょう。(図2) いや~このモデラーのインターフェイスは今一つ理解できません。どことなくPCの秀逸シェアーウェアである
当然Sphereは玉子です。Cubeは何にしようかと考えたあげくコンニャクあたりが妥当かということになりました。WebSpaceAuthorではそれはそれは簡単に色やテクスチャを設定することができます。(図3) さらに串をShape Modelerでつくっておでんの出来上がりです。ただ背景がないのは寂しいので、WebSpaceAuthorのサンプルのデータでも背後に配置しておきましょう。
どうですか、家の中に入って左をみるとテーブルの上に巨大なおでんが中に浮かんでいるではありませんか。(図4)
仮想現実感というとテレてしまいますが、幻想「おでんの国」といったところでしょう。つぎにアンカーを設定することにしましょう。メニューTools/Set Linkを選ぶとアンカーを設定するダイアログが表示されます。リンクされるものがURLかローカルファイルか視点かを選択できます。ここではローカルファイルですので、ファイルをチェックしてファイル名とディスクリプションを入力します。(図5)
今回は、玉子をクリックしたときはFlying UFOのモデルが表示され(図6)
コンニャクをクリックしたときは、僭越ながら当社のロゴ(図7)が表示されるようにリンクを張りました。さて、これでVRML文書の設定はできました。 なお、WebSpaceAuthorには、今まで見てきた機能の他に、3Dテクスチャを簡単に生成するエディタ、LOD(Lebel Of Detail 視点からの距離によってポリゴンの数を調整する機能)エディタやポリゴンを自動的に減少させるポリゴンリダクションエディタなどのSGIならではの高度な機能がついています。
さてそれでは最後に、WebMagic(これはいわゆるHTMLエディタです。)を使用して「おでんの国」ホームページを作って、おでんイメージをクリックするとWebSpaceが起動して、「おでんの国」へ入れるようにしましょう。(図8) いや~しかし、便利になったものです。ここまでテキストを手で編集することは全くありません。
ここで内訳話をすると、Flying UFOとコバルトロゴはWebSpaceAuthorのShape Modelerでは作成していません、使い方がよくわからないので。そこで私はNewTek社のLIGHTWAVE 3D for Wndowsを利用して、VRMLデータを出力しました。(図9)これが正当な利用法でしょう。
subtitle
おめでたい「Indyといっしょ」のスタートだというのに、仕事が忙しくて、原稿を書くのも気が重いな~て感じでした。が、実際にWebSpaceAuthorを使ってVRMLしてみると、これが実におもしろい。私は昔、(初期の)CGアーティストだったこともあるのですが、昔とった杵柄というか、CGに熱い思いを抱いていたあのころの血が騒ぎだしたというか、ちょっとハイテンションでこのワークショップを進めることができました。結論としてはVRMLデータは、手入力ではちょっと困難、WebSpaceAuthorのようなツールがないことには、現実的ではありません。最近NSGのソフトウェアもだいぶリーズナブルになってきて、WebSpaceAuthorも、ソフト単体なら定価は16万円です。一頃のイメージからするとずいぶんと安くなりました。Indy買ったらこの一本は買いです。
そして、やっぱりIndyには花があります。他のワークステーションにはない気持ちをウキウキさせる遊び心があります。プログラムできなくても十分に遊べるツールが買ったその日からそろっています。ちょっと欲をいえば、価格がせめてあと半額なら、家にも一台と私も考えるのですが。
ところで、VRMLを含めてインターネットの技術というのは、政治、経済、文化、福祉といったあらゆる分野に大きな影響と衝撃を与えそうです。当然のことながらコンピュータ業界も大きく揺れています。
私はどちらかというとUNIXよりWindowsプログラマですが、Microsoftではなく、Borland派に属します。その意味は御推測いただくとして、あのWindows95のMicrosoftにとって最大の強敵が忽然と出現しました。それはIBMでもなくAppleでもなくNOVELLでもありませんでした。これから5、6年は安泰だと思われていたMicrosoftの揺るぎなき地位もインターネットという伏兵によって、一気に暗雲が立ちこめたような印象です。よくよく考えると、どのOSもシステムコールなどは似たり寄ったりで、機能的には大して違いません。むしろ開発者側からいわせてもらうと、GUIの違いの方が重要性を持っています。
これからのOSの意味はネットワーク上に偏在するプログラムやデータといったオブジェクトをうまくやり取りする機能をアプリケーションのために準備することぐらいでしょう。ユーザにとってはネットワークを利用して業務を進められるアプリケーションがあればよいわけです。したがって、そのようなアプリケーションを開発するためには、ネットワーク指向でマルチプラットフォームなアプリケーション開発環境の方が、OSよりも重要性を増してくると思います。
具体的にいうとNetscape Navigatorの上で、WWWやメールだけでなく、何でもかんでもアプリケーションが動くというようなイメージでしょう。 そういう意味でSGIがのCG技術から生まれたVRMLは、まさにネットワーク指向、マルチプラットフォーム対応ということで時代のニーズに応えるものであるといえます。
次回から2回に分けて3次元CGパラダイスということで、IndyでエコノミカルにCGすることがテーマです。この分野は現在私の専門外なので、私の友人の優秀なCGアーティストに代わりに解説してもらうことにします。