mouseTrack 関数を使用すると、マウスをトラックするための MAXScript 関数を登録できます。この関数は、トラッキングの進行中にボタンのクリックやドラッグなどのマウス アクションが発生するたびに呼び出されます。
この関数の形式は次のとおりです。
mouseTrack [on:<node>] [prompt:<message_string>] [snap:#2D|#3D] [trackCallback:fn|#(fn,arg)]
on:<node>
オプションで、トラックするシーン オブジェクトを指定します。オブジェクトを指定しない場合、マウスは現在のアクティブ グリッドをトラックします。オブジェクト サーフェス トラッカーは、SDK 関数 IntersectRay() を使用しますが、この関数はすべてのオブジェクト タイプに対して確実に実装されているわけではありません。編集可能メッシュでは必ず正常に機能するため、必要に応じて convertToMesh() を使用します。
このパラメータが指定されておらず、作図平面がビューポート ビューに直交している場合、マウス クリックについては右クリックのみが処理され、その他のマウス クリックはすべて無視されます。
prompt:<message_string>
プロンプト メッセージを MAX ステータス ラインに表示します。
snap:#2D|#3D
オブジェクト サーフェスでトラッキングが行われていない場合(on
:#2D
が指定されている場合はグリッドのスナップ ポイントにスナップし、#3D
が指定されている場合はスペース内の近接スナップ ポイントにスナップします。
trackCallback:fn|#(fn,arg)
マウスがアクティブなグリッド上またはオブジェクト サーフェス上でドラッグされたときに呼び出す関数を指定します。単一の関数または 2 つの要素配列内の関数および引数値で指定することができます。後者は、さまざまなタスクに対して共通のコールバック関数を使用する場合、およびパラメータを送信して特定の使用のために動作を制御したい場合に便利です。指定する関数は、次のいずれかの形式でなければなりません。
fn callback_fn msg ir obj faceNum shift ctrl alt = ...
つまり、7 つの引数を持つスクリプト関数です。この関数は、トラッキングの進行中にボタンのクリックやドラッグなどのマウス アクションが発生するたびに呼び出されます。
「'msg'
」引数は、発生したアクションの種類を示す次のいずれかのメッセージ コードです。
#freeMove - means the mouse is moved without a button being pressed
#mousePoint - means the left mouse button has just been pressed
#mouseMove - means the mouse is being dragged with the left button down
#mouseAbort - means the right mouse button was clicked, normally meaning cancel
'ir'
現在のマウスの位置におけるグリッドまたはサーフェスの交差法線レイ。レイには、法線のスペースにおけるポイントを指定する .pos
プロパティ、および法線の方向ベクトルを指定する .dir プロパティがあります。
'obj'
ドラッグするオブジェクトまたは undefined (on:
'faceNum'
トラックされているオブジェクトが編集可能メッシュの場合はマウスが通過する面の数、それ以外の場合は undefined。
'shift', 'ctrl' and 'alt'
キーボードのShift、Ctrl、およびAltキーの状態により、true または false。
この関数は、トラッキングを継続する場合は特殊な値 #continue
を返し、トラッキングを停止する場合はその他の値を返します。その値は、元の mouseTrack()
呼び出しの結果になります。