A object-oriented python wrapper for houdini engine's C API
Project description
pyhapi
Object-Oriented Python Wrapper for Houdini Engine's C API
Documentation
Please visit pyhapi documentation.
Install
You could use either (a) pip or (b) clone and install.
option a.1 setup PATH
- For Windows, run
powershell ./sethoupath.ps1
it should add houdini's dsolib and bin directory to PATH. - For Linux
Add/opt/hfs<version>/dsolib/
to LD_LIBRARY_PATH
Example:
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/opt/hfs17.5/dsolib/
option a.2 install through PyPI
$ pip install pyhapi
option b
Clone this repo and run python setup.py install
Supported Platforms
- Windows
- Linux
Dependency
- Python: >3.6
- Numpy: >= 1.15
- Houdini >= 17.5
- License supported:
- Houdini FX
- Houdini Core
- Houdini Engine
- License NOT supported:
- Houdini Engine Indie
- Houdini Indie
- Houdini Apprentice
- License supported:
Features
- Instantiate node/HDA
- Node connect operation
- Node parameter get/set
- Node async cooking
- Marshall in/out curve
- Marshall in/out mesh
- Marshall in/out heightfield
- SessionPool and task-based processing
Following feature in Houdini Engine is NOT supported yet:
- Marshall in/out volume
- PDG execution
Example Usage
Please see documentation for detailed tutorial. ****
Create a session
import pyhapi as ph
session = ph.HSessionManager.get_or_create_default_session()
See more in
Example: node_networks_operations
Instantiate a HDA
hda_asset = ph.HAsset(session, "hda/FourShapes.hda")
asset_node = hda_asset.instantiate(node_name="TestObject").cook()
Set parameter of node
asset_node.set_param_value("seed", 1.0)
asset_node.set_param_value("foo_attrib", "foo_str")
asset_node.press_button("foo_execute")
See more in
Example: hda_params_getset
Save HIP file
session.save_hip("debug.hip")
Marshall data
see more in
Example: curve_marshall_input
Example: curve_marshall_output
Example: mesh_marshall_input
Example: mesh_marshall_output
Example: heightfield_marshal_input
Example: heightfield_marshal_output
Session Pool
Producer/Consumer
session_pool = ph.HSessionManager.get_or_create_session_pool(3)
session_pool.run_on_task_producer(producer)
Example: multisession_producer
Batch Run
session_pool = ph.HSessionManager.get_or_create_session_pool(3)
session_pool.enqueue_task(session_task, i, j)
session_pool.run_all_tasks()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.