Inheritance |
|
hou.ViewerDragger
クラスには、マウスの動きの拘束や指定した原点を基準にドラッグ座標を確実に計算するといった多くの細かい事を気にする必要なく、マウスドラッグの機能の実装に役立つ色々なメソッドが用意されています。
hou.ViewerDragger
は、Draggerをインスタンス化(具体化)する際に使用しなければならないクラスであるhou.ViewerHandleDraggerとhou.ViewerStateDraggerの抽象基底クラスです。
Draggerの処理は、3つの部分に分けることができます:
-
開始: このステップでは、特定のドラッグ操作用にDraggerを設定します。
-
ドラッグ: ここでは、ステップ#1で設定したとおりに実際にドラッグ操作をインタラクティブに実行します。
-
終了: ドラッグ操作を終了し、Draggerをクリーンアップします。
ジオメトリを平面沿いやライン沿いに移動したり、ジオメトリを軸回転させるといったドラッグ操作は、Draggerを使用することで処理することができます。
メソッド ¶
startDrag(ui_event, start_pos)
Draggerがマウスを指定した位置からビューポート内の任意の場所まで動かせるようにします。
Note
を使ってonMouseIndirectEventからstartDrag
を呼び出すと、Draggerは、マウス下のワールド空間位置を基準にハンドル位置を計算します。
ui_event
UIイベント情報が格納されたhou.ViewerEventオブジェクト。
通常では、これはHoudiniがPythonハンドルまたはPythonステートのonMouseEvent
に渡すオブジェクトです。
start_pos
ドラッグ操作の開始位置を示したhou.Vector3オブジェクト。 例えば、ここにはPythonハンドルのピボットを指定します。
startDragAcrossFloor(ui_event, start_pos, mouse_offset)
このメソッドは、Draggerがコンストラクション平面やビューポートの参照平面グリッドに沿ってマウスを移動できるようにします。
ui_event
UIイベント情報が格納されたhou.ViewerEventオブジェクト。
これは、HoudiniがonMouseEvent
Pythonハンドルのハンドラーに渡すオブジェクトです。
start_pos
ドラッグ操作の開始位置を示したhou.Vector3オブジェクト。
startDragAlongLine(ui_event, line_origin, line_dir)
開始ポイントと方向ベクトルで定義されたラインに沿ってマウスを動かすようにDraggerを設定します。 ラインをピックしてマウスを動かすと、Draggerは、そのマウスの動きをそのラインの方向に拘束します。
ui_event
UIイベント情報が格納されたhou.ViewerEventオブジェクト。
これは、HoudiniがonMouseEvent
Pythonハンドルのハンドラーに渡すオブジェクトです。
line_origin
ラインの開始位置を定義したhou.Vector3オブジェクト。
line_dir
ラインの方向を定義したhou.Vector3オブジェクト。
startDragAlongPlane(ui_event, plane_point, plane_normal)
原点ポイントと法線ベクトルで定義された平面に沿ってマウスを動かすようにDraggerを設定します。
LMB
を押してマウスを動かすと、Draggerは、そのマウスの位置をその平面上に拘束します。
ui_event
UIイベント情報が格納されたhou.ViewerEventオブジェクト。
これは、HoudiniがonMouseEvent
Pythonハンドルのハンドラーに渡すオブジェクトです。
plane_point
平面上のポイントを定義したhou.Vector3オブジェクト。
plane_normal
平面法線を定義したhou.Vector3オブジェクト。
startDragRotate(ui_event, center_pos, radius, rotate_axis, orient)
軸周りの“リング”をドラッグするようにDraggerを設定します。
ui_event
UIイベント情報が格納されたhou.ViewerEventオブジェクト。
これは、HoudiniがonMouseEvent
Pythonハンドルのハンドラーに渡すオブジェクトです。
center_pos
回転の中心を表現したhou.Vector3オブジェクト。
radius
回転リングの半径。
rotate_axis
回転軸を表現したhou.Vector3オブジェクト。 通常では、ここには、正規化されたベクトルを回転平面法線として使用します。
orient
軸の回転マトリックスを表現したhou.Matrix3オブジェクト。
drag(ui_event)
→ (dictionary)
以前にコールしたstart
系メソッドに基づいてドラッグ操作を実行します。
start
系メソッドを使用してDraggerが初期化されていなければ、hou.OperationFailedが引き起こされます。
マウスがドラッグされている時にこのメソッドがコールされます。
Draggerのどのオペレーションもワールド空間で処理され、ダイアログのオプションが有効になっていれば、(rotation
を除く)スナップを実行することができます。
このメソッドは、次の操作をした結果の値を含んだ辞書を返します: XYZ Drag, Drag Across Floor, Drag Along Line, Drag Along Plane:
値 |
説明 |
---|---|
|
ドラッグの開始位置を基準とするマウスの差分位置を表現したhou.Vector3ベクトル。 |
|
マウスのワールド座標の絶対位置を表現したhou.Vector3ベクトル。 |
Drag Rotateの操作では、以下の辞書が返されます:
値 |
説明 |
---|---|
|
回転の開始位置を基準とする差分角度(単位はラジアン)を表現したhou.Vector3ベクトル。 |
|
回転の開始位置を基準とする合計の角度(単位はラジアン)を表現したhou.Vector3ベクトル。 |
|
回転の開始位置を基準とする回転リングの絶対位置を表現したhou.Vector3ベクトル。 |
|
|
endDrag()
Draggerで実行されたドラッグキャッシュと他の設定を解放することによって、現在のドラッグ操作を終了します。
valid()
→ bool
Draggerの使用準備が整っていればTrue、そうでないならFalseを返します。
Draggerを使用可能にするには、まず最初にDraggerのstart
系メソッドのどれかをコールする必要があります。
name()
→ str
Draggerの名前を返します。
position()
→ hou.Vector3
現在のドラッグ操作のマウスの絶対位置を返します。 この戻り値は、次の操作に関係しています: XYZ Drag, Drag Across Floor, Drag Along Line, Drag Along Plane。
startPosition()
→ hou.Vector3
現在のドラッグ操作の設定に使用されている開始位置を返します。 Drag Rotateの操作では、この戻り値は回転の中心を意味します。
startDirection()
→ hou.Vector3
現在のドラッグ操作の設定に使用されている開始方向を返します。
Drag Rotateの操作では、この戻り値はスクリーン空間におけるhou.ViewerEventのマウス座標に相当する“光線の向き”を示した方向ベクトルを意味します。
startRotatePosition()
→ hou.Vector3
Drag Rotateの操作での回転リングの開始位置を返します。
See also |