日本語版: Maya DomeStereoCamera Rig - zicher3d-org/domemaster-stereo-shader GitHub Wiki

はじめに

DomeStereoCameraリグは、MayaのDomeAFL_FOV_Stereoシェーダーで右目と左目用のドーム映像カメラとして使用されます。 これによってメンタルレイレンズシェーダーがカメラに自動的に適用され、MayaのOpenGLハードウェアビューポート内でドームのプレビューシェイプや、シーンの広角アナグリフ立体プレビューを可能にします。

パネル/立体視メニューでアクティブなカメラリグを表示

ビューポートの[パネル] > [立体視]メニューから、利用可能な立体視カメラリグの一覧を確認することができます。

Maya内でのカメラリグの構造

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]を選択します。

Domemaster3D 立体視カメラリグの選択

ここでは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を選択することを忘れないでください。

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のオンラインドキュメントを参照してください。

Maya 立体視リグマネージャ ドキュメント


(翻訳: 株式会社オリハルコンテクノロジーズ 高幣俊之)
⚠️ **GitHub.com Fallback** ⚠️