HEGoAssetNode

Inherits: HEGoTransformableInputReceiverNode < HEGoTransformableNode < HEGoBaseNode < HEGoTrackableNode < RefCounted

Represents an instantiated Houdini Digital Asset (HDA) node.

Description

Use this class to instantiate an HDA by operator name, set parameters, cook, and fetch output data.

Call HEGoBaseNode.instantiate() after assigning op_name. Most data-access methods require a valid instantiated node; when called before instantiation they log an error and return a failed task.

All methods that interact with Houdini Engine return an HEGoTask. Await the task to get the result:

var task = asset_node.cook()
var result = await _await_task(task)

fetch_points() expects a resource compatible with HEGoFetchPointsConfig. fetch_surfaces() expects a resource compatible with HEGoFetchSurfacesConfig.

Properties

String

op_name

""

Methods

HEGoTask

cook()

HEGoTask

fetch_heightfield_layer_image(part_id: int)

HEGoTask

fetch_points(fetch_point_config: Resource)

HEGoTask

fetch_surfaces(fetch_surface_config: Resource)

HEGoTask

get_heightfield_layers(read_prim_attribs: PackedStringArray = PackedStringArray())

HEGoTask

get_input_names()

HEGoTask

get_parms_dict()

HEGoTask

get_preset()

HEGoTask

insert_multiparm_instance(parm_id: int, index: int)

HEGoTask

instantiate()

HEGoTask

remove_multiparm_instance(parm_id: int, index: int)

HEGoTask

set_parm(parm_name: String, value: Variant)

HEGoTask

set_parms_batch(parms: Dictionary)

HEGoTask

set_preset(preset: PackedByteArray)


Property Descriptions

String op_name = "" 🔗

  • void set_op_name(value: String)

  • String get_op_name()

Houdini operator name used by HEGoBaseNode.instantiate() to create the asset node.


Method Descriptions

HEGoTask cook() 🔗

Submits a cook task for this asset node.

Returns an HEGoTask that completes when cooking is finished. The task result is null.


HEGoTask fetch_heightfield_layer_image(part_id: int) 🔗

Submits a task to fetch one heightfield layer as an Image from the specified part id.

The task result is an Image, or an invalid image reference when the node is not instantiated or the requested part cannot be read.


HEGoTask fetch_points(fetch_point_config: Resource) 🔗

Submits a task to fetch point data using a point-fetch configuration resource.

Config fields are interpreted as follows:

filter_attribs and filter_attrib_values: paired by index; a point is kept only if all point_attr == filter_value checks pass.

filter_attribs and filter_attrib_values should have the same length.

read_attribs: extra point attributes to fetch at leaf level (in addition to P, which is always included).

split_attribs: point attributes used to build nested dictionary groups.

The method reads from the display mesh part of the cooked node.

The task result is a Dictionary with the following structure:

If split_attribs is empty, the result is a flat dictionary with leaf keys.

If split_attribs is non-empty, each split attribute adds one nesting level keyed by that attribute’s value.

Leaf dictionaries contain:

ids: filtered point indices in the source point array.

P: Array of Vector3 positions.

Additional keys from read_attribs, each mapped to an Array aligned with ids.

Returns an empty dictionary when no points pass filters, when no mesh part exists, or when geometry query fails.


HEGoTask fetch_surfaces(fetch_surface_config: Resource) 🔗

Submits a task to fetch surface data using a surface-fetch configuration resource.

Config fields are interpreted as follows:

normal, color, uv, uv2, tangents: toggles for point-derived channels included in generated Godot surface arrays.

read_attribs, filter_attribs, filter_attrib_values, split_attribs: primitive-attribute lists used for metadata readback, filtering, and grouping.

filter_attribs and filter_attrib_values are paired by index.

filter_attribs and filter_attrib_values should have the same length.

The method reads the display mesh part.

The task result is a Dictionary with the following structure:

If split_attribs is empty, the root is a single leaf dictionary.

If split_attribs is non-empty, result is nested by split attribute values.

Each leaf contains:

surface_array: a Godot Mesh.ARRAY_MAX-sized array usable with ArrayMesh.add_surface_from_arrays(), including at minimum vertices and indices; optional channels are present depending on config and source attributes.

ids: filtered primitive ids local to the current filtered set.

Any primitive attributes requested through read_attribs, each as an Array aligned with ids.

Returns an empty dictionary when no mesh part exists, no faces are available, no elements pass filters, or when geometry query fails.


HEGoTask get_heightfield_layers(read_prim_attribs: PackedStringArray = PackedStringArray()) 🔗

Submits a task to return available heightfield layers from the cooked asset.

Use read_prim_attribs to request primitive attributes that should be included in each returned layer entry.

The task result is an Array where each entry is a Dictionary containing layer metadata such as part id, layer name, voxel dimensions, scale, and transform information.


HEGoTask get_input_names() 🔗

Submits a task to return the input names defined on this HDA node.

The task result is a PackedStringArray of input names. This is useful for mapping script-side inputs to operator input slots.


HEGoTask get_parms_dict() 🔗

Submits a task to return a dictionary describing the current parameter values.

The task result is a Dictionary intended for inspection and tooling workflows, mirroring parameter state read from HAPI.


HEGoTask get_preset() 🔗

Submits a task to serialize current parameter state as a Houdini preset blob.

The task result is a PackedByteArray. Use together with set_preset() to save and restore HDA parameter setups.


HEGoTask insert_multiparm_instance(parm_id: int, index: int) 🔗

Submits a task to insert one multiparm instance at index for the parameter id.

Use this to grow multiparm blocks before setting values on newly created entries.


HEGoTask instantiate() 🔗

Submits a task to instantiate the HDA node from op_name.

If op_name is empty, the task fails with an error.

On success, the created node id is stored and this wrapper is registered in the session manager.


HEGoTask remove_multiparm_instance(parm_id: int, index: int) 🔗

Submits a task to remove one multiparm instance at index for the parameter id.

Indices follow Houdini multiparm ordering.


HEGoTask set_parm(parm_name: String, value: Variant) 🔗

Submits a task to set a parameter by name.

The Variant value type is converted to the matching Houdini parameter storage type when possible.

Call after HEGoBaseNode.instantiate(). Invalid node state causes the task to fail.


HEGoTask set_parms_batch(parms: Dictionary) 🔗

Submits a single task to set multiple parameters at once.

parms is a Dictionary mapping parameter names (String) to values (Variant). All parameters are set in one HAPI round-trip, which is more efficient than calling set_parm() repeatedly.


HEGoTask set_preset(preset: PackedByteArray) 🔗

Submits a task to apply a serialized Houdini parameter preset to this asset.

The preset payload should come from get_preset() or a compatible Houdini preset source.


Class Registration

  • Kind: Concrete


Inherited Methods