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)
Turns on or off the outline drawing flag for the drawable.
value
True
to turn on or False
to turn off outline drawing.
isDrawOutline()
: → bool
Returns True if the drawable is set to have outlines.
setOutlineColor(color)
Updates the color of the outline of the drawable. Outlines are only displayed if the flag on the drawable has been turned on.
color
A hou.Color value to specify the outline color in RGB (Alpha is set to 1), or a hou.Vector4 value to specify the outline color in RGBA.
outlineColor()
→ hou.Vector4
Returns the outline color of the drawable in RGBA format.
setSeparateOutline(value)
Turns on or off the separate outline drawing flag for the drawable. By default, when multiple outlined objects overlap, only the silhouette of their combination is outlined. Use this flag to outline each object separately. Note: Separate outlines are expensive and can impact performance.
value
True
to turn on or False
to turn off separate outline drawing.
isSeparateOutline()
: → bool
Returns True if the drawable is set to have separate outlines.
setOutlineOnly(value)
Turns on or off the outline only flag on the drawable. When outline only is turned on, only the outline of the drawable is drawn, and the drawable itself is not drawn.
value
True
to turn on or False
to turn off outline only drawing.
isOutlineOnly()
: → bool
Returns True if the drawable is set to only have its outline drawn.
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 |