アクセスカウンター
アメリカンイーグルスズキ自動車http://www.e-creditcard.info/アクセスカウンターネオサイトワンデー

Mayaでshaderのタイプを取得するスクリプト

shaderを取得するときにまず、頭に浮かぶ方法は

cmds.ls( typ=u'shader' )

で取得できるのでは?と思いますが、これでは取得できないようです。
シェーダーを選択しアトリビュートエディタのノード名の横に表示されているタイプ名(たぶんタイプ名だと思いますが、確信はありません。)
を見るとわかると思うのですが、shaderとは書かれてなくblinnやlambertととなっています。
ですので、shaderという分類であってもblinnやlambertがshaderというタイプではないのかと思います。(間違っていたら教えてください!)
なので、リストするときは以下のようになるわけです。

cmds.ls( typ=u'blinn' )
cmds.ls( typ=u'lambert' )

でもこれではいろんな種類のshaderを使用している場合、ひとつひとつのタイプ名を取得する文を書かなくてはいけなくなり、
大変になってしまいます。
そこで登場するのが

cmds.listNodeTypes()

です。
これを使ってshaderのノードタイプをリストします。

shaders = cmds.listNodeTypes( u'shader' )
# Result:[u'adskMaterial', u'anisotropic', u'blinn', u'cMuscleShader', u'cgfxShader', u'displacementShader', u'envFog', u'fluidShape', u'hairTubeShader', u'lambert', u'layeredShader', u'lightFog', u'materialFacade', u'oceanShader', u'particleCloud', u'phong', u'phongE', u'rampShader', u'shadingMap', u'surfaceShader', u'useBackground', u'volumeFog', u'volumeShader'] #

ずらーっとshaderのタイプがでてきました。
これを利用してshaderのタイプを取得すれば短い文で済むことが出来ました。

shaderType = cmds.listNodeTypes( u'shader' )
for sT in shaderType:
    cmds.ls( u'%s'%sT )

ここでひとつ注意点。。。
blinnとlambertのshaderを取得するとなぜかlambertの中にblinnのshaderが入っていたのでご注意ください。
(blinnとlambertのshaderをかぶることなく取得できる方法がわかりませんでした。もし、やり方があれば教えてください!)
また、分類文字列は以下の通りに取得するみたいです。

cmds.getClassification( u'lambert' )
# Result: [u'shader/surface'] #