2017-08-31 44 views
0

私はPythonとMaya 2015を使用していますが、ユーザーがMayaトランスフォームウィジェットをドラッグしている間にオブジェクトのトランスフォームを動的に記録する方法が不思議でした。私はまた、スクリプトを使用するときに、ユーザーが変換ウィジェットを起動してから、オブジェクトのユーザー入力変換を記録し、スクリプトの他の領域でそれらの数値を使用するようにする方法も興味があります。ありがとう。Pythonを使用してMayaのオブジェクトのユーザ入力ダイナミックトランスフォームデータを記録する

答えて

0

簡単な方法はありません。しかし、それほどうまく文書化されていないdraggerContextコマンドでそれを偽造できます。基本的にはdraggerContextを作成し、選択したオブジェクトを移動し、位置を記録するために、あなたがコードでプリントアウトを置き換えると思います。このバージョンではsetToolTo

import maya.cmds as cmds 

def on_drag(): 
    # handler for the drag action 
    dragPosition = cmds.draggerContext('dragger', q=True, dragPoint=True) 
    button = cmds.draggerContext('dragger', q=True, button=True) 
    modifier = cmds.draggerContext('dragger', q=True, modifier=True) 

    # print out the values... 
    print dragPosition, button, modifier 
    message = str(dragPosition[0]) + ", " + str(dragPosition[1]) 
    cmds.draggerContext('dragger', edit=True, drawString=message) 

# Define draggerContext with press and drag procedures 
cmds.draggerContext('dragger', dragCommand=on_drag, cursor='hand'); 

cmds.setToolTo('dragger') 

を使用して、それをアクティブにすると思います。 draggerContextには、カーソル位置から3次元空間への正しい投影を得るためのオプションがありますが、動作があなたの望むものと一致するように努力する必要があります。

+0

ありがとう、私はこれを実験します。とてもかっこいい。 – winteralfs

+0

これが役に立つと分かった場合は、将来この問題に遭遇した人々の回答を受け入れるようにする必要があります – theodox

関連する問題