RenderManについて

 一昔からは考えられないほど最近、CG関係のハウツウ本が多くの出版社から出されているが、それでもRenderManに関するドキュメントは少ないようだ。PIXARとそこが作り出した様々な優れた作品と、ハリウッドを中心とした多くの実績で有名なこのソフトは、名前の割には日本では資料が少ないように思える。

 すでに絶版になってしまった「実践CGへの誘い」(共立出版)を除いて今でもちゃんとした日本語の解説本が見あたらない状況なので、資料を探すとしたらネットワーク上を探すしかないだろう。たいした量ではないが以前雑誌用に書いたドキュメントを参考までに掲載した。


1. MacRenderManについて

1.1 なぜMacRenderManは普及しなかったのか

 この文章は95年にかかれたものを下敷きにしている,中には一部現状とあわなかったりすることもあると思うが、埋もれさせてしまうのも,もったいないのでここに掲載することにした。内容はなぜMacRenderManがなくなってしまったかである。

 そもそも,RenderManは開発元のPIXARがワークステーションの次に力を入れてきたせいもあり,Macintoshの3Dソフトの多くはかなり早くからRenderMan仕様に対応してきた。これまで紹介した3Dソフトでも多くの製品がRenderManのデータファイルであるRIBのエクスポートに対応している他,SwivelManやPresenterProやMacroModelのようにRenderManをバンドルしている製品もいくつか出ている。しかし,その割にMacRenderManを使っているという話を聞かないのはどうしたわけだろうか。海外では事情は違うという話も聞いたことがあるが,少なくとも国内ではRenderMan関係の製品を扱っているソフトハウスの方が,MacRenderManを使いこなしているというプロダクションを訪ねたところ,対応してくれた方がみんな知っている方だったと言う逸話もあるくらい,RenderManの使い手は狭い世界なのである。

2.2 不完全なRenderMan対応ソフト

 それでは,なぜここまで有名で,かついろいろなソフトが対応しているMacRenderManがここまで使われないのであろうか。原因はいくつか考えられるが,インタフェースが難解だという他に,大きな問題としてMacRenderMan対応と銘売ったソフトの対応がお粗末なことが原因だろう。そもそもRenderManが有名なわけは単にPIXARが作ったからと言うだけではなく,今でも色あせることのない画期的なグラフィックス・インタフェース仕様があるからに他ならない。しかし,残念ながらその機能の大半はMacintoshの3Dソフトからは利用することができないのである。そもそも,RenderManのアルゴリズムの基本は,物体をピクセルサイズ以下まで分割したマイクロポリゴン(Maicro Polygon)とよぶ形状を基本としたアルゴリズムで,形状をうまく表現するためにもDATAはパッチであることが望ましい。しかし,多くのMacintoshの3Dソフトではデータはポリゴンベースが一般的である。また,他にもグループの階層構造やサーフェスがきちんと反映されるかたちでRIBに記述されるソフトも少ないのも困り者で,特にSwivel3Dのように構造化を考慮せずにフラットに出されてしまうと,あとに述べる編集作業で直すのも大変でこれがさらに利用者を狭めるもとになっているのではないだろうか。

2.3 RenderManを使いこなすために

 幸いRenderManのデータフォーマットであるRIBでは,プラットフォームに依存しないようにテキストファイルで記述されている。また,Niftyなどのユーザー同士の協力によって非常に強力なツールもアップされているので,自分でRIBファイルを編集できなくてもかなりのことができるようになってきた。ここでは主なRenderManの機能とそれを実現するための環境を紹介していきたい。

 まず一番の基本である形状の記述であるが,先にも触れたようにそもそもRenderManの場合,形状データはなるべくパッチで書かれていることが望ましい。また,ポリゴンであっても少なくともRiPointsPolygons()などを使ってスムージングをかけることでかなり表現は改善される。対応しているソフトが,パッチベースのShadeやAlias Sketch!などではデータはパッチで渡るので,これについてはそれ程問題はない。他の多くのMacRenderMan対応のソフトでも大抵のものではスムージングがなされるが,一部のソフトではポリゴンのまま渡されるようなのでこれについては自分でデータを編集してスムージングをかける必要がある。

 第2に材質の問題である。RenderManの場合,材質はShaderとよばれる独自の言語処理系で記述されることによって,ユーザーはレンダラーに依存しない独自の質感計算をレンダラーに組み込むことが可能になっている。これはRenderManをさわったことのない方には分かりにくいことなのでちょっと例をあげておく(図1)。
図1 プラスティックのShaderの例
plastic( float Ks=.5, Kd=.5, Ka=1, roughness=.1; color specularcolor=1 )
{
    point Nf, V;

    Nf = faceforward( normalize(N), I );
    V = -normalize(I);

    Oi = Os;
    Ci = Os * ( Cs * (Ka*ambient() + Kd*diffuse(Nf)) + 
	 	specularcolor * Ks * specular(Nf,V,roughness) );
}
リストにあるのはプラスチックを表現するためのShaderであるが,ご覧の通り実際にレンダラーの中で行われる輝度計算がそのまま式で書かれていることが分かる。つまりユーザーは直接Shaderを書くことでRenderManでは事実上どのような材質でもユーザーがプログラできるわけである。

 実際に映画「ジェラシックパーク」では恐竜の肌はShaderによって定義され時間軸にそって波打ったり,歩くのにあわせてたるんだりといった表現が可能になっている。しかし,多くのMacintoshの3Dソフトの場合,材質の定義はここまで自由ではない。ここに1つのジレンマがあるわけで,RenderManのShaderをいかすためには,自前の質感設定を使ってはどうしてもその範囲内のものしかできないということになってしまうのだ。そのために,ユーザーは自分でShaderをいじる必要が出てくるわけだが,最近ではやはり使われないためだろうか,PIXARはShaderを編集するためのShaderAppをバンドルするのを止めてしまったために,これも難しくなってしまったのである(注1)。幸いPIXARではLooksとGlimpseというものを代わりにバンドルするようになったので,おそらくPIXARでは一般ユーザーはこちらを使って解決してほしいと言うことなのだろう。

Looksでは直接プログラムはできないものの,Glimpseを使うことで視覚的にシェーディングプログラムを編集できる。これによって,ユーザーはあらかじめ用意された最大540種類の雛形から独自のShaderを作り出すことが可能になっている。あとはどれだけ他のソフトがこれに対応してくれるかが問題である。

 第3に影と反射の問題である。これもよく誤解されているのだがRenderManはレイ・トレーシングではない。もともとRenderManはZ-Bufferをベースにしたものであり,仕様としては考えられているもののレイ・トレーシングはサポートされていないのである。たしかにilluminance構文やRiAttribute()などの関数が用意されてはいるのだが,これらをレイ・トレーシングで使おうとしても肝心のtrace()関数は未だインプリメントされてないので(注2),そのままではレイ・トレーシングできないのだ。

 したがって,RenderManでは影はShadow Map,反射はReflectionMapを使って表現することになるわけだが,肝心のRenderMan対応ソフトでこれらに対応しているものは少ないのが現状であり特に映り込みの表現については,今のところ自動的にこれを設定してくれるMacRenderMan関連商品は皆無と言っていい状態である。そのため反射や影を表現するためにはユーザーがそれに対応したRIBを書く必要があるわけだが,これは普通のユーザーにとっては荷の重い作業である(図2:影・反射をつけるための簡単な例)。たしかに構文では数行コメントを入れるだけの作業ではあるのだが,これとは別に呼び出される側のReflection Map・Shadow Mapを用意しなくてはならないからだ。Shadow MapやReflection Map自体はそれぞれ光源や映り込む物体からの視点から見たRIBを書けばいいので難しくはないのだが,ちょっとした算数の能力が要求される。不精もののユーザーとしてはこれは避けたいのが本音である。

 最後の問題はアニメーションである。本来RenderManは生まれからも分かるように映画で使うことを前提に作られている。そのためモーションブラー・被写界深度など実際のカメラをシミレーションしたさまざまな機能が盛り込まれており,これが多くのCGプロダクションで使われる理由の1つになっている。しかし残念なことにMacintoshの場合,きちんとアニメーションレベルでRenderManに対応したソフトが少ない(事実上 PresenterPro 3.0とPixelPuttySoloのみ)ために,このままではこれらをほとんど使うことができないのである。また,RenderManではアニメーションデータを,1つのRIBにまとめる際にフレーム間の共通要素を最初のフレームを参照することで省略できるのだが,MacintoshのRenderMan対応ソフトのほとんどが各フレームごとにRIBを吐き出す仕様になっているためちょっとしたアニメーションでも膨大なサイズのRIBファイルを扱うはめになるという問題もある。

2.4 RibFillter

 これまではこうしたソフトで対応してない問題についてはユーザーが自前でRIBファイルを編集するしか対応策はなかった。もしアニメーションなどしようとしたら大変で,Macintoshにも移植されているawkなどをつかって大量のバッチ処理をしなくては満足に影もつけられない有り様であった。しかし,最近非常に強力なツールがNifty上にアップロードされたことにより状況は大分楽になってきたので,これについて紹介する。

 RibFillterは,笹井清隆氏によって開発された強力なRIBファイル編集ツールで,大手商用ネットワークNifty-ServeのMacintoshCGフォーラム(コーシングラフィックスフォーラム)のライブラリに登録されている。その機能はさまざまなRenderMan対応ソフトが生成するRIBファイルに,これまで紹介したようなRenderMan本来のもつさまざまなレンダリング効果を付加するもので,主な機能は以下の通りである。

 *影の生成      光源に対するシャドウマップ生成用
            RIB ファイルの作成
 *スポット光源    指定オブジェクト (Attribute) をスポット
            光源として定義
 *点光源       指定オブジェクト (Attribute) を点光源と
            して定義
 *環境マップ     指定オブジェクト (Attribute) に対する環
            境マップ作成用
            RIB ファイルの作成
 *平面反射マップ   指定オブジェクト (Attribute) に対する平
            面反射マップ作成用
            RIB ファイルの作成
 *疑似ソリッド演算  指定オブジェクト(Attribute)同士での
            CSG (和,差,積)
            演算
 *スムージング    ポリゴンオプジェクトをポイントポリゴ
            ンに変換
            (スムースシェーディングが可能)
 *モーションブラー  アニメーション RIB (各フレームが,
            Frame ブロックで RIB に出ているもの)
            内のオブジェクトに対して,モーション
            ブラーを付加

これによりユーザーは,たとえRenderMan対応ソフトが生成するRIBが不十分なものであっても,自分で手直しすることが以前よりは大分楽な環境で行えるようになった。

 補足:現在はNiftyのMacintoshCGフォーラム閉鎖の為、Niftyからは入手出来なくなっているので、作者に許可を頂いてこちらから直接ダウンロード出来るようにした。(2000.04)

2.5 Lily Eight

 RibFillterに並んで紹介したいソフトがリソさんによって作られたLily Eightである。こちらはRIBを読んでそれにスケルトン付けててボーン変形させてアニメーションを振り付ける事ができる。もちろんGUIの画面でできるのは言うまでもない。またRib以外のファイルのフォーマットもいくつか読み書きできるので、コンバーターとしても重宝するだろう。こちらはhttp://www.vector.co.jpにLily Eightと言う名前で上がっているので興味のある人はさわってみてほしい。

2.6 次世代のRenderMan対応ソフト

 以上は自力でなんとかする方法であったが,最近では市販のソフトでもそこまで苦労しなくても,RenderManのかなりの機能が使えるようになってきたので,最後にそのソフトを紹介してRenderManの話を締めくくりたいと思う。

 PixelPuttySoloはもともとはPIXARの一部門であったValis社から発売されたモデリング・アニメーションソフトであるが,これが最近RenderManユーザーの間で話題になっている。その最大の理由は,これまで手作業でRIBファイルを編集しなくてはほとんど利用できなかったRenderManの優れたアニメーション機能を利用できるからだが,その他にもいくつか面白い機能を備えていることも理由の1つであろう。例えば,モデリング機能では正確な形を作るのには向かないもののパッチを使った自由曲面の形成やブーリアン演算・物体同士に包絡曲線を張る機能などによって,かなり複雑な形を作ることができるほか,一度作った形状に対しラティス変形をかけることでモデル全体を自由に変形させるといったことが可能になってる。また,アニメーションに関しても複雑なキャラクターアニメーションを作る上で不可欠とも言えるインバースキネマティクスを備えているのだ。

 後日談になるが,残念ながらこのPixelPuttySoloも肝心のPIXAR社がMacRenderManをうち切ったせいで,宙ぶらりんになってしまった感じがある。今でもこれの後継PiXELS:3DはRIBをサポートしてRenderManでレンダリング可能ではあるが、通常は独自のレンダラーを使っている。

注1 Shaderを編集するためのToolであるShaderAppは現在別売の"MacRenderManDev.Kit"の中にバンドルされている。

注2 現在(1998年)映画「Contact」のオープニング映像のなかでシェーダで簡単なレイトレーシングを実現しているのをみることができる。ただし詳細は不明,ある物体に当たるレイだけを簡単にトレースしているようだ。

参考文献

共立出版社/実践CGへの誘い