Mayaman > Mayaシェーダーを簡単に切り替える

「Mayaman/Mayaシェーダーを簡単に切り替える」の編集履歴(バックアップ)一覧はこちら

Mayaman/Mayaシェーダーを簡単に切り替える」(2008/05/13 (火) 15:38:42) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

一例ですが。shaderノードに"MM"と"MA"というカラーアトリビュートを作成し そこにMayaとMayamanの.outColorを接続。必要に応じてこのどちらかを.surfaceShaderにつなげば良いと思います。 とりあえずマテリアル選択して、つながってるSGにMMというアトリビュートを作成し、.outColorをつなぐPythonスクリプト。 #code(){{ import maya.cmds as cmds for i in cmds.ls(sl=True): SG = cmds.listConnections( i + '.outColor', d=True, s=False ) cmds.select( clear=True ) cmds.select( SG[0], ne=True) cmds.addAttr( longName='MM', usedAsColor=True, attributeType='float3' ) cmds.addAttr( longName='MMR', attributeType='float', parent='MM' ) cmds.addAttr( longName='MMG', attributeType='float', parent='MM' ) cmds.addAttr( longName='MMB', attributeType='float', parent='MM' ) cmds.connectAttr( i+'.outColor', SG[0]+'.MM') }}
MayaでOpenGLをテクスチャつきで表示しないとレイアウトしようがない、 でもレンダリングはRendermanShader使わないといけない。 そんな場合を想定してます。 これは一例ですが、shaderノードに"MM"と"MA"というカラーアトリビュートを作成し そこにMayaとMayamanの.outColorを接続。必要に応じてこのどちらかを.surfaceShaderにつなげば良いと思います。 とりあえずマテリアル選択して、つながってるSGにMMというアトリビュートを作成し、.outColorをつなぐPythonスクリプト。 コピペで動くような代物ではないので、読んで各自改変してください。 #code(){{ import maya.cmds as cmds for i in cmds.ls(sl=True): SG = cmds.listConnections( i + '.outColor', d=True, s=False ) cmds.select( clear=True ) cmds.select( SG[0], ne=True) cmds.addAttr( longName='MM', usedAsColor=True, attributeType='float3' ) cmds.addAttr( longName='MMR', attributeType='float', parent='MM' ) cmds.addAttr( longName='MMG', attributeType='float', parent='MM' ) cmds.addAttr( longName='MMB', attributeType='float', parent='MM' ) cmds.connectAttr( i+'.outColor', SG[0]+'.MM') }} MAアトリビュートもつくり、そこにMayaのシェーダをつないで置いてください。 僕は結構激しい状況なので規則正しいノード名をすべてに付けて スクリプトで全部やっちゃいました。 次は切り替えスクリプト。マテリアルを選択して実行です。 #code(){{ import maya.cmds as cmds switchTo = 'MA' for i in cmds.ls(sl=True): SG = cmds.listConnections( i + '.outColor', d=True, s=False ) cmds.select( clear=True ) cmds.select( SG[0], ne=True) attrs = cmds.listAttr( st=['MM','MA'] ) if len(attrs)==2: MA = cmds.listConnections( SG[0] + '.' + switchTo, d=False, s=True ) cmds.disconnectAttr(i + '.outColor', SG[0]+'.surfaceShader') cmds.connectAttr( MA[0]+'.outColor', SG[0]+'.surfaceShader') }}

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。