Index
1.1 vidroとは?
vidroはフリーのグローバルイルミネーションレンダラです。レイトレーシングベースの大域照明アルゴリズムによってフォトリアルなレンダリングを実現します。HDRIによるイメージベースドライティング(IBL)や、不均質な媒質による光の散乱等が計算可能です。また、ノンフォトリアリスティックレンダリング(NPR)もサポートしており、レンダリング結果を好みの画風に仕上げることが出来ます。
1.2 動作環境
vidroはWindows用ソフトウェアです。動作確認はWindows 7 64bit版で行っています。
vidroはSSE2に対応したx86 CPUで動作します。また、vidroはマルチスレッドで動作するので、CPUのコア数が多ければ多いほどパフォーマンスが向上します。
vidroを動作させるには多くのメモリを必要とします。メモリが少ないとレンダリングの途中で落ちるので注意して下さい。
2.1 vidroのダウンロード
まずvidroをダウンロードします。最新版のvidroはトップページにて公開しています。過去のバージョンをダウンロードしたい場合はupadte historyからダウンロード出来ます。
公開しているバイナリには64bit版, 32bit版があり、それぞれに日本語版と英語版があります。使用しているOS環境に合わせてダウンロードして下さい。
最新版で不具合を発見された方はメール(yusuke.tokuyoshi@gmail.com)で連絡して頂けると対応します。その際、不具合が生じるファイルを添付して頂けると非常に助かります。
ダウンロードしたzipファイルの中のvidro.exeというファイルが本体です。しかしvidro本体だけでは動作しないので次の手順に進みます。
2.2 Microsoft Visual C++ 2008 SP1 再頒布可能パッケージのインストール
vidroを動作させるためにはMicrosoft Visual C++ 2008 SP1 再頒布可能パッケージが必要です。64bit用と32bit用がそれぞれマイクロソフトから公開されているので、ダウンロードしてインストールして下さい。パッケージのインストールが完了後、vidro.exeを起動してエラーが出なければ成功です。
3.1 オブジェクトファイルとシーンファイル
vidroを起動してメニューの[ファイル(F)]->[シーンを開く(O)...]からレンダリングするファイルを読込みます。ファイルの読込はドラッグ&ドロップやコマンドラインからも可能です。
vidroで読み込めるファイルはFBX, MQO, LWO, 3DS, OBJ, DXF, COLLADAとVDRファイルというvidro用のシーンファイルです。改行コードがCRのファイルは読み込めません。3DSファイルはキーフレーム情報等が未対応のため、正しく読み込めない可能性があります。又、COLLADAはエラーが出る可能性が高いので推奨しません。オブジェクトファイルをvidroに直接読み込ませるよりも、VDRファイル経由で呼び出す方が照明、マテリアル、その他ボリューメトリックな情報等を細かく設定出来るのでVDRファイルを推奨します。オブジェクトファイルを直接読み込ませても一部の設定ならvidroのGUI上で編集可能であり、VDRファイルに保存することが出来ます。VDRファイルの保存はメニューの[ファイル(F)]->[シーンを保存...]で行います。
3.2 画像ファイル
テクスチャ等で読み込める画像ファイルはPFM, TIFF, EXR, HDR, PNG, BMP, JPEG, GIF, WMF, EMF, ICOファイルです。TIFFは32bit浮動小数点型のHDRIとLDRIの両方に対応しています。法線マップの場合を除いて、PNGやBMP等のLDRIなら、ガンマ値2.2で補正して読み込みます。レンダリング画像の保存は、PFM, TIFF, EXR, HDR, PNG, BMP, JPEG, GIFに対応しています。保存の場合、TIFFは32bit浮動小数点型のHDRIになります。JPEG, GIFの画質は汚いので推奨しません。画像の入出力にはHDRIを推奨します。
3.3 オブジェクトファイルの読込時の注意点
vidroはポリゴンが重なっている面が存在すると正しくレンダリングできません。両面ポリゴンでモデリングしている場合は、vidroに読み込ませる前に必ず片面化して下さい。また、メタセコイアにおける曲面や鏡像等にも対応してません。必ずフリーズして下さい。
MQOファイルの読込で、マテリアルの情報が記述されている場合、そのマテリアルを読み込みます。このときマテリアルのshaderがLambertでもConstantでもなく、spc(反射光)の値が0より大きいなら、vidroでは鈍い鏡面反射の重みが1になり、反射モデルがAnisotropic Phongモデルとなります。鏡面反射の反射率はspc*2/(power + 2)の値が適用されます。shaderがLambertかConstantであるか、あるいはspc(反射光)の値が0なら、鈍い鏡面反射の重みが0になり、反射モデルはLambertモデルになります。尚、MQOのマテリアルパラメータのうち、colのRGB値はガンマ値2.2で補正して読み込みます。それ以外の値は補正しません。
OBJファイルを読み込んだ場合、MTLファイルに記述されたマテリアル情報を読み込みます。このときも同様に、Ks(鏡面反射)の値が0より大きいならvidroでは鈍い鏡面反射の重みが1になり、鏡面反射の反射率にKs*2/(Ns + 2)の値が適用されます。そうでないなら鈍い鏡面反射の重みが0になります。
尚、vidroではMQO,LWO,3DSファイル以外のマテリアルの値は、見た目の色ではなく反射率と解釈するのでガンマ補正せずに読み込みます。モデラのガンマ値を2.2に設定してモデリングを行ってください。
MQO,FBXファイルを直接を読み込んだ場合、そのファイルに記録されている点光源と平行光源を読み込みます。光源が記録されていない場合、明るさ1の真っ白な天球光源が置かれます。IBL等の他の照明を使用したい場合や、ボリュームレンダリングを行いたい場合は、VDRファイルをテキストエディタで編集するか、GUIの[メニュー]->[シーン(S)]でvidroに入力されたシーンを編集する必要があります。
4.1 レンダリングの実行
シーンデータの入力が完了したらレンダリングを行います。レンダリングは[メニュー]->[レンダリング(R)]->[レンダ...]で、レンダリングダイアログが開き、このダイアログのOKボタンを押すことで実行されます。このとき、マルチコアCPUを使用している場合は、自動的にマルチスレッドで実行されます。レンダリングの計算が始まると完了するまで中止は出来ません。どうしても中止したい場合はvidroを強制終了する必要があります。レンダリング中、途中経過を表示したい場合はF5キーを押して下さい。また、レンダリング中でも、[メニュー]->[表示]の全ての項目は変更可能です。
4.2 画質を制御するパラメータ

Rendering Dialog
vidroで用いている大域照明アルゴリズムでは画質と計算時間がトレードオフの関係にあります。照明計算で用いるサンプル数を少なくすると、短い時間でレンダリング出来ますが画像にノイズが発生し、サンプル数を多くすると計算時間が長くなりますがノイズが抑えられます。これらの画質を制御するパラメータはGUI上ではレンダリングダイアログで、CUI上ではコマンドラインオプションで指定します。これらのパラメータの詳細は以下になります。
Width:
レンダリング画像の横のピクセル数。フォトンマップ構築を除いたレンダリング時間はこの値に比例する。
Height:
レンダリング画像の縦のピクセル数。フォトンマップ構築を除いたレンダリング時間はこの値に比例する。
Caustics Photons (コースティクスフォトン):
コースティクスフォトンマップの構築で使われるフォトンの放射回数。このパラメータが大きいほど、物体表面のコースティクスを正確に描くことが出来る。フォトンが足り無い場合、陰影がボケたり斑が出たりしてしまう。ただしこのパラメータを大きくすると、計算時間が大きくなるだけでなく、メモリの使用量も増える。コースティクスフォトンマップの必要無いシーンでは、入力は無効になる。尚、このパラメータを0にするとunbiasedなレンダリングが行われる(ただし、点光源・平行光源が存在しないシーンに限る)。
Volume Photons (ボリュームフォトン):
ボリュームフォトンマップの構築で使われるフォトンの放射回数。このパラメータが大きいほど、パーティシペイティングメディアにおける光の散乱を正確に描くことが出来る。フォトンが足り無い場合、陰影がボケたり斑が出たりしてしまう。ただしこのパラメータを大きくすると、計算時間が大きくなるだけでなく、メモリの使用量も増える。ボリュームフォトンマップの必要無いシーンでは、入力は無効になる。
Radiance Threshold (放射輝度の閾値):
近傍フォトンの最大探索半径を決定する為の値。この値が小さい程最大探索半径が大きくなり、大きいほど最大探索半径が小さくなる。最大探索半径が小さくなると、計算時間が短くなり、影の境界などがシャープになるという利点があるが、斑が出やすくなるという欠点がある。詳細は"A Practical Guide to Global Illumination using Photon Mapping"のsection 5.2、もしくは"High Quality Rendering using Ray Tracing and Photon Mapping"の70頁を参照。このパラメータは放射輝度の許容エラーの大きさなので、表示画面に現れるエラーの大きさは露出の大きさに比例する。従って、露出が大きい設定でレンダリングする場合はこのパラメータを小さくし、露出が小さい設定でレンダリングする場合はこのパラメータを大きくすると良い。初期値の0.05は露出を1.0と仮定した数値である。自動露出を使う場合は注意が必要。尚、フォトンマップの必要無いシーンでは、入力は無効になる。
Over Sampling (オーバーサンプリング):
ピクセル当りの視点から放射されるレイのサンプル数。アンチエイリアスやDOFによるノイズを制御するパラメータ。この値が大きいほどノイズが小さくなる。ただしDOFが無効ならば大きくしても、遅くなるだけであまり意味は無い。
Global Illumination (大域照明):
最も重要なパラメータ。ピクセル当りの物体表面の品質。全体のノイズを制御するパラメータ。この値が大きいほどノイズが小さくなる。
Area Light (エリアライト):
ピクセル当りのエリアライトの品質。エリアライトの直接照明によるノイズを制御するパラメータ。エリアライトとはEmissionが0より大きなマテリアルを割り当てられたオブジェクトのことである。このパラメータが大きいほどノイズが小さくなる。ただし全てのエリアライトの明るさが他の光源に比べ弱い場合はこの値を大きくしてもあまり意味は無い。エリアライトが存在しないシーンでは、入力は無効になる。またエリアライトの輝度がスカイライトの輝度に比べて小さいときは初期値が0になる。
4.3 フォトンマップの再構築
vidroでは、シーンが変更されない限り、2度目以降のレンダリングでは前回構築したフォトンマップを再利用して高速化します。パラメータを変更してフォトンマップを再構築したい場合は、フォトンマップをクリアしてからレンダリングを行う必要があります。コースティクスフォトンマップのクリアは[メニュー]->[レンダリング(R)]->[コースティクスフォトンマップをクリア]で、ボリュームフォトンマップのクリアは[メニュー]->[レンダリング(R)]->[ボリュームフォトンマップをクリア]で行います。
4.4 バッチレンダリング
vidroはCUIでも実行できるので、ユーザがバッチファイルを作成することでバッチレンダリングが可能です。コマンドラインオプションについてはこちらのページを参照して下さい。また、バッチファイルを書くのが面倒だと言う方はWonderRabbitProjectにてvidroのバッチ処理用フロントエンドVidroSequenceが公開されています。アニメーション等をレンダリングする場合に便利だと思います。
vidroでは[メニュー]->[表示]から以下の出力を選択できます。これらはレンダリング中やレンダリング後でも変更可能です。
Photoreal(フォトリアル):
写実的なレンダリング結果を出力する。背景が設定されていたら背景が合成される。
Non-photoreal(ノンフォトリアル):
輪郭線の抽出と色調変換を行ったレンダリング結果を出力する。輪郭線は[輪郭線の設定...]の設定が反映される。色調変換は[ビュートーン][ライティングトーン]の設定が反映される。また、背景が設定されていたら背景が合成される。
Contour(輪郭線):
輪郭線のみを表示する。輪郭線は[輪郭線の設定...]の設定が反映される。ただしContour Color(線色)は無視される。
Transmittance(透過率):
背景合成用の透過率を出力する。明るい領域が背景となる領域。
Normal(法線):
物体表面の法線を出力する。(R, G, B)=((x + 1)/2, (y + 1)/2, (z + 1)/2)で表示される。形状の確認、あるいはポストプロセッシング用。
Reflectance(反射率):
発光、照明を無視してマテリアルの反射率のみを出力する。ポストプロセッシング用。
Illumination(照明):
発光、反射率を無視して照明のみを出力する。ポストプロセッシング用。
Emission(発光):
反射率、照明を無視して発光のみを出力する。ポストプロセッシング用。
"反射率"、"照明"、"発光"はレンダリング画像の各成分で、(最終画像)=(反射率)×(照明)+(発光)です。
執筆中...

An Example of Non-photorealistic Rendering