On this page | |
Inheritance |
|
概要 ¶
Drawableオブジェクト内のビューアにジオメトリを取り付けることで、そのジオメトリが実際にシーンの一部でなくても、そのビューア内にそのジオメトリを表示させることができます。 これは、カスタムPythonステートで ガイドジオメトリ を表示するのに役立ちます。
hou.SimpleDrawable
の基本的なサポートは、単純なガイドジオメトリに適しています。
ガイドジオメトリを作成して描画するための高度なAPIに関しては、hou.GeometryDrawableとhou.GeometryDrawableGroupを参照してください。
import hou # 空っぽのジオメトリオブジェクトを作成します。 geo = hou.Geometry() # BoxノードからVerb(動詞)を取得します。 box_verb = hou.sopNodeTypeCategory().nodeVerb("box") # このVerb(動詞)のパラメータを設定します。 box_verb.setParms({ "t": hou.Vector3(0.5, 0.5, -0.5), "scale": 0.5, }) # このVerb(動詞)を実行して、その出力をジオメトリオブジェクトに格納します。 box_verb.execute(geo, []) # ビューアの参照を取得します。 scene_viewer = hou.ui.paneTabOfType(hou.paneTabType.SceneViewer) # Drawableオブジェクトを作成します。 drawable = hou.SimpleDrawable(scene_viewer, geo, "my_guide") # Drawableの表示モードをワイヤーフレームに設定します(これがデフォルトです)。 drawable.setDisplayMode(hou.drawableDisplayMode.WireframeMode) # Drawableジオメトリを有効にして表示します。 drawable.enable(True) drawable.show(True) # ビューをタンブルさせてジオメトリを確認します。
import hou # Sphereノードからジオメトリを作成します。 sphere_verb = hou.sopNodeTypeCategory().nodeVerb("sphere") geo = hou.Geometry() sphere_verb.execute(geo, []) # 作成した球にカラーとアルファのアトリビュートを追加します。 color_attrib = geo.addAttrib(hou.attribType.Prim, "Cd", (1.0, 1.0, 1.0)) alpha_attrib = geo.addAttrib(hou.attribType.Prim, "Alpha", 1.0) color = hou.Color(1.0, 0.0, 0.0) for prim in geo.prims(): prim.setAttribValue(color_attrib, color.rgb()) prim.setAttribValue(alpha_attrib, 0.7) # Drawableオブジェクトを作成します。 scene_viewer = hou.ui.paneTabOfType(hou.paneTabType.SceneViewer) drawable = hou.SimpleDrawable(scene_viewer, geo, "my_sphere") # Drawableの表示モードを現在のビューポートシェーディングモードに設定します。 drawable.setDisplayMode(hou.drawableDisplayMode.CurrentViewportMode) # 球のサイズを設定します。 drawable.setTransform(hou.hmath.buildScale(0.5, 0.5, 0.5)) drawable.enable(True) drawable.show(True)
Tipsとメモ ¶
-
SimpleDrawableオブジェクトは、渡されたGeometryオブジェクトの参照を維持します。 Geometryオブジェクトの内容を変更したら、その新しい内容は、次回のビューアの再描画で反映されます。
-
SimpleDrawableオブジェクトを作成すると、それが無効化されて非表示になります。そのジオメトリを表示させるには、
enable(True)
をコールしてからshow(True)
をコールする必要があります。 -
SimpleDrawableオブジェクトを有効化して表示させた後であっても、そのジオメトリは、次回のビューアの再描画(例えば、ユーザーがビューを変更した時)で表示されます。
hou.GeometryViewport.drawを使用することで、個々のビューポートを強制的に再描画させることができます。
scene_viewer.curViewport().draw()
-
Verbを使用することでゼロからGeometryオブジェクトの内容を生成することができます。 または、hou.SopNode.geometryを使用することでSOPノードの出力のコピーを取得することができます。
-
他にもhou.drawablePrimitiveを使用して
ビルトイン
形状を指定することでSimpleDrawableオブジェクトの内容を生成することもできます。 -
Drawableの
enable
/disable
は、その頻度が多ければ、特に重いジオメトリでパフォーマンスが悪くなります。 Drawableの表示/非表示にenable
を使用するよりもshow
を使用した方が良いです。 -
Drawableをビューア内で積極的に使用しない時は
disable
を使用した方が良いです。 -
UVビュー で描画する
hou.SimpleDrawable
ジオメトリに uv Point/Vertexアトリビュートを追加する:sops = hou.sopNodeTypeCategory() verb = sops.nodeVerb("sphere") verb.setParms(parms) geo = hou.Geometry() verb.execute(geo, []) # Drawableに`uv` Vertexアトリビュートを追加します。 geo.addAttrib(hou.attribType.Vertex, "uv", (0,0)) # カラーアトリビュートとアルファアトリビュートを追加します。 color_attrib = geo.addAttrib(hou.attribType.Prim, "Cd", (1.0, 1.0, 1.0)) for prim in geo.prims(): prim.setAttribValue(color_attrib, StrokeCursor.COLOR.rgb()) # ワイヤーフレームブラシを作成します。 brush = hou.SimpleDrawable(self.scene_viewer, geo, '%s_%s' % (self.state_name, "sphere")) brush.setDisplayMode(hou.drawableDisplayMode.WireframeMode)
メソッド ¶
__init__(scene_viewer, geometry, name)
ビューポート内でジオメトリを描画するためのDrawableオブジェクトを作成します。 デフォルトでは、新しいDrawableは無効化されていて非表示になっています。
scene_viewer
ガイドジオメトリを表示させるビューアのhou.SceneViewer参照。
geometry
描画するジオメトリを含んだhou.Geometryオブジェクト、または、描画する形状を指定したhou.drawablePrimitive値。
name
このDrawableオブジェクトを識別するための文字列。 これは、現行セッション内のすべてのDrawableに対して固有の名前にしてください。
カスタムステートでは、ステート名をベースにSimpleDrawableの名前を付けることで、Drawableを固有の名前にすることができます。例:
class MyState(object): def __init__(self, state_name, scene_viewer): self.state_name = state_name self.scene_viewer = scene_viewer geo = hou.Geometry() verb = hou.sopNodeTypeCategory().nodeVerb("box") verb.execute(geo, []) self._box = hou.SimpleDrawable( self.scene_viewer, geo, # ステート名をDrawableの名前のベースとして使用します。 self.state_name + "_box" )
enable(self,value)
ジオメトリの描画を有効または無効にします。
通常では、show
メソッドを有効にするためには、まず最初にこのメソッドをコールします。
value
描画を有効にするにはTrue
、無効にするにはFalse
を設定します。
enabled(self,value)
→ bool
Drawableが有効になっていればTrueを返します。
setXray(value)
DrawableにX線レンダリングフラグを設定します。
value
X線レンダリングを有効にするならTrue
、無効にするならFalse
。
isXray()
: → bool
DrawableがX線レダンリングでレンダリングするならTrueを返します。
setShowMaterials(value)
Drawableのマテリアルを有効または無効にします。 Drawableジオメトリには必ず有効なshop_materialpathアトリビュートがなければなりません。
value
マテリアルを有効にするならTrue
、無効にするならFalse
。
isShowMaterials()
: → bool
Drawableをマテリアル付きで描画されているならTrueを返します。
setCastShadows(value)
Drawableのシャドウ投影を有効または無効にします。
value
シャドウ投影を有効にするならTrue
、無効にするならFalse
。
isCastShadows()
: → bool
Drawableがシャドウ投影するように設定されているならTrueを返します。
setWireframeColor(color)
Drawableの表示モードがhou.drawableDisplayMode.WireframeModeに設定されている時、ジオメトリのカラーを更新します。 この変更は、次回のビューアの再描画で反映されます。
color
プリミティブカラーを指定したhou.Color値。
setGeometry(geometry)
新しいジオメトリでDrawableを設定します。 この変更は、次回のビューアの再描画で反映されます。
geometry
hou.Geometryオブジェクト。
geometry()
: → hou.Geometry
Drawableのジオメトリオブジェクトを返します。
返されるジオメトリは読み込み専用
です。
setVisibleInViewport(viewport)
Drawableがviewport
でのみ表示されるように制限します。
これをビューポート毎に1回コールすることで、Drawableを複数のビューポートに表示させることができます。
setVisibleInAllViewports()
ビューポート毎の可視性制限すべてを削除するので、Drawableがすべてのビューポートに表示されます。
isVisibleInViewport(viewport)
→ bool
このDrawableがviewport
で表示されるかどうか照会します。
setDrawOutline(value)
Drawableのアウトライン描画フラグを有効または無効にします。
value
アウトライン描画を有効にするならTrue
、無効にするならFalse
。
isDrawOutline()
: → bool
Drawableのアウトライン描画が有効になっていればTrueを返します。
setOutlineColor(color)
Drawableのアウトラインのカラーを更新します。 アウトラインは、Drawableのアウトライン描画フラグが有効な場合にのみ表示されます。
color
アウトラインのカラーをRGB(アルファは1に設定)で設定する場合はhou.Color値を、 RGBAで設定する場合はhou.Vector4値を指定します。
setSeparateOutline(value)
Drawableの個別アウトライン描画フラグを有効または無効にします。 デフォルトでは、複数のアウトラインオブジェクトが重なると、それらを結合したシルエットのみがアウトライン描画されます。 このフラグを使用すると、各オブジェクトを個別にアウトライン描画することができます。
Note
個別アウトライン描画は処理が重く、パフォーマンスに影響が出てしまいます。
value
個別アウトライン描画を有効にするならTrue
、無効にするならFalse
。
isSeparateOutline()
: → bool
Drawableの個別アウトライン描画が有効になっていればTrueを返します。
setOutlineOnly(value)
Drawableのアウトラインのみの描画フラグを有効または無効にします。 このフラグを有効にすると、Drawableのアウトラインのみが描画され、Drawable自体は描画されません。
value
アウトラインのみの描画を有効にするならTrue
、無効にするならFalse
。
isOutlineOnly()
: → bool
Drawableのアウトラインのみの描画が有効になっていればTrueを返します。
Methods from hou.Drawable ¶
name()
このDrawableの名前。
label()
このDrawableのラベル。
setLabel(label)
このDrawableのラベルを設定します。
show(value)
このDrawableに取り付けられたエレメントをビューポート内に表示または非表示にします。 このエレメントは、次回のビューアの再描画で表示されます。
value
エレメントを表示するにはTrue
、非表示にするにはFalse
を設定します。
visible()
→ bool
Drawableが可視ならTrueを返します。
setTransform(xform)
このDrawableに取り付けられたエレメントのトランスフォーム行列を設定します。 この変更は、次回のビューアの再描画で反映されます。
xform
エレメントの移動、回転、スケールを設定するhou.Matrix4トランスフォーム行列。
transform()
: → hou.Matrix4
Drawableに取り付けられたエレメントのトランスフォーム行列を返します。
See also |