Wednesday, May 20, 2009

メンタルレイの構成

図 1 にメンタルレイの通常の構成を示します.

図 1 メンタルレイの構成

F1: Application scene file: アプリケーション固有のファイルで .max (3dsmax), .ma または .mb (Maya),.scn (XSI) などです.

F2: .mi file: mental ray の scene description ファイルフォーマットです.多くの mental ray をサポートしている DCC ソフトウェアは .mi ファイルをエクスポート(export)する機能があります.(A2)

1. Application: DCC (Digital contents creation)ソフトウェア (Maya, 3DSMax, XSI, ...) や CAD プログラムです.

2. mental ray core: メンタルレイのコアプログラムです.メンタルレイにはライブラリ版とstand alone 版があります.ライブラリバージョンのメンタルレイは,アプリケーションからトランスレータ(translator) というモジュールを通じて命令やデータを受けとり,レンダリングを実行します.トランスレータというのは DCC アプリケーションの内部データを mental ray のデータに翻訳(translation)するプログラムです.スタンドアロンバージョンのメンタルレイは.mi ファイルを読み込み,レンダリングを実行します.メンタルレイはコア自体だけでは動作せず,シェーダが常に必要なことに注意して下さい.シェーダがプラグインであることを考えれば,理解しやすいと思います.

3. mental ray base shader: メンタルレイがデフォルトでサポートしているシェーダです.基本的な光源(lihgt),基本的なマテリアル(material),たとえば 最も簡単なシェーダとしては Lambert シェーダなどがあります.

4. Application shaders: 各 DCC ソフトウェアや,CAD ソフトが独自に持っているシェーダです.3DSMax は 3dsmaxshaders, Maya は mayabase などというシェーダパッケージを持っています.

5. Custom shaders: ユーザ独自のシェーダや,メンタルレイ独自のものでも高度なシェーダ(たとえば mia_material) などです.

この構成は一般的なものですが,アプリケーションによってはアプリケーションは直接メンタルレイのコアと通信せずに常に .mi ファイルを使うものなどもあります.

この図で重要なことは,mental ray は core 自体では動作せず,(default であれ,特別製であれ) shader を必要とすることです.standalone にせよ,DCC アプリケーションに組込まれた mental ray にせよ,shader が重要な役割を果たしていることに注意して下さい.通常 shader がなければ意味のある画像は生成されません.(mental ray のコアは shader 無しでも真っ黒な画像を生成できますが...)

Thursday, May 14, 2009

スタンドアロンメンタルレイを使う

もしあなたが Maya や 3dsMax, XSI を使ってレンダリングしている場合にはこの記事は不要です.シェーダを書いたり,アニメーションのためにレンダーファームを使ったりという場合にはこの記事は多少参考になるでしょう.

メンタルレイの参考文献

メンタルレイの参考文献は以下のものが重要です.
  • Thomas Driemeyer, Rendering with mental ray, 3nd Ed. (Mental Ray Handbooks 1), ISBN-13: 978-3211228753
  • Thomas Driemeyer and Rolf Herken, Programming mental ray, (Mental Ray Handbooks 2), ISBN-13: 978-3211838518
  • Andy Kopra, Writing Mental Ray Shaders: A Perceptual Introduction (Mental Ray Handbooks 3), ISBN-13: 978-3211489642
しかし難しいので他の文献も探してみると良いでしょう.個人的にはこの中で一番わかりやすいのは Andy Korpa の本だと思います.http://www.writingshaders.com/ がサポートページです.

最初の二冊には日本語訳があるようですが,残念ながらバージョンが古すぎて(version 2.0,2.1)あまり使えないでしょう.

メンタルレイを入手する

私の場合は会社でメンタルレイを使っているので問題ないのですが,個人で入手する場合には Maya, 3dsmax や XSI を買うというのが一番簡単だと思います.ただし,スタンドアロンが欲しい場合はちょっと複雑です.噂では,スタンドアロンは1000 ドル位ということですが,本当にいくらなのかは知りません.

standalone の mental ray を入手する一番簡単そうな方法は Andy Kopra のシェーダ本を買う方法だと思います.この本にはメンタルレイの 3.6+が付属しています.先程 Amazonl.com をみたら 157 ドルでした.(2009-5-14(Thu)では15,000円です.) このメンタルレイは機能的には並列機能だけ除いてフルバージョンです.つまり正規版と同じ画像を生成できますが,ネットワークレンダリングができず,1 Core しか使わないバージョンです.しかし,この値段ならば個人でも買えるでしょう.

Wednesday, May 13, 2009

メンタルレイシェーダ(shader)とは

メンタルレイのシェーダは実際には光が物体に当たった時にメンタルレイのコアから呼び出される C/C++ のコードであり,プラグイン(Plugin)という方が正しいと思います.シェーダという言葉は歴史的な経緯で残っているものだと思います.シェーダはユーザにかなりの自由度を与えてくれますが,実際にシェーダを書くことはなかなかないでしょう.

シェーダの自由度が高いというのは,光が物体に当たった時にユーザがやりたいことならほぼなんでもできるという意味です.たとえばレンダリング中に光がある物体に当った時に email を送って知らせてくれるということさえ可能です.(メンタルレイ的にはそういうことはして欲しくないでしょうが,shader は単なるプラグインなので可能) しかし,なんでもできるということは一方で難しいということでもあります.特にメンタルレイは長い時間をかけて発展してきたことや,下位互換性(backward compatibility) を保つために複雑になっている部分もあります.

Friday, April 24, 2009

シェーダ(shader)とは

メンタルレイではシェーダが重要な役割を果たすのでここで述べておきます.

シェーダ(shader) とは,光が物体に当たった時に,どのように物体の明るさを計算するかというプログラムコードです.(shade には影という意味があります.)しかし,これは最初にシェーダが考えられた時の元々の意味であって,現在はもっと拡張された意味を持っています.コンピュータグラフィクスでは物体をポリゴンなどの多角形で表現し,各頂点の明るさを計算し,そして多角形の内部を様々な方法で補間するということがかつて行なわれていました.時代と共に光と物体の相互作用の計算方法は発展し,複雑になっていきました.そしてシェーダの発展方向は主に二つの方向に進みました.一つはより速度,インタラクティブ性に重点を置いたハードウェアによるシェーディング,もう一つはよりリアリズムに重点を置いたソフトウェアによるシェーディングです.

グラフィックスに特化したハードウェアは現在 GPU (Graphics Processing Unit) と呼ばれています.初期の GPU には固定されたシェーダ機能が実装されました.できるだけ高速に大量の Pixel を生成するには機能を固定し,深いパイプラインで高いスループットを得るという手法が実際的だったためです.しかし計算能力の発展によってより高品質をめざすようになり,シェーダはプログラム可能になりました.シェーダプログラミングは最初アセンブラ言語に近いものでしたが,やがて Cg などの Shading 言語が実装されるようになりました.それはますます発展してCUDA, OpenCL (2009 年現在)のような一般的な言語となり,シェーダを書くだけのものではなくなりました.

一方でメンタルレイのシェーダの出発点は高品質な画像の生成を第一の目的として発展してきました.高品質を達成するために光が物体に当った時にどのような現象が起きるかをシミュレートするのがシェーダの主な役割でした.特にハードウェアのシェーダは各ピクセルで独立した計算を行う,つまり 局所的(local) 計算は得意ですが,実際の現象は 大域的 (global)です.遠くの物体が他の物体に影を落とす.という日常で見かけることは既に global な現象で,一つの物体がシーン全体に影響する可能性があります.このような 大域照明(globa lillumination) をある程度真面目に計算するのがメンタルレイです.メンタルレイでもシェーダは局所的な計算を行うものが多いですが,これらの現象をレイトーレーシング法によって大域的な現象として計算します.

現在この二つの方法は融合する方向に発展しています.今は GPU でレイトレーシング(ray tracing) を行う時代になりつつあり,メンタルイメージでは MetaSLというソフトウェアシェーダを GPU の言語 (Cg など)やメンタルレイシェーダにコンパイルする製品(mental mill (http://www.mentalimages.com/products/mental-mill.html))を出していま
す.

現時点では GPU のシェーダはゲーム業界の要求からまだ計算速度を重要視しており,質という点ではソフトウェアのシェーダはまだ一日の長があると思います.

(また,メンタルイメージは 2007年の 11 月に NVidia という GPU の大手の会社に買収されています.http://www.nvidia.com/object/mental_images.html)

Tuesday, April 21, 2009

このブログについて

このブログではメンタルレイというレンダリングソフトウェアについて書いていきたいと思います.

メンタルレイとは

メンタルレイ(mental ray)はドイツの mental images GmbH 製のレンダリングソフトウェアです.mental images 社は NVidia という会社の子会社です (2009年現在).Maya, 3dsMax, SoftImage XSI, などの DCC (Digital ContentsCreation) Software, あるいは Solidworks などの CAD などのレンダラとして利用されています.建築などの分野でも利用されていますが,StarWars や Matrix,最近では The Curious Case of Benjamin Button (邦題:ベンジャミン・バトン--数奇な人生) などの映画の特殊効果(Special Effect)に使われているようです.

http://www.mentalimages.com/products/mental-ray.html
http://www.mentalimages.com/gallery/motion-pictures.html

機能は豊富で高品質な画像を生成できる,というのが売りですが,なんでもできるというのは使うのが難しいという面もあります.特にシェーダー(shader) のカスタマイズの可能性はかなり広い一方,本当に使いこなすのは難しいと思います.通常は用意されているシェーダー(shader) を使うだけでもかなりのことができます.私の友人は mental ray を Ferrari に例えていました.Ferrari なのはイタリア人だからかもしれませんが,曰く,「どう使うか知らなければ動きもしないが,ちゃんと使えば (映画の) Matrix が作れる.」しかし,1ユーザとしてはもっと簡単だったらなあと思うことしきりです.

ところで,私の知る限りでは,メンタルレイの情報はほとんどが英語で提供されているので,できるだけ英語を併記しておくことにします.英語のページもどうぞ.