| On this page |
概要 ¶
HOMオブジェクトの様々なasData()メソッドは、レシピで使用されている形式と同じJSONライクなデータを生成または受け取ります。
これらのデータ構造には、JSONに対応した型(浮動小数点数、整数、ブール、None/null、辞書/オブジェクト、リスト/配列)のみが含まれます。
このページでは、Pythonの型名(例えば、JSONのarrayの代わりにlist)を使用しています。
詳細は、レシピの保存方法と使用方法を参照してください。
Tip
Pythonシェルでレシピデータを綺麗に表示したいのであれば、json.dumps()関数にindent引数を使用したり、または、pprint関数を使用すると良いでしょう。
>>> from json import dumps >>> print(dumps(data, indent=4)) ... >>> from recipeutils import pprint >>> pprint(data)
json.dumps()は、辞書の値を別々の行に配置するため、縦方向のスペースをより有効に活用することができます。
pprintは、値を同一行にまとめ、前の行のインデントに合わせるため、横方向のスペースをより有効に活用することができます。
パラメータ値 ¶
ここには、パラメータの値を格納します。 パラメータは一つ以上のコンポーネントを持ち、各コンポーネントにはリテラル値(浮動小数点数、整数、文字列)、エクスプレッション、キーフレームデータを設定することができます。 単一コンポーネントのパラメータは、これら3つのタイプのどれかを返しますが、複数コンポーネントのパラメータは、これら3つのタイプをどれも含めることができるリストを返します。
[ 1.0, { "expression": "sin($T)" }, { "keyframes": [ { "frame": 1, "value": 0.0, "slope": 0.0, "accel": 0.0, "inaccel": 0.33, "expression": "bezier()" }, { "frame": 48, "value": 1.0, "slope": 0.0, "accel": 0.0, "inaccel": 0.65, "expression": "bezier()" } ] } ]
関連項目:
エクスプレッション ¶
これは、エクスプレッションを含んだパラメータコンポーネントを表現します。 以下のキーを持つことができます:
expression: str
エクスプレッションの文字列表現。
language: str
そのエクスプレッションの言語。
エクスプレッションデータの例:
{ "expression": "$F", "language": "Hscript" },
キーフレーム ¶
これは、キーフレームを含んだパラメータコンポーネントを表現します。
keyframes: list[Keyframe Data]
Keyframe Dataのリスト。
frame: float
キーフレームのフレーム番号。
time: float
キーフレームの時間(秒)。
epxression: str
キーフレームのエクスプレッション。
value: float
キーフレームを出る値。
invalue: float
キーフレームに入る値。
slope: float
キーフレームを出る勾配。
inslope: float
キーフレームに入る勾配。
accel: float
キーフレームを出る加速度。
inaccel: float
キーフレームに入る加速度。
accelasratio: bool
加速度を比率で解釈すべきかどうか。
extrapolation_before: str
最初のキーフレーム前の外挿を返します。 これは、キーフレーム範囲外でのパラメータ値の評価方法を定義します。
extrapolation_after: str
最後のキーフレーム後の外挿を返します。 これは、キーフレーム範囲外でのパラメータ値の評価方法を定義します。
2つのキーフレームデータを持つ浮動小数点パラメータのキーフレームデータの例:
{ "keyframes": [ { "frame": 1, "value": 1.0, "slope": 0.0, "accel": 0.0, "inaccel": 0.33, "expression": "bezier()" }, { "frame": 24, "value": 2.0, "slope": 0.0, "accel": 0.0, "inaccel": 0.33, "expression": "bezier()" } ] }
パラメータ ¶
パラメータは、その値と関連付けられることが多いですが、その値だけがパラメータが保持できるプロパティではありません。 パラメータは、以下のキーを持つことができます:
value: Parm Value Data
パラメータの各コンポーネントの値。
lock: bool | list[bool]
パラメータの各コンポーネントのロック状態。
visible: bool
パラメータをパラメータペインに表示するかどうか。
points: list[Ramp Point Data]
ランプ型パラメータは、このキーの下にランプポイントデータのリストを格納します。 このリストの長さがランプ上のポイント数を制御します。
Ramp Point Dataには以下の項目が含まれます:
pos: float
ランプ上のポイント位置。
value: float | Sequence[float]
Float Rampの場合は単一のfloat、Color Rampの場合は3つのfloatのタプル。
interp: str
ランプポイントの補間関数。
Black To Orange に設定されたColor Rampを格納したpointsキーの例:
[ { "pos": 0.0, "value": [ 0.0, 0.0, 0.0 ], "interp": "linear" }, { "pos": 1.0, "value": [ 1.0, 0.324, 0.1 ], "interp": "linear" } ]
関連項目:
dictionary: dict[str, str]
Key-Value Dictionary型のパラメータは、このキーの下に辞書を格納します。
geometry: str
Geometry Data型のパラメータは、このキーの下にジオメトリを格納します。
multiparms: list[Parameters]
2セットのマルチパラメータインスタンスを格納したmultiparmsキーの例。
[ { "export_enable#": True, "export_fieldname#": "density", "export_visible#": "smoke" }, { "export_enable#": True, "export_fieldname#": "temperature", "export_visible#": "invisible" }, ]
関連項目:
multiparmlinks: dict[str, str]
マルチパラメータ参照リンクのデータを格納します。
metadata: Parm Meta Data
パラメータに関する追加情報を格納します。
type: str
パラメータのタイプ(例えば、floatやramp_rgb)。
label: str
パラメータのラベル。
spare: bool
パラメータがSpare(ユーザ定義)パラメータであるかどうかを格納します。
path: str
このパラメータのフルパス。
metadataキーの例:
{ "type": "toggle", "label": "Enable Blending", "spare": False, "path": "/obj/geo1/attribblur1/enableblending" }
関連項目:
パラメータ ¶
これは、パラメータ名をパラメータデータにマッピングします。
以下は、パラメータセットの例です:
{ "group": { "value": "group1" }, "attributes": { "value": "P" }, "method": { "value": "uniform" }, "iterations": { "value": 1 }, "mode": { "value": "laplacian" }, "frequency": { "value": 0.1 }, "stepsize": { "value": 0.5 } "blurramp": { "points": [ { "pos": 0.0, "value": 0.0, "interp": "monotonecubic" }, { "pos": 0.5, "value": 1.0, "interp": "monotonecubic" }, { "pos": 1.0, "value": 0.0, "interp": "monotonecubic" } ] } }
どの.asData()関数にも、brief(またはparms_as_brief)オプションが用意されており、デフォルト値や一部の単一キー辞書を省略することで、よりコンパクトな出力を実現します。
例えば、パラメータデータにvalue、points、multiparmsのいずれかの単一キーしかない場合にbrief=Trueを渡すと、辞書は値のみに置換されます。例:
{ "group": "group1", "attributes": "P", "method": "uniform", "iterations": 1, "mode": "laplacian", "frequency": 0.1, "stepsize": 0.5, "blurramp": [ { "pos": 0.0, "value": 0.0, "interp": "monotonecubic" }, { "pos": 0.5, "value": 1.0, "interp": "monotonecubic" }, { "pos": 1.0, "value": 0.0, "interp": "monotonecubic" } ] }
パラメータデータに他のキーが含まれている場合(例えば、lockキーとvalueキーが共存する場合)、そのパラメータデータは完全な辞書となります。例:
{ "group": "group1", "attributes": "P", "method": "uniform", "iterations": { "value": 1, "locked": True }, "mode": "laplacian", "frequency": 0.1, "stepsize": 0.5, "blurramp": [ { "pos": 0.0, "value": 0.0, "interp": "monotonecubic" }, { "pos": 0.5, "value": 1.0, "interp": "monotonecubic" }, { "pos": 1.0, "value": 0.0, "interp": "monotonecubic" } ] }
関連項目:
パラメータテンプレート ¶
これは、パラメータペイン内のパラメータを記述するためのテンプレート用データです。
type: str
hou.parmTemplateInterfaceType に基づくパラメータのタイプです。
label: str
パラメータペインに表示されるラベル。
num_components: int
このパラメータのコンポーネント数。
help: str
パラメータペインでパラメータラベルにマウスカーソルを置いた時にHoudiniが表示するヘルプ。
joins_with_next: bool
このパラメータをパラメータペインで次のパラメータと同じ行に表示するかどうか。
disable_when: str
このパラメータをパラメータペインで無効にする条件。
hide_when: str
このパラメータをパラメータペインで非表示にする条件。
no_cook_when: str
クックされない条件。
tab_disable_when: str
タブフォルダをパラメータペインで無効にする条件。
tab_hide_when: str
タブフォルダをパラメータペインで非表示にする条件。
script_callback: str
このパラメータが変更された時にHoudiniが実行するスクリプト。
script_callback_language: str
このパラメータが変更された時にHoudiniが実行するスクリプトの言語。
default_value: Parm Value Data
新しいパラメータインスタンスのデフォルト値。
default_points: list[Ramp Point Data]
新しいパラメータインスタンスのデフォルトのランプポイント。
min_value: float
パラメータの最小値。
max_value: float
パラメータの最大値。
strict_min: bool
最大値を厳格に適用するかどうか。
strict_max: bool
最小値を厳格に適用するかどうか。
icon_names: str
メニュー項目に呼応するアイコン。
item_generator_script: str
メニュー項目を生成するために使用されるスクリプト。 スクリプトが存在しない場合は空っぽの文字列。
item_generator_script_language: str
メニュー項目を生成するために使用されるスクリプト言語。
column_labels: list[str]
ラベルパラメータテンプレートの各カラムのラベル。
show_controls: bool
このランプパラメータのコントロールをデフォルトで展開するかどうか。
color_type: str
カラーランプキーを補間するカラースペース。
folder_names: str
このセット内のフォルダの名前。
tab_group_end: bool
このフォルダがフォルダセットの最後かどうか。
tab_conditionals: str
このパラメータテンプレートによって生成されるフォルダタブに影響を与える条件。
parmtemplates: Parm Template Data Dict
これがフォルダまたは複数パラメータのパラメータテンプレートである場合のネストされたパラメータテンプレートの辞書。
以下は、パラメータテンプレートのデータの例です:
{ "type": "integer", "label": "Start Frame", "tags": { "script_callback_language": "python" }, "menu_type": "normal", "default_value": 1, "min_value": 1, "max_value": 240, "strict_min": True }
パラメータテンプレート ¶
これは、テンプレート名をパラメータテンプレートデータ にマッピングします。
トグルおよび浮動小数点のパラメータテンプレートの例:
{ "enablestartframe": { "type": "toggle", "label": "Enable Start Frame", "label_hidden": True, "joins_with_next": True, "tags": { "script_callback_language": "python" } }, "startframe": { "type": "integer", "label": "Start Frame", "disable_when": "{ enablestartframe != 1 }", "tags": { "script_callback_language": "python" }, "menu_type": "normal", "default_value": 1, "min_value": 1, "max_value": 240, "strict_min": True } }
パラメータテンプレートブロック ¶
この辞書は、そこに含まれているテンプレートを既存のどのテンプレートの後に挿入するかを示します。
ノードにSpareパラメータが追加されている場合、このデータはSpareパラメータテンプレートの連続したブロックのみを格納するのに役立ちます。
insert_after: str
パラメータテンプレートブロックの前に配置されるパラメータテンプレートの名前。
insert_first: str
パラメータテンプレートブロックがフォルダ内で1番目となる場合のフォルダパラメータテンプレートの名前。
parmtemplates: パラメータテンプレート
このパラメータテンプレートブロックに含まれる連続したパラメータテンプレートの辞書。
ネットワークアイテム ¶
この辞書は、ノード、スティッキーノート、ネットワークボックス、ネットワークドット、サブネットワーク間接入力などのネットワークアイテムに関するデータを格納します。
以下のキーを持つことができます:
Note
inputsキーとoutputsキーの両方を持つことは可能ですが、レシピデータを生成する場合はどちらか1つのみを使用してください。
これは、ワイヤーを一貫して上流アイテムの出力として、または、下流アイテムの入力として指定することを意味します。
Houdiniは、レシピを作成する時にinputsキーを下流アイテムにのみ作成します。
type: str
ネットワークアイテムのタイプ。
ノードの場合、ここには、そのノードタイプ名(例えば、SOP Boxノードの場合はbox)を指定します。
スティッキーノート、ネットワークボックス、ネットワークドットの場合、ここには、それぞれStickyNote、NetworkBox、NetworkDotを指定しなければなりません。
inputs: list[Input Data]
これは、このノードの入力と他の上流ノードの出力を接続するコネクションを示したNetwork Item Input Dataのリストを格納します。
各Input Dataは以下のキーを持ちます:
from: str
このノードの(to_indexで指定された)入力が接続されるノードの名前。
from_index: int | str
このノードの(to_indexで指定された)入力インデックスに接続するノードの(fromで指定された)出力インデックス。
このインデックスには、Vopコンテキストで使用されている名前付き出力も指定することができます。
to_index: int | str
このノードの入力インデックスは、fromで指定されたノードの(from_indexで指定された)出力インデックスに接続します。
このインデックスには、Vopコンテキストで使用されている名前付き入力も指定することができます。
以下は、inputsキーの例です:
{ "from": "box1", "from_index": 0, "to_index": 0 }
関連項目:
outputs: list[Network Item Output Data]
これは、このノードの出力を他の下流ノードの入力に接続するコネクションを示したNetwork Item Output Dataのリストを格納します。
Network Item Output Dataは常に以下のキーを持ちます:
from_index: int | str
このノードの出力インデックスは、toで指定されたノードの(to_indexで指定された)入力インデックスに接続します。
このインデックスには、Vopコンテキストで使用されている名前付き出力も指定することができます。
to_index: int | str
このノードの(from_indexで指定された)出力インデックスに接続する(toで指定された)ノードの入力インデックス。
このインデックスには、Vopコンテキストで使用されている名前付き入力も指定することができます。
to: str
このノードの(from_indexで指定された)出力が接続するノードの名前。
下流でbox1という名前のノードに接続するNetwork Item Output Dataの例:
{ "from_index": 0, "to_index": 0, "to": "box1" }
関連項目:
color: list[float]
ネットワークエディタ内のアイテムのタイルのカラー。
size: list[float]
ネットワークエディタ内のアイテムのタイルのサイズ。
position: list[float]
ネットワークエディタ内のアイテムのタイルの位置。
user_data: dict[str, Any]
このノード用のユーザ定義辞書データ。
parmtemplates: Union[パラメータテンプレート, パラメータテンプレートブロックデータ, list[パラメータテンプレートブロックデータ]
これは、このノードのパラメータテンプレートデータを格納します。
flags: dict[str, bool]
これは、このノードのフラグを格納します。
children: ネットワークアイテム
これは、このノードの子アイテム(存在する場合)のネストされた辞書を格納します。
Note
データをキャプチャする時、開かれているデジタルアセットは、そのコンテンツをchildrenキーの下にキャプチャし、閉じられたデジタルアセットは、子アイテムを持たないとみなされます。
childrenキーを含んだネットワークアイテムデータを閉じたデジタルアセットに設定した場合、そのデジタルアセットが開かれ、その内容がchildrenキーのデータで置換されます。
関連項目:
editables: ネットワークアイテム
これは、このノードのEditable Dive Targetアイテム(存在する場合)のネストされた辞書を格納します。
関連項目:
pinned: bool
ネットワークドットアイテムのピン止め状態。
box_content: list[str]
これは、ネットワークボックス内に含まれているネットワークアイテムの名前のリストを格納します。
text: str
スティッキーノートに表示されるテキスト。
text_color: list[float]
スティッキーノートに表示されるテキストのカラー。
text_size: float
スティッキーノートに表示されるテキストのサイズ。
draw_background: bool
スティッキーノートの色付き背景の描画。
minimized: bool
スティッキーノートの最小化状態。
metadata: Network Item Metadata
これは、ネットワークアイテムに関する追加情報を格納します。
Network Item Metadataには以下の項目を含めることができます:
category: str
このアイテムのカテゴリタイプ(例えば、SopやDop)。
path: str
このアイテムのフルパス。
parent: bool
このアイテムの親のフルパス。
以下は、ネットワークアイテムのmetadataキーの例です:
{ "category": "Sop", "path": "/obj/geo1/box1", "parent": "/obj/geo1" }
以下は、ネットワークアイテムのデータの例です:
{ "type": "box", "parms": { "divrate": [2, 2, 2], } "inputs": { "from": "bound1", "from_index": 0, "to_index": 0 }, "position": [0, 2.63], "color": [0.58, 0.21, 0.47], "flags": { "colordefault": False }, }
関連項目:
ネットワークアイテム ¶
複数のネットワークアイテムのデータは、(ネットワークアイテムデータを格納する)この辞書の下に収集されます。 そのアイテムの名前がキーとなっています。
各ネットワークアイテムデータの位置は、デフォルトではグローバルネットワーク空間の位置でキャプチャされます。
データをキャプチャする時、anchor_position(hou.Vector2)オプションを指定することで、すべての位置をそのアンカーの位置を基準に計算することができます。
{ "box1": { "type": "box", "position": [-0.5, 2.85], "parms": { "type": "polymesh", "divrate": [2, 2, 2] } }, "__dot1": { "type": "NetworkDot", "inputs": [ { "from": "box1", "from_index": 0, "to_index": 0 } ], "position": [0, 2], "color": [0.7, 0.7, 0.7] }, "OUT": { "type": "null", "inputs": [ { "from": "__dot1", "from_index": 0, "to_index": 0 } ], "position": [-0.5, 0.85], "flags": { "display": True, "render": True } } }
関連項目:
クラスタ ¶
このデータタイプは、ネットワークアイテムデータの辞書をさらに高レベルに抽象化したものであり、ネットワークアイテムセットに加えてさらに追加情報を格納します。
これには、以下の項目を含めることができます:
children: ネットワークアイテム
ここには、このクラスタが保持するすべてのネットワークアイテムのデータを格納します。
以下の例は、選択された3つのノードに対してキャプチャされたクラスターデータを示しています:
{ "tags": { "target_tag": "transform1", "frame_tags": ["OUT", ], "selected_tags": ["box1", "OUT"] "current_tag": ["OUT"] } "children": { "transform1": { "type": "xform", "inputs": [ { "from": "box1", "from_index": 0, "to_index": 0 } ], "position": [0, 0], }, "box1": { "type": "box", "position": [0, 1], "parms": { "type": "polymesh", "divrate": [2, 2, 2] } }, "OUT": { "type": "null", "inputs": [ { "from": "transform1", "from_index": 0, "to_index": 0 } ], "position": [0, -1], "flags": { "display": True, "render": True } } }, }
transform2ノードがキャプチャデータを適用する(同じネットワーク内の)ターゲットノードである場合、以下の項目が作成されます。
この関数は、データ内の項目名と作成されたHoudiniオブジェクト間のマッピングを返します。
{ "target_node": <hou.SopNode of type xform at /obj/geo1/transform2>, "items": { "box1": <hou.SopNode of type box at /obj/geo1/box2>, "OUT": <hou.SopNode of type null at /obj/geo1/OUT1> } }
関連項目:
レシピ ¶
レシピは、データデジタルアセット内に格納されます。
このレシピデータは、data.recipe.jsonセクションに格納されます。
レシピデータには、以下の項目を含めることができます:
data
これは、選択されたHoudiniオブジェクトに基づいてキャプチャされたデータを格納します。
-
Parameter Presetは、パラメータのデータを保持したパラメータデータを格納します。
-
Node Presetは、ノードのデータを保持したネットワークアイテムデータを格納します。
-
DecorationおよびToolは、複数のノードを保持したクラスタデータを格納します。それらの複数のノードのうち1つのノードがセントラルノードまたはアンカーノードとして指定されています。
properties
ここには、このレシピが機能するのに必要な情報を格納します。
properties辞書には、以下のキーを含めることができます:
label: str
Houdiniに表示されるレシピのラベル。
name: str
レシピの内部名。 これは、Pythonシェルからレシピを呼び出す際に使用できる名前です。
nodetype_category: str
レシピをキャプチャしたノードのカテゴリタイプ。
nodetype_patterns: list[str]
Node PresetレシピおよびDecorationレシピは、そのレシピが割り当てられているノードタイプのレシピメニューに表示されます。 このリストは、それらのノードタイプを定義します。
recipe_category: str
これは、レシピのタイプを定義します。
visible: bool
これは、レシピがメニューに表示されて使用可能となるタイミングを設定します。
tool
Toolなどのレシピカテゴリの場合、これは、⇥ Tabメニューに表示されるツールに関する情報を保持します。
tool辞書には、以下のキーを含めることができます:
icon: str
⇥ Tabメニューに表示するアイコン名。
options
レシピが作成された時に使用されたキャプチャオプションを格納します。
info
レシピに関する基本情報を格納します。
comment: str
レシピの目的を説明したオプションのコメント。
created: str
レシピが作成された日時。
data_version: str
レシピのキャプチャに使用されたデータモデルのバージョン番号。
houdini_version: str
レシピのキャプチャに使用されたHoudiniバージョン。
以下は、レシピデータの例です:
{ "data": { "type": "lsystem", "parms": { "angleinit": 27.0, "anglescale": 0.699999988, "picfile": "$HFS/houdini/pic/circle.pic", "premise": "A", "randscale": 0.5, "randseed": 3, "rule1": "A=-F+A:0.50", "rule2": "A=+F-A:0.50", "stepinit": 0.100000001, "stepscale": 0.5, "thickinit": 0.100000001, "thickscale": 0.899999976, "vertinc": 0.100000001 } }, "info": { "author": "sidefx", "comment": "", "created": "May 10, 2024 - 21:58:28", "data_version": "1.0", "houdini_version": "20.5.231" }, "options": { "children": False, "default_parmvalues": False, "editables": False, "evaluate_parmvalues": False, "flags": False, "metadata": False, "nodes_only": False, "parms_as_brief": True, "parmtemplates": "spare_only", "verbose": False }, "properties": { "label": "Crack", "name": "sop/lsystem::sidefx::crack", "nodetype_category": "Sop", "nodetype_name": "lsystem", "nodetype_patterns": [ "Sop/lsystem" ], "recipe_category": "node_preset_recipe", "visible": True } }
comment:strノードのコメント文字列。