チュートリアル / 押忍!Softimage マニアクス
第5回:Softimage で始めよう Python Script vol.2

  • ゲーム
  • コラム
  • スクリプト・API
  • チュートリアル
  • 上級者
  • 中級者

5. 答え

# Applicationを短縮
si = Application

# 増分する座標は0からスタート
xvalue = 0

# RotationXのパラメータを格納する空のリスト"rotxlist"を作成
rotxlist = []

# for文を使って選択オブジェクトを回す
for obj in si.selection:
        # オブジェクト一つづつのLocal.posxに上記変数"xvalue"の数値をセット
        obj.Kinematics.Local.posx = xvalue
        # xvalueに10を足すをオブジェクト分だけ繰り返す
        xvalue = xvalue + 10
        # リスト"rotxlist"にオブジェクトのrotxパラメータを追加
        rotxlist.append(obj.Kinematics.Local.rotx)

# リストrotxlistに対してフレーム1にキーを設定する
si.SaveKey(rotxlist,1,'','','',False,'')

# リストrotxlistに90をセットする
si.SetValue(rotxlist,90)

# リストrotxlistに対してフレーム100にキーを設定する
si.SaveKey(rotxlist,100,'','','',False,'')

動作すればソレで良かろうなのですが、例えば解答の一つはこんな感じの内容になっています。
VBScriptでよく頭文字を大文字で書きだす人は注意して下さい。PythonではFor ~ In ~と記述するとエラーになります。

結果、こんな感じのシーンになっていれば正しく動いています。

おまけ

PythonスクリプトはMayaでもインストール直後から使えるようになっています。
言語が共通と言うことはソースコードの共有とは行かないまでも、ひとつの言語に対しての知識だけでたりると言う利点がありますね。
例えば今回のスクリプトをMaya用に置き換えると・・・

import maya.cmds as cmds

# 増分する座標は0からスタート
xvalue = 0

# RotationXのパラメータを格納する空のリスト"rotxlist"を作成
rotxlist = []

for obj in cmds.ls( sl=True, fl=True):
        print obj
        # オブジェクト一つづつのtxに上記変数"xvalue"の数値をセット
        cmds.setAttr( obj+".tx", xvalue )
        # xvalueに10を足すをオブジェクト分だけ繰り返す
        xvalue = xvalue + 10
        # リスト"rotxlist"にオブジェクトのrotxパラメータを追加
        rotxlist.append(obj+".rotateX")

# リストrotxlistに対してフレーム1にキーを設定する
cmds.setKeyframe(rotxlist, time=1, value=0)

# リストrotxlistに対してフレーム24に90度のキーを設定する
cmds.setKeyframe(rotxlist, time=24, value=90)

Softmageではsi = Applicationとしてアプリケーションをオブジェクト化しているのに対して、Mayaはコマンドのモジュールをインポート”import maya.cmds as cmds”している点にご注目下さい。

それではみなさん、ごきげんよう。

製品購入に関するお問い合わせ
オートデスク メディア&エンターテインメント 製品のご購入に関してご連絡を希望される場合は、こちらからお問い合わせください。