Inheritance |
|
メソッド ¶
selectors(selector_indices=())
→ tuple
of hou.Selector
このノードタイプのセレクターをすべて返します。 詳細は、hou.SopNodeType.addSelectorとhou.Selectorを参照してください。
def sopSelectorTypes(): '''すべてのSOPセレクタータイプ名のリストを返します。''' selector_types = [] for node_type in hou.sopNodeTypeCategory().nodeTypes().values(): # Skip manager nodes, like shopnets, ropnets, etc. if not isinstance(node_type, hou.SopNodeType): continue for selector in node_type.selectors(): selector_type = selector.selectorType() if selector_type not in selector_types: selector_types.append(selector_type) selector_types.sort() return selector_types
def sopTypeNamesUsingSelector(selector_type): '''セレクタータイプの名前を指定すると、そのセレクターを使用しているすべてのSOPノードタイプの リストを返します。''' node_types = [] for node_type in hou.sopNodeTypeCategory().nodeTypes().values(): # shopnetやropnetなどの管理ノードをスキップします。 if not isinstance(node_type, hou.SopNodeType): continue for selector in node_type.selectors(): if selector.selectorType() == selector_type: node_types.append(node_type) result = [node_type.name() for node_type in node_types] result.sort() return result
addSelector(name, selector_type, prompt='Select components', primitive_types=(), group_parm_name=None, group_type_parm_name=None, input_index=0, input_required=True, allow_dragging=False, empty_string_selects_all=True)
→ hou.Selector
このSOPノードタイプにセレクターを追加します。ユーザがビューア内でこのSOPの新しいインスタンスを作成すると、 Houdiniは、すべてのセレクターを呼び出し、ユーザがジオメトリを選択するのを待ってから、入力SOPを接続し、 選択したものに一致するようにグループパラメータを埋めます。
name
このセレクターに付ける名前。この名前は、このノードタイプ内で固有でなければなりません。
selector_type
使用するセレクターのタイプ名。セレクターが異なれば、その挙動も異なります。 例えば、“prims”はプリミティブのみを選択し、例えばCookie SOPでそれが使用されます。 “points”はポイントのみを選択し、Point SOPのようなSOPで使用されます。 “everything”は任意のジオメトリを選択し、それが“xform”や“blast”のようなSOPで使用されます。
prompt
ユーザに選択すべきものを指示するために、ビューアの下部に表示する文字列。
primitive_types
許可するプリミティブタイプを指定するためのhou.primType列挙値シーケンス。 セレクターがプリミティブを選択しない場合は、このパラメータは何の効果もありません。 このシーケンスが空っぽの場合、すべてのプリミティブタイプが許可されます。
group_parm_name
グループフィールドを格納するSOPノードパラメータの名前。 セレクターは、このパラメータに、ビューアでユーザが選択したポイント、プリミティブ、エッジなどを意味する文字列を設定します。 Noneの場合、セレクターは“group”という名前のパラメータを探します。
group_type_parm_name
ジオメトリタイプのメニューを格納するSOPノードパラメータの名前。 セレクターが複数のジオメトリタイプ(例えば、ポイントやプリミティブ)を選択することができる場合、 ユーザが選択したジオメトリのタイプに一致するようにこのパラメータを設定します。 例えば、Transform SOPにはGroup Typeパラメータがあります。このパラメータは、Groupパラメータ内の文字列を解釈する方法をセレクターに伝えます。 Noneの場合、セレクターは“grouptype”という名前のパラメータを探します。
input_index
セレクターが入力SOPを接続するSOPノードの入力コネクタのインデックス。 例えば、Cookie SOPには2つの入力コネクタがあります。 そのSOPは2つのセレクターを持ち、各入力コネクタに1個のセレクターがあります。
input_required
この入力が必須なのか任意なのかどうか。 ユーザが何のジオメトリも選択せず、入力を必要としない場合は、セレクターは入力コネクタに何も接続しません。
allow_dragging
ユーザがジオメトリを選択して、1回のマウスドラッグでハンドルの制御を開始することができるかどうか。 例えば、Transform SOPでは、ジオメトリを選択して、それをすぐにドラッグすることで、ジオメトリをトランスフォームすることができます。 ジオメトリをドラッグすれば、強制的にセレクターを即座に終了させ、セレクターがその入力を接続し、グループパラメータを設定し、その後のマウスの動きがハンドルに渡され、パラメータ値を変更することでジオメトリを移動させます。
empty_string_selects_all
ユーザがすべてのジオメトリを選択した場合に、グループパラメータに空っぽの文字列を使用するかどうか。
Falseの場合、ユーザがすべてのジオメトリを選択した時に、Houdiniはグループパラメータにアスタリスク(*
)を配置します。
ほとんどのSOPでは空っぽの文字列を使用しています。
通常では、デジタルアセットのシェルフツールスクリプトからこのメソッドをコールします。 例えば、Python SOPのTools Scriptセクションで以下のコードを配置することで、(groupという名前のパラメータを持った)ポイントをトランスフォームすることができます:
hou.sopNodeTypeCategory().nodeTypes()['$HDA_NAME'].addSelector( "Points to Transform", "points", prompt="Select the points to transform and press Enter to complete", group_parm_name="group")
セレクターがグループフィールドに置いた文字列を解釈する方法に関する情報は、hou.Geometry.globPointsとhou.Geometry.globPrimsも参照してください。
hou.Selectorも参照してください。
Methods from hou.NodeType ¶
name()
→ str
このノードタイプの名前を返します。例えば、ジオメトリオブジェクトタイプに関しては、その名前は“geo”です。 その名前とそのノードタイプカテゴリを一緒に使用することで、ノードタイプを固有に識別します。
nameComponents()
→ tuple
of str
フルノードタイプ名を構成したノードタイプ名コンポーネントのタプルを返します。 そのタプル内のコンポーネントは、次の順番になっています: スコープネットワークタイプ、ノードタイプネームスペース、ノードタイプコア名、バージョン。
# フル名からコンポーネントに分解します >>> node_type = hou.nodeType(hou.dopNodeTypeCategory(), 'pyrosolver::2.0') >>> node_type.nameComponents() ('', '', 'pyrosolver', '2.0')
nameWithCategory()
→ str
名前の頭にノードタイプカテゴリを付けてノードタイプ名を返します。
例えば、ジオメトリオブジェクトに関しては、この関数は、"Object/geo"
を返します。
カテゴリ名とタイプ名を一緒に使用することで、ノードタイプを固有に識別します。
>>> hou.nodeType(hou.objNodeTypeCategory(), "geo").nameWithCategory() 'Object/geo'
namespaceOrder()
→ tuple
of str
ネームスペース優先順位の下降順で並べ替えられたノートタイプ名リストを返します。 このリスト内のノードタイプは、このノードタイプと同じベースタイプを持ちます。 これらのノードタイプのネームスペースやバージョンは異なります。
Houdiniは、hou.Node.createNode()
内で曖昧なタイプ名を解決する時に、このリストを使用します。
つまり、そのリスト内でその関数内で指定した名前に一致した1番目のエントリーを使用します。
# フル名からコンポーネントに分解します >>> node_type = hou.nodeType(hou.dopNodeTypeCategory(), 'pyrosolver') >>> node_type.namespaceOrder() ('pyrosolver::2.0', 'pyrosolver')
description()
→ str
タブメニューに表示されるこのノードタイプの記述を返します。
例えば、ジオメトリオブジェクトに関しては、その記述は"Geometry"
です。
この記述は、Houdiniではオペレータラベルとも呼ばれています。
category()
→ hou.NodeTypeCategory
このノードタイプのノードタイプカテゴリを返します。 例えば、ジオメトリオブジェクトに関しては、その結果は、hou.objNodeTypeCategory()で返されるオブジェクトになります。
parmTemplateGroup()
→ hou.ParmTemplateGroup
このノードタイプのパラメータインターフェースに相当するparmテンプレートのグループを返します。
parmテンプレートグループの詳細は、hou.ParmTemplateGroupを参照してください。 デジタルアセットで定義したノードタイプのパラメータインターフェースを変更するには、 hou.HDADefinition.setParmTemplateGroupを参照してください。
parmTemplates()
→ tuple
of hou.ParmTemplate
このノードタイプのパラメータのparmテンプレートのタプルを返します。 個々のノードインスタンスのSpareパラメータは、ノードタイプとは関係がないので、このタプルに含まれないことに注意してください。
minNumInputs()
→ int
このタイプのノードが持つことができる入力の最小数を返します。この数の入力が接続されていないと、ノードはエラーを生成します。
maxNumInputs()
→ int
このタイプのノードが持つことができる入力の最大数を返します。 このノードタイプの入力数が無制限(例えば、merge SOP)になっていれば、9999を返します。
maxNumOutputs()
→ int
このタイプのノードが持つことができる出力の最大数を返します。 ほとんどのノードタイプの出力の数は1つだけですが、Split DOPのようないくつかのノードタイプでは、複数の出力を持つことができます。
hasEditableInputData()
→ bool
このノードタイプのノードが、ユーザ側でデータとそのノードの各入力を関連付けることが可能であればTrueを返します。 このデータの目的は、あるノードタイプを他のノードタイプに変更することです。 このデータは、hou.Node.editableInputNameやhou.Node.setEditableInputNameなどのメソッドを使ってアクセスすることができます。
hasPermanentUserDefaults()
→ bool
ユーザがこのノードタイプにパーマネントデフォルトを設定しているかどうか返します。
hou.Parm.hasTemporaryDefaultsも参照してください。
hasUnorderedInputs()
→ bool
このノードタイプが、その接続入力内にギャップを持つことができないかどうか返します。 例えば、Cookie SOPには2つの入力があり、2番目の入力のみが接続可能になっているので、このメソッドFalseを返します。 しかし、Merge SOPは入力にギャップを持つことができないので、このメソッドはTrueを返します。
hou.Node.inputs, hou.Node.inputConnections, hou.Node.inputConnectorsも参照してください。
isGenerator()
→ bool
このノードタイプがジェネレータとしてフラグが立っているかどうか返します。 例えば、Grid SOPは新しくジオメトリを生成するのに対し、Subdivide SOPは新しくジオメトリを生成しない代わりに、受け取ったジオメトリを処理します。 hou.NodeType.minNumInputsも参照してください。
isManager(include_management_types=True)
→ bool
このNoteTypeがマネージャーかどうか返します。
マネージャーノードインスタンスは、/obj
, /out
, /part
, /ch
, /shop
, /img
, /vex
です。
include_management_types
をTrueに設定すると、このメソッドは、このノードタイプがSHOPネットワークやVOPネットワークなどのような管理ノードタイプであればTrueを返します。
icon()
→ str
このノードタイプのアイコンの名前またはパスを返します。 Houdiniに元から入っているノードタイプは、フルパスの代わりに名前を使用していて、 Houdiniは、検索パスを使用して、その名前のアイコンの場所を特定します。
isReadable()
→ bool
このノードタイプが読み込み可能ならTrueを返し、そうでないならFalseを返します。 読み込み可能なノードタイプとは、そこからノードインスタンスを作成することができるノードタイプのことです。
isWritable()
→ bool
このノードタイプが書き込み可能ならTrueを返し、そうでないならFalseを返します。 書き込み可能なノードタイプとは、そこに変更を加えることができるノードタイプのことです。
areContentsViewable()
→ bool
ノードタイプ内に含まれているノードネットワークが閲覧可能ならTrueを返し、そうでないならFalseを返します。
containedNodeTypes()
→ tuple
of str
HDAに含まれているすべてのNodeType名のタプルを返します。
childTypeCategory()
→ hou.NodeTypeCategory or None
このNodeTypeの子のNodeTypeCategoryを返します。このNodeTypeに子を持つことができない場合はNone
を返します。
embeddedHelp()
→ str
このノードタイプに埋め込まれたヘルプテキストを返します。 埋め込みヘルプが存在しなければ空っぽの文字列を返します。
埋め込みヘルプは、以下のように2つの異なる場所で検索されます:
-
HDKノードなら、その
OP_Operator::getHDKHelp()
オーバーライドで指定されたテキスト -
HDAノードなら、それに相当するhou.HDADefinition.embeddedHelp()の結果
helpUrl()
→ str
このノードタイプのドキュメントの保存先であるURL、例えば、ファイル名やHDAセクションパスを返します。 ノードタイプのドキュメントの場所が見つからなかった場合は、空っぽの文字列を返します。
defaultHelpUrl()
→ str
ヘルプシステムがノードタイプドキュメントの保存先である実際の場所を調べようとする時の汎用URLを返します。 この汎用URLの書式は“operator:table/optypename”となっており、ネームスペースやバージョンなどの余分な情報を含んでいることがあります。
defaultColor()
→ hou.Color
ノードのhou.nodeFlag.ColorDefaultフラグが設定されている時に、ネットワークビューでそのタイプのノードの表示に使用されるカラーを返します。
setDefaultColor(color)
ノードのhou.nodeFlag.ColorDefaultフラグが設定されている時に、ネットワークビューでそのタイプのノードの表示に使用するカラーを設定します。
そのタイプ固有のデフォルトを削除するには、color
パラメータにNoneを渡します。
defaultShape()
→ str
ノードのシェイプが明示的に割り当てられていない時に、ネットワークビューでそのタイプのノードの表示に使用されるシェイプの名前を返します。
setDefaultShape(shape)
ノードのシェイプが明示的に割り当てられていない時に、ネットワークビューでそのタイプのノードの表示に使用するシェイプの名前を設定します。
そのタイプ固有のデフォルトを削除するには、shape
パラメータにNoneを渡します。