<aside> 💡 スクリプトでレンダラーをVRayにした場合、VRayを設定にするために必要なノードが作られない場合がある。
Arnoldなどでも同様のエラーを経験しているので、レンダラー毎に処理が必要かも
</aside>
(※ RenderSettingsパネルは開かない状態で実行した場合の結果。)
Render を V-Rayに
import maya.cmds as cmds
render_globals = cmds.ls(type='renderGlobals')[0]
renderer = 'vray'
cmds.setAttr(f'{render_globals}.currentRenderer', renderer , type='string')
Renderのアニメーションタイプを変更しようとする
settings_node = 'vraySettings'
cmds.setAttr(f'{settings_node}.animType', 1)
結果:
vraySettings
が存在しない。と警告がでる。
# Error: RuntimeError: file <maya console> line 2: setAttr: No object matches name: vraySettings.animType
関連するGUIを表示すると、GUI作成時に必要なものが作成される。
vraySettings
→ レンダー設定パネル
以下の記事を参考に必要なものをスクリプトで作成する。
vraySettingsの例
if not cmds.ls('vraySettings'):
cmds.shadingNode("VRaySettingsNode", asUtility=True, name = "vraySettings")
<aside>
💡 cmds.shadingNode("VRaySettingsNode", asUtility=True, name = "vraySettings")
だけを実行するとvraySettingsが沢山出来てしまうので注意
</aside>
python - maya.standalone creating vraySettings node
import maya.cmds as cmds
#Load Vray Plugin
try:
cmds.loadPlugin('vrayformaya', quiet=True)
cmds.pluginInfo('vrayformaya', edit=True, autoload=True)
except Exception, e: print e
#Try and register vray
try:
cmds.renderer('vray')
except RuntimeError:
print "Vray already Registered"
#Collect all vray-Attributes
globalsTabLabels = cmds.renderer( 'vray', query=True, globalsTabLabels=True )
globalsTabCreateProcNames = cmds.renderer( 'vray', query=True, globalsTabCreateProcNames=True )
globalsTabUpdateProcNames = cmds.renderer( 'vray', query=True, globalsTabUpdateProcNames=True )
#Construct Vray-Renderer
for tab_id in range(len(globalsTabLabels)):
cmds.renderer('vray', edit=True, addGlobalsTab=[str(globalsTabLabels[tab_id]), str(globalsTabCreateProcNames[tab_id]), str(globalsTabUpdateProcNames[tab_id])])
#Create DAG for VRAYSETTINGS
cmds.shadingNode("VRaySettingsNode", asUtility=True, name = "vraySettings")
#Get Render-Node
nod = cmds.ls(type="VRaySettingsNode")
#This is test-case, to just set some basic params
if len(nod) > 0:
cmds.setAttr("vraySettings.vrscene_on", 1)
cmds.setAttr("vraySettings.misc_separateFiles", 1)
cmds.setAttr("vraySettings.misc_exportLights", 1)
cmds.setAttr("vraySettings.misc_exportNodes", 1)
cmds.setAttr("vraySettings.misc_exportGeometry", 1)
cmds.setAttr("vraySettings.misc_exportMaterials", 1)
cmds.setAttr("vraySettings.misc_exportTextures", 1)
cmds.setAttr("vraySettings.misc_exportBitmaps", 1)
cmds.setAttr("vraySettings.misc_meshAsHex", 1)
cmds.setAttr("vraySettings.misc_transformAsHex", 1)
cmds.setAttr("vraySettings.misc_compressedVrscene", 1)
else:
print "Render Node VRAY is not found"