日本語版: Maya DomeAFL_FOV_Stereo - zicher3d-org/domemaster-stereo-shader GitHub Wiki
DomeAFL_FOV_Stereo
レンズシェーダーは、立体ドーム映像コンテンツをメンタルレイレンダラ―を使ってレンダリングします。このノードは立体視用のドームマスター画像を出力しますが、その際によくある平行カメラによる立体視ではなく、パノラマを想定した立体視のレンダリングを行います。これは、ドームシアターの後方で立体視の左右が反転してしまう問題に対処するためです。
このレンダーノードを使うMayaのユーザーインターフェースを見ていきましょう。
[レンダリング]メニューセットの[Domemaster3D]メニューか、[Domemaster3D]シェルフの[Fulldome Stereo Rig]ツールを選択することで、シーンに立体ドーム映像のためのカメラリグが追加されます。
シーンにカメラリグが追加された後は、「アウトライナ」から"DomeStereoCamera"を選択してドーム映像の設定を編集することができます。
次に、「アトリビュートエディタ」でcenter_domeAFL_FOV_Stereo
タブを開きます。domeAFL_FOV_Stereo
ノードの設定が見えるようになりました。
注意: 左目と右目のカメラのdomeAFL_FOV_Stereo
ノードのアトリビュートは、center_domeAFL_FOV_Stereo
の設定値から数式を通して設定されます。
アトリビュートエディタでの設定を、ひとつひとつ見ていきましょう。 Let's go over the controls, one at a time.
[Domemaster Stereo Shader]欄では、ドーム映像レンズシェーダーに関する基本的な設定を行ないます。
[Camera]のプルダウンメニューでは、どの視点でレンダリングを行なうかを選択します。選択肢は"Center"、"Left"、"Right"のいずれかです。"Center"では通常の非立体視のドーム映像をレンダリングできます。
ここでは立体ドーム映像のカメラリグをシェルフプリセットを使ってシーンに追加したため、この[Camera]プルダウンメニューの設定は無視してかまいません。これは左目と右目のカメラはカメラリグとしてレンズシェーダーのカメラ制御に正しく結び付けられているためです。
[Field of View]では、ドームマスターレンダリングの視野角を設定します。デフォルトでは、ドームマスター画像は180度の視野角になっています。
もしシーンの"地面"も見えるようにしたければ、少しだけこの視野角を増やし、例えば220度にしたとしても、ドームではそれほど違和感のある映像にはなりません。
Tip: もし360度の全球映像をレンダリングしたい場合、適用されている視差や傾きの修正マップも更新する必要があります。
[Dome Radius]の設定値は、Mayaの通常の立体視リグで視差が無くなる距離と同じように考えることができます。この設定値は左目と右目のカメラが内向する角度を制御しています。
この[Dome Radius]の距離よりもカメラの近くに置かれたオブジェクトは、観客の方に飛び出して見えます。この[Dome Radius]の距離近くにあるオブジェクトは、ドームスクリーン上の上に乗っているように見えます。カメラから[Dome Radius]よりも離れた距離にあるオブジェクトは、ドームスクリーンの物理的な壁よりも遠くにあるように見えます。
この設定値はドームスクリーンの傾斜による影響を補います。もしドームスクリーンが傾斜していなければ、この値は0のままにしておいてください。
この設定値には、立体視カメラ間の距離をシーンで使用されている単位で設定します。Mayaのシーンでは通常cm単位が使われているため、この値は6.5cmに設定します。
もし大きなサイズ、または小さなサイズのシーンを作成しているなら、[Dome Radius]と[Cameras Separation]の値を自由に変更して、空間の大きさを変えて立体視を見やすくすることができます。しかし、これらふたつの設定値を変更するときは、その比率を変えないように維持する必要があります。
デフォルトの設定値では、[Dome Radius]が360cnm[Cameras Separation]が6.5cmなので、この比率は55:1になっています。これは22フィーとのドームを想定しています。もしこの55:1の比率を維持したままでずっと小さいシーンを作成したい場合は、[Dome Radius]を3.6に、[Cameras Separation]を0.065に設定できます。
映像制作者のなかには、より大きな110:1の比率を好む人もいます。この場合、例えば[Dome Radius]を720cm、[Cameras Separation]を6.5cmにして、47フィートのドームを想定することになります。
ドーム映像アーティストAaron Bradbury http://www.luniere.com/は、およそ154:1の比率が理想的な立体ドーム映像になると言っています(ただし映像の視差が0.372度以下に収まるように気をつける)。これは[Dome Radius]が1000、[Cameras Separation]が6.5cmの設定になります。
このチェックボックスは、[Dome Forward Tilt]の効果の有効・無効を切り替えます。
このチェックボックスは正面の壁に垂直に立てられたようなドームスクリーンを使用する場合に有効にします。
この欄にある設定項目は、立体ドーム映像のカメラリグに付けられたオレンジ色の半球の形をしたプレビュー用シェイプを調整します。プレビュー用シェイプはリアルタイムで更新され、[Dome Radius]やdomeAFL_FOV_Stereo
ノードの視野角などの変化を確認できます。
[FOV Display Mode]ではプレビュー用シェイプの表示スタイルを設定します。選択肢はOff、Wireframe、ShadedまたはWireframe on Shadedのいずれかです。
このカラースォッチはプレビュー用シェイプの表示色を設定します。
このスライダーはプレビュー用シェイプの透明度を設定します。デフォルト値0.25で、25%の透明度です。
0に設定すると完全に不透明に、1.0または100%にすると完全に見えなくなります。
[Double Sided Shading]のプルダウンメニューでは、プレビュー用シェイプを内側や外側から見えるように設定します。表示と非表示をうまく設定することで、半球のプレビュー用シェイプを透かして見ることができます。
この欄は現在も開発中の部分で、ドーム映像のセーフエリア領域の表示を設定します。シーンの中で主なオブジェクトやそのアクションはこの領域の中で発生させるよう、参考として利用します。
ここではシーンが快適な立体視になるような最も近い、あるいは最も遠い領域を設定します。プレビュー用シェイプはリアルタイムで更新され、[Dome Radius]や[Cameras Separation]などの変化を確認できます。
この欄では、視差や視線の向き、傾きによる立体視効果を補正するためのスクリーン座標系テクスチャー画像を参照することができます。
これらのテクスチャ画像はスクリーン座標系全体を覆うように適用され、「レンダービュー」の最終的なレンダリング画像に影響を与えます。
C:\Program Files\Domemaster3D\sourceimages
フォルダにあるデフォルトのテクスチャ画像ファイルを使用することもできますし、[Domemaster3D]シェルフの[DomeTexture]や[DomeRamp]ツールを使って独自のマップを作成することもできます。
[Separation Multiplier]アトリビュートに[DomeRamp]ツールを使う時は、Mayaのランプノードを使ってシーンの立体視効果の強さを動的に調整することができ、制作者の判断でドームスクリーン後方の立体視を無くしてしまうこともできます。
[FlipX]と[FlipY]はレンダリング時に映像を水平または垂直に反転します。
これにチェックを入れると映像が水平方向に反転します。
これにチェックを入れると映像が垂直方向に反転します。
DomeAFL_FOV_Stereo
ノードは他にもいくつかの内部用アトリビュートを持っています。これらはテクニカルディレクター用で、アーティストが調整する必要はありません。
[Dome Version]はシーン内のカメラリグが作成された時のソフトウェアのバージョンを追跡するための値です。現在のバージョンの値は1です。この値は将来のDomeAFL_FOV_Stereo
ノードが現在のカメラリグを更新し新しいアトリビュート等を追加するために使用します。
[Preview Shape]は現在のカメラに付けられたオレンジ色のプレビュー用半球シェイプの名前を追跡するためのものです。このプレビュー用シェイプは[FOV Display Mode]の設定値に従って動的に生成されます。
プレビュー用シェイプ"DomeStereoCameraPreviewHemisphere"とプレビュー用カーブ'DomeStereoCameraPreviewCurve"は、domeStereoCameraリグに親子付けられており、シーン内でカメラが動くと立体視リグに付いて一緒に動きます。
もし興味があれば、「アウトライナ」でDomeStereoCameraリグの横の[+]をクリックして展開してみましょう。プレビュー用カーブと半球が立体視リグのグループの下にあることがわかります。
[Preview Curve]はプレビュー用の半球シェイプの生成のために使われるNURBSカーブの名前を追跡するためのものです。このカーブの形状はdomeAFL_FOV_Stereo
ノードの現在の[Dome Radius]と[Field Of View]の設定値によってリアルタイムに調整されます。
注意: プレビュー用カーブはNurbsCurveの[Intermediate Object]チェックボックスによって非表示になっています。
Mayaのビューポートで作業する際、カメラリグを通して見たようなリアルタイムの立体視効果を試すことができます。これをドームマスターレンダリングに似せたOpenGLの広角モードで表示することで、快適な[Dome Radius]や[Cameras Separation]の値を赤青立体メガネなどを使ってリアルタイムに検討することができます。
立体視カメラリグからシーンを見てみましょう。ビューポートの[パネル]メニューから[立体視] > [DomeStereoCamera]を選択します。これで視点が立体ドーム映像カメラになりました。
ビューポートをOpenGLのアナグリフ立体視レンダリングに切り替えましょう。ビューポートの[立体視]メニューで、[アナグリフ](フルカラーの立体視)または[輝度アナグリフ](白黒のアナグリフ立体視)を選択します。
下図はシンプルなシーンを左側に立体ドーム映像カメラで、右側にOpenGLで(輝度アナグリフモードで)表示した様子です。
ビューポートにはレイトレース機能が無いのでドームマスター画像とは正確には一致していません。
しかしこうした制限はあるにしても、このビューポート表示は非常に便利です。なぜならこれによって[Dome Radius]や[Cameras Separation ]の最適値を見つけるまでの無数のレンダリング時間が節約できるからです。もしこのOpenGL表示のビューポートで快適な立体視効果に調整できたら、レイトレースしたドームマスター画像の方でも目に負担の無い立体視になっているはずです。
プレビュー用の半球シェイプをShadedモードにしておくと、ビューポート内でこれがシーンを"切断"する様子から、オブジェクトが正または負のどちらの視差になるかわかりやすくなります。つまり、オブジェクトが半球シェイプの"内側"にある場合、そのオブジェクトはスクリーンから観客に向かって飛び出して見えることになります。逆にオブジェクトが半球シェイプの外側にある場合、これはドームスクリーンの向こう側にあるように見えることになります。
もしレンダリング結果でサーフェースマテリアルのテクスチャ上にぼやけた線状のゴミが発生したら、これはMayaの標準のファイルテクスチャノードによるメンタルレイのテクスチャサンプリングエラーが原因です。この問題の解決法は、標準のmentalrayTexture
ノードを使ってサーフェースマテリアルにテクスチャを貼ることです。
このメンタルレイのドームマスターレンダリング時に発生するテクスチャのゴミの問題について、詳細はwiki domeAFL向けに最適化されたサーフェースマテリアルの作成を参照して下さい。
Domemaster3DシェルフにはColor Material
、Color + Bump Material
, and Color Image Sequence Material
という3つのツールが用意されており、簡単にmentalrayTextureを使ったメンタルレイのシェーディングネットワークを作り始めることができます。
ドーム映像や全天球影像用の立体視カメラをシェルフツールかDomemaster3Dメニューからシーンに追加すると、プリレンダーMELスクリプトおよびポストレンダーMELスクリプトがMayaの「レンダー設定」ウィンドウに自動的に追加されます。これらはレンダリング時の立体視レンダリング設定を制御するために使用され、Mayaのリアルタイムビューポートでもアナグリフによる立体視プレビュー機能も利用可能にします。
もしDomemaster3Dシェーダーを使った既存シーンがあり、何らかの理由でプリ・ポストレンダーMELスクリプトを手動で追加する必要がある場合、下記の値を使用してください。
プリレンダーMELスクリプト (レンダリング開始時に使用されます):
source "domeRender.mel"; domemaster3DPreRenderMEL();
プリレンダーMELスクリプト (レンダリング完了後に使用されます):
source "domeRender.mel"; domemaster3DPostRenderMEL();
Domemaster3Dシェーダーは通常、domeAFL_FOV_StereoおよびLatLong_Stereoシェーダーによるドーム/全天球カメラリグの立体視設定を制御するためにプリレンダーおよびポストレンダーMELスクリプトを使用します。
もしDomemaster3Dシェーダーをレンダーファームで使用し、その環境では「レンダー設定」ウィンドウのプリレンダーおよびポストレンダーMELスクリプトの実行が許可されていない場合、レンダーファーム利用者がこの「レンダー設定」ウィンドウからこれらのMELスクリプトコマンドを削除する必要があります。
もしレンダーファームを使って非立体視のレンダリングを行なう場合、特に問題はありません。
もしレンダーファームを使って立体ドーム映像や立体全天球映像のレンダリングを行なう場合、Mayaのシーンファイルを転送する前に以下のMELコマンドを手元のワークステーションで実行する必要があります。
source "domeRender.mel"; domemaster3DPreRenderMEL();
これによってカメラの視野角が適切に設定され、立体視カメラリグが正しくレンダリングできるようになります。
もしDomemaster3Dシェーダーを使用していてレンダリング結果にごみが発生する場合、シーン内のオブジェクトに適用されているサーフェースマテリアルを確認してください。Mayaの標準のファイルテクスチャノードが使用されていれば、これをDomemaster3Dシェルフのツールを使用してmentalrayTextureを使ったメンタルレイのシェーディングネットワークに変更してください。また、Mayaの標準カメラシェイプのFOV上書き機能を使ってこの問題を軽減することもできます。詳細はMaya版のテクニックのWikiページを参照して下さい。