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値。
wireframeColor()
→ hou.Color
Returns the current wireframe color.
setUseWireframeColor(value)
Turns on or off usage of the drawable’s wireframe color. The default is True. The change will appear the next time the viewer redraws.
value
True
to turn on or False
to turn off wireframe color usage.
useWireframeColor()
→ bool
Returns whether the current wireframe color is being used.
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を返します。
setIsControl(value)
Flags the drawable as control geometry, so that it is not affected by certain shading modes nor has decorations or visualizers drawn for it.
isControl()
: → bool
Query if a drawable has been flaged as control geometry.
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 |