| 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値。
setUseWireframeColor(value)
        
Drawableのワイヤーフレームカラーの使用を有効/無効にします。 デフォルトはTrueです。 この変更は、次回のビューアの再描画で反映されます。
value
        
ワイヤーフレームカラーの使用を有効にするならTrue、無効にするならFalse。
useWireframeColor()
  → bool
        
現在ワイヤーフレームカラーが使用されているかどうかを返します。
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)
        
Drawableがコントロールジオメトリであるとフラグを立てます。 これによって、特定のシェーディングモードの影響を受けず、そのDrawableに対してデコレーションやビジュアライザも描画されなくなります。
isControl()
:  → bool
        
Drawableがコントロールジオメトリであるとフラグが立てられているかどうかを照会します。
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 |