日本語版: Maya DomeStereoCamera Rig - zicher3d-org/domemaster-stereo-shader GitHub Wiki
DomeStereoCameraリグは、MayaのDomeAFL_FOV_Stereo
シェーダーで右目と左目用のドーム映像カメラとして使用されます。
これによってメンタルレイレンズシェーダーがカメラに自動的に適用され、MayaのOpenGLハードウェアビューポート内でドームのプレビューシェイプや、シーンの広角アナグリフ立体プレビューを可能にします。
ビューポートの[パネル] > [立体視]
メニューから、利用可能な立体視カメラリグの一覧を確認することができます。
DomeAFL_FOV_Stereo
ノードは、Maya用のカスタムカメラリグであるDomeStereoCameraリグと一緒に動作するよう設計されています。Mayaの起動時に、userSetup.pyスクリプトがこのカスタムカメラリグをMayaに読み込みます。Mayaのカスタム立体視リグ エディタから、立体視リグがどのような仕組みになっているかを確認してみましょう。
[レンダリング]メニューセットに切り替えます。[立体視] > [エディタ]
メニューから[カスタム立体視リグ...]
を選択します。
これにより「カスタム立体視リグ」ウィンドウが表示され、ここからアクティブな立体視リグを編集することができます。
この中には[作成プロシージャ]
と[カメラ セットのコールバック]
の2つのアトリビュートがあり、これらはカメラリグスクリプトの中から実行されます。
DomeStereoCameraリグでは、これらのアトリビュートは以下のように設定されています:
作成プロシージャ: domeStereoRig.createRig
カメラ セットのコールバック: domeStereoRig.attachToCameraSet
カスタム立体視リグエディタの[作成プロシージャ]と[カメラ セットのコールバック]アトリビュートで指定されたこれらの値は、カメラリグのPythonスクリプト内で実行される関数名です。Domemaster3Dの場合、カメラリグスクリプトは'domeStereoRig.py'という名前になっています。
Mayaのシーンに新しい立体ドーム映像用のカメラリグが追加されると、domeStereoRig.pyスクリプト内部で関数createRig()
が実行されます。下図はこの新しいカメラリグがシーンに追加された直後の「アウトライナ」ウィンドウのスナップショットです。
[レンダリング]メニューセットに切り替えると、[Domemaster3D]メニューがあるのに気付くでしょう。この中から、アクティブな立体視リグと、どのスクリプトがデフォルトのカメラリグに設定されているかを確認してみましょう。
メニューから[Domemaster3D] > [Dome Cameras] > [Choose a Default Stereo Rig]
を選択します。
ここではMayaでアクティブな立体視リグが一覧表示されています。Mayaの通常のリグは"StereoCamera"という名前で表示され、さらにDomemaster3Dが"DomeStereoCamera"という名前のリグを追加しています。
注意: もしDomeAFL_FOV_Stereo
ノードを使用する場合は、この[Choose a Default Stereo Rig]メニューで[DomeStereoCamera]を選択しておく必要があります。
もしMayaで立体ドーム映像以外のカメラリグを使用する際には、この[Choose a Default Stereo Rig]メニューからその他のカメラリグ、例えばStereoCamera
を選択します。再びDomeAFL_FOV_Stereo
ノードを使用する際には、再度[Domemaster3Dメニューの[Choose a Default Stereo Rig]内でDomeStereoCamera
を選択することを忘れないでください。
The DomeStereoCamera rig script is called "domeStereoRig.py" and it is located in the user account's Maya scripts folder:
Windows Script Path:
C:\Program Files\Domemaster3D\maya\common\scripts\domeStereoRig.py
Mac OS X Script Path:
/Applications/Domemaster3D/maya/common/scripts/domeStereoRig.py
Linux Script Path:
/opt/Domemaster3D/maya/common/scripts/domeStereoRig.py
DomeStereoCameraリグはほとんどのケースで問題なく動作します。もしこれを改造する必要がある場合は、stereoCameraDefaultRig.py
を参考にdomeStereoRig.pyスクリプトを作成してください。
このオリジナルファイルは下記の場所に置かれています。
C:\Program Files\Autodesk\Maya2014\Python\Lib\site-packages\maya\app\stereo\stereoCameraDefaultRig.py
下記のPythonコードはDomemaster3DのデフォルトのuserSetup.pyスクリプト内で使用され、Mayaの起動時にアクティブな立体視リグの場所を探しています。
#Find the name of the stereo camera rig
def findDomeRig():
import maya.cmds as cmds
rigs = cmds.stereoRigManager(listRigs=True)
print ("Stereo Camera rigs:")
for rig in rigs:
defs = cmds.stereoRigManager(rigDefinition=rig)
print 'Rig "'+ rig +'": (language '+defs[0]+') create callback: '+defs[1]
#Check for
if (rig == "DomeStereoCamera"):
return 1
return 0
下記のPythonコードはDomemaster3DのデフォルトのuserSetup.pyスクリプト内で使用され、Mayaの立体視リグマネージャにDomeStereoCameraリグを読み込んでいます。
#Check if a DomeStereoCamera rig exists in the scene
def addNewDomeRig():
import maya.mel as mel
import maya.cmds as cmds
import domeStereoRig as domeStereoRig
if (findDomeRig() == 0):
print ("A DomeStereoCamera rig has been added to the stereoRigManager.")
# Register the DomeStereoCamera rig type
# add[rig, language, createProcedure]
# cameraSetFunc=[rig,callback]
# Add the custom rig
cmds.evalDeferred("cmds.stereoRigManager(add=['DomeStereoCamera', 'Python', 'domeStereoRig.createRig'])")
# Add the custom callback set for Maya 2011+
mayaVersion = getMayaVersionDome()
if (mayaVersion >= 2011):
cmds.evalDeferred("cmds.stereoRigManager(cameraSetFunc=['DomeStereoCamera','domeStereoRig.attachToCameraSet'] )")
#Make the new rig the default rig
cmds.evalDeferred("cmds.stereoRigManager(defaultRig='DomeStereoCamera')")
else:
print ("A DomeStereoCamera rig already exists in the stereoRigManager.")
#else:
# Maya 2010 or older was detected
#print ("The Domemaster3D stereo rig feature requires Maya 2011 and newer.")
上記のコードを使用するには、Mayaにコールバック先の名前を知らせるために、最初にこのスクリプトを我々の立体視リグにインポートする必要があります。この立体視リグスクリプトはdomeStereoRig.pyという名前なので、以下のPythonインポート関数を実行します。
import domeStereoRig as domeStereoRig
下記のPythonコードが立体視リグマネージャの[作成プロシージャ]
を設定しています。
cmds.stereoRigManager(cameraSetFunc=['DomeStereoCamera','domeStereoRig.attachToCameraSet'] )
また[カメラ セットのコールバック]
は下記のように設定されています。
cmds.stereoRigManager(cameraSetFunc=['DomeStereoCamera','domeStereoRig.attachToCameraSet'] )
userSetup.pyスクリプトは起動時にcmds.evalDeferred()
にラップされて実行されます。このため、このスクリプトはMayaの起動プロセスが完了し、stereoCamera.mll
プラグインが読み込まれてMayaがアイドル状態になった時に実行されます。
このDomeStereoCameraリグをデフォルトの立体視リグにするために、下記のコードを使用します。
cmds.stereoRigManager(defaultRig='DomeStereoCamera')
Mayaの立体視リグマネージャについてより詳しく知りたい場合は、Mayaのオンラインドキュメントを参照してください。