2012年8月10日金曜日

MAYA python Convert NURBS to Polygon

何を血迷ったのか、思わずMAYAのPython書いてみたのでメモ。
普段MAYAは殆ど使わないので正しい書き方とかあったら教えてください。
アトリビュートスプレッドシートを教えて頂いたのですが、勉強がてら
スクリプトでやる事にしてみました。(身の回りに気軽に聞ける人がいなかった・・・)

1.Convert NURBS to Ploygonするときにアトリビュートの設定一括変更後、ビュー見ながら微調整。

2.調整した終わったら、選択している奴を一個ずつ自分のアトリビュートのTessellationの値を使ってコンバートしていく

 <選択しているオブジェクトのアトリビュート一括設定>
----
import maya.cmds

displayRenderTessellation = 1
modeU = 1
numberU = 10
modeV = 1
numberV = 10
useChordHeight = 1
chordHeight = 0.2
useChordHeightRatio = 1
chordHeightRatio = 0.9

selectList = cmds.ls( sl=True )
for obj in selectList:
    cmds.setAttr ( obj + ".displayRenderTessellation" ,displayRenderTessellation)
    cmds.setAttr ( obj + ".modeU" ,modeU)
    cmds.setAttr ( obj + ".numberU" ,numberU)
    cmds.setAttr ( obj + ".modeV" ,modeV)
    cmds.setAttr ( obj + ".numberV" ,numberV)
    cmds.setAttr ( obj + ".useChordHeight" ,useChordHeight)
    cmds.setAttr ( obj + ".chordHeight" ,chordHeight)
    cmds.setAttr ( obj + ".useChordHeightRatio" ,useChordHeightRatio)
    cmds.setAttr ( obj + ".chordHeightRatio" ,chordHeightRatio)
----
 <選択しているオブジェクトをTessellationの値を使ってコンバート>
 import maya.cmds

obj = cmds.ls( sl=True )
for selected in obj:
    cmds.nurbsToPoly(
        selected,
        cht= cmds.getAttr( selected+".chordHeight"),
        chr =cmds.getAttr( selected+".chordHeightRatio"),
        edgeSwap = 0,
        format=2,
        polygonType=0,
        uNumber = cmds.getAttr( selected+".numberU"),
        uType = cmds.getAttr( selected+".modeU"),
        useChordHeight = cmds.getAttr( selected+".useChordHeightRatio"),
        useChordHeightRatio = cmds.getAttr( selected+".useChordHeight"),
        vNumber=cmds.getAttr( selected+".numberV"),vType=cmds.getAttr( selected+".modeV")
    )
----
下のスクリプトはmethodがGeneral用なので 他のモードだと多分エラー出したりするかもです。

NewObj = cmds.nurbsToPoly()みたいな書き方をする事で新しく出来たオブジェクトにたいして色々処理が出来るようです。

例えば
for selected in obj:
    NewObj = cmds.nurbsToPoly(中略)
    cmds.parent( selected, 'Null_BaseObj' )
    cmds.parent( NewObj, 'Null_NewObj' )

のように書いてあげれば、コンバート済みのベースのサーフェイスはNull_BaseObjに。
新しく出来たポリゴンオブジェクトはNull_NewObjに仕分けるとか。

IGESデータの編集は骨が折れますね(汗

Q.ところでMAYAのスクリプトエディターはタブで何種類か同時にスクリプト書いたりするときはどうするのでしょうか?

A.メニューから「新規タブ」 を選べます。

0 件のコメント:

コメントを投稿