メソッド
ビューポートのフレーム操作
一般的には、 ホーム はビュー方向をデフォルトのビューにリセットするのに対して、 フレーム は現行のビュー方向を維持しつつビューポイントのみを動かします。
home()
ビューポートをデフォルトのビューに移動/タンブルします。
homeAll()
すべてのジオメトリ/オブジェクト(テンプレートジオメトリを含む)が表示されるようにビューを移動/タンブルします。 homeNonTemplated()も参照してください。
homeSelected()
選択したジオメトリ/オブジェクトが表示されるようにビューを移動/タンブルします。
homeGrid()
グリッドに対してビューポートをホームにします。
homeNonTemplated()
すべての 非テンプレート ジオメトリが表示されるようにビューを移動/タンブルします。
frameAll()
すべてのジオメトリ/オブジェクトが表示されるようにビューを移動します。 frameNonTemplates()も参照してください。
frameBoundingBox(bbox)
シーン内の任意の領域が表示されるようにビューを移動します。
bbox
焦点を当てたいボリューム空間を表現したhou.BoundingBox。
frameSelected()
選択したジオメトリ/オブジェクトが表示されるようにビューを移動します。
frameGrid()
グリッドに対してビューをフレームします。
frameNonTemplated()
すべての 非テンプレート ジオメトリが表示されるようにビューを移動します。
ビューポイントとカメラ
-
他の3Dパッケージとは違って、Houdiniのビューは常に実際のCameraオブジェクトとリンクされているわけではありません。ビューをカメラに"ロック"させると、そのビューを変更するとカメラがタンブル/移動し、ビューをカメラにリンクさせなければ"自由"("No Camera")にビューが動きます。ビューをカメラ(またはライト)視点に 一時的に 変更することができますが、ビューはカメラにロックされません(ビューを変更してもカメラに影響しません)。これらの設定に関するユーザーインターフェースは、各ビューポートの右上コーナーにあるカメラメニューとビューツールバーの Lock Cameraボタンです。
このセクションのほとんどのメソッドは、その違いの影響を受けません。 例えば、ビューが"自由"であれば、defaultCamera()メソッドは、そのビューのみを操作するオブジェクトを返しますが、ビューがカメラにロックされていれば、リンクしたカメラを制御するオブジェクトを返します。
-
camera()の結果が
None
でない限りは、現在のビューがカメラ/ライト視点かどうかを調べることができます。これは、ビューがカメラにロックされているかどうかを調べません。 -
以下では、"ビューポート"を省略して表現したカメラについて説明していますが、ビューポートには、ビューポイントの位置と向き、ピボット、アスペクト比、クリップ平面などたくさんの設定が入っています。
viewTransform()
→ hou.Matrix4
ビューのトランスフォームマトリックスを返します。 プログラム的にビューポイントを設定するには、defaultCamera()を使ってhou.ViewportCameraオブジェクトを取得し、そのオブジェクトを制御します。
viewPivot()
→ hou.Vector3
ビューのピボットをワールド空間のポイントとして表現したhou.Vector3を返します。
resolutionInPixels()
→ 2-tuple of int
ビューポートの解像度を(幅,高さ)のピクセルで返します。
camera()
→ hou.ObjNode or None
ビューポートが現在カメラまたはライトの 視点 になっている場合(必ずロックをかける必要はありません)、これは、そのカメラ/ライトのノードを表現したオブジェクトを返します。
ビューポートがカメラ/ライトの視点でない場合は、None
を返します。
saveViewToCamera(camera_node)
現行ビューのビューポイントトランスフォームを、カメラまたはライトのノードのトランスフォームパラメータにコピーします。
camera_node
ビューの保存先であるノードを表現したhou.ObjNodeオブジェクト。
setCamera(camera_node)
カメラまたはライトのトランスフォームパラメータからビューポートトランスフォームを現行ビューにコピーします。 これは、ビューポートのCameraメニューの Look Through サブメニューからカメラ/ライトを選択する事と同じです。
camera_node
ビューの保存元であるノードを表現したhou.ObjNodeオブジェクト。
defaultCamera()
→ hou.GeometryViewportCamera
ビューポートのビューポイントを表現したオブジェクトを返します。 戻り値のオブジェクトは"ライブ"なので、設定を変更すれば即座にそのビューが変更されます。
カメラ/ライトがビューにロックされている場合、GeometryViewportCamera
の設定を変更すると、カメラ/ライトのノードのパラメータも変更されます。
ライブのオブジェクトの代わりに、hou.GeometryViewportCamera.stash()を使用することで、"接続解除された"バージョンのビューポイントを取得することができます。 これは、後で利用できるようにコード内で特定のビューポイントを記憶させるのに便利な方法です。 setDefaultCamera()を使用することで、"貯蔵させた"カメラを復元することができます。
# 現行ビューを記憶します。 cam = viewport.defaultCamera() saved = cam.stash() # 何かしらの方法でビューを変更します。 # 元のビューを復元します。 viewport.setDefaultCamera(saved)
setDefaultCamera(stashed_cam)
hou.GeometryViewportCameraを受け取り、その値をこのビューポートにコピーします。
setDefaultCamera(cam_settings)
ビューポートの現在のカメラ設定をcam_setting
に設定します。
ビューポートがカメラ視点でビューがカメラにロックされていない場合、"No camera"に切り替わります。
ビューがカメラにロックされている場合、カメラオブジェクトは更新されます。
useDefaultCamera()
ビューポートカメラを"No camera"に設定し、カメラオブジェクト視点(またはライト視点)を止めます。
isCameraLockedToView()
→ bool
カメラがビューにロックされているかどうかを照会します。 これは、カメラのみのロック状態を返します。つまり、カメラ視点でなくても有効です。
lockCameraToView()
ビューポートカメラをロックします。 Trueに設定すると、ビューへの変更が視点のカメラオブジェクトに影響します。 Falseに設定すると、カメラがビューポートから外れて、ユーザーがビューをタンブルした時にデフォルトのビューポートカメラに戻ります。 ビューポートをカメラ視点にしなくてもこれを有効にすることができますが、ビューを変更しても、ユーザーがビューポートをカメラまたはライトの視点に設定しない限りはオブジェクトに何も影響しません。
draw()
ビューポートの再描画を要求します。同じスクリプト内の複数のdraw()
コールは、単一コールにまとめられます。
設定
isOpen()
name()
→ str
ビューポートの名前(persp1
, top1
など)を照会します。
changeName(str)
ビューポートの名前を設定します。
settings()
→ hou.GeometryViewportSettings
ビューポートの名前を設定します。名前を設定しても、ビューポートタイプに影響しないので、Perspectiveビューをfront
という名前にすると紛らわしくなります。この場合は、changeType()
と併用すると良いです。
type()
→ hou.geometryViewportType enum value
ビューポートタイプ(UV, 3D, top, leftなど)を照会します。
changeType([Hom:hou.geometryViewportType])
ビューポートタイプ(hou.geometryViewportType)を設定します。 このメソッドは、まず最初に新しいビューポートタイプにスタッシュ(保存)されているビューの復元を試みますが、 その復元に失敗したら、ビューポートをホームにします。
usesConstructionPlane()
→ bool
このビューポートがコンストラクション平面を使用しているかどうかを返します。
選択
queryNodeAtPixel(x, y)
→ hou.ObjNode, hou.SopNode, or None
ビューポート内の指定したピクセルで描画されているノードを返します。そこに何もなければNone
を返します。
返されるノードのタイプは、ビューアのレベルに依存します。
queryPrimAtPixel(node, x, y)
→ hou.Prim or None
ビューポート内で指定したピクセルで描画されているプリミティブを返します。そこに何もなければNone
を返します。
返されるプリミティブは、hou.Primのサブクラスです。
nodeパラメータを使用することで、特定のノード内のジオメトリを照会するように制限することができます。 ノードがNoneであれば、その照会の制限はありません。
queryInspectedGeometry()
→ hou.Geometry or None
ビューポートで現在検査されているジオメトリを返します。何も検査されていない時や検査スクリプトの範囲外でコールされている場合はNone
を返します。
queryInspectedPrim()
→ hou.Prim or None
ビューポートで現在検査されているプリミティブを返します。何も検査されていない時や検査スクリプトの範囲外でコールされている場合はNone
を返します。
返されるプリミティブは、hou.Primのサブクラスです。
mapToScreen(position)
→ hou.Vector2
ワールド座標をビューポート座標に変換します。
position
ワールド空間の位置を含んだhou.Vector3。
mapToWorld(x, y)
→ tuple of (hou.Vector3, hou.Vector3)
ビューポート座標をワールド座標に変換します。 光線(方向ベクトルと原点ポイント)を返します。
mapFromMouseChop(x, y)
→ tuple of (int, int)
Mouse CHOPのXとYのスクリーン値(-1
から1
の範囲)をビューポート座標に変換します。
(0,0)
がビューポートの左下コーナーです。
コールバック
addEventCallback(callback)
ビューポートイベントが発生する度にコールされるPythonコールバックを登録します。 このイベントタイプは、hou.geometryViewportEventで定義されています。
'callback':
コール可能なPythonオブジェクトで必要なキーワード引数は、イベントタイプによって異なります。 このコールバックは、ジオメトリビューポートのイベントタイプで使用することができます。
hou.geometryViewportEvent.CameraSwitchedの引数:
-
event_type: このビューポートイベント。
-
desktop: シーンビューアを保持したデスクトップオブジェクト。
-
viewer: ビューポートを保持したシーンビューアオブジェクト。
-
viewport: イベントをトリガーしたビューポートオブジェクト。
import hou def myViewportCB(**kwargs): event_type=kwargs['event_type'] desktop=kwargs['desktop'] viewer=kwargs['viewer'] viewport=kwargs['viewport'] print "\nmyViewportCB=",myViewportCB print "event type=",event_type print "desktop=",desktop print "viewer=",viewer print "viewport=",viewport cam = viewport.camera() print "camera=%s\n\n"%(cam.name()) curSceneViewer = [item for item in hou.ui.curDesktop().currentPaneTabs() if item.type() == hou.paneTabType.SceneViewer][0] curSceneViewer.curViewport().addEventCallback(myViewportCB)
clearEventCallbacks()
hou.GeometryViewport.addEventCallback()を使って登録したPythonコールバックすべてを削除します。
removeEventCallback(self,callback)
hou.GeometryViewport.addEventCallback()を使って登録した特定のPythonコールバックを削除します。
eventCallbacks()
→ tuple
of callbacks
hou.GeometryViewport.addEventCallback()を使って登録したPythonコールバックすべてのタプルを返します。
Replaces |