hapi-rs

Crates.iohapi-rs
lib.rshapi-rs
version0.10.0
sourcesrc
created_at2021-08-03 03:40:45.963703
updated_at2024-03-14 20:17:36.10753
descriptionRust bindings to Houdini Engine API
homepage
repositoryhttps://github.com/alexxbb/hapi-rs/
max_upload_size
id430785
size563,685
(alexxbb)

documentation

https://docs.rs/hapi-rs

README

Rust bindings to Houdini Engine API

Cargo Documentation MIT/Apache 2.0

SideFX Houdini Meets Rust!

SideFx Houdini is world leading software for creating stunning visual effects for movies and games. Apart from the main graphical interface written in C++ and Python, Houdini also provides a C interface called Houdini Engine or HAPI for short. Its goal is to bring the power of Houdini to other DCCs (Digital Content Creation) software and game engines.

This crate aims to provide idiomatic Rust interface to Houdini Engine and is built on top of hapi-sys.

:exclamation: A valid commercial Houdini Engine license is required to use this crate

HDA Viewer Demo

https://user-images.githubusercontent.com/10694389/227816361-b9ffa083-7932-40e4-afda-3cb400126eb5.mp4

Introduction Video On Youtube

Example

use hapi_rs::Result;
use hapi_rs::session::quick_session;
use hapi_rs::parameter::*;

fn main() -> Result<()> {
    // Start a standalone engine process
    let session = quick_session(None)?;
    // Load a Houdini Asset and create a node
    let lib = session.load_asset_file("otls/hapi_geo.hda")?;
    let node = lib.create_asset_for_node("Object/hapi_geo", None)?;
    // Set the "scale" parameter
    if let Parameter::Float(parm) = node.parameter("scale")? {
        parm.set(0, 3.0)?;
        node.cook(None)?;
    }
    // Get a reference to the node's internal geometry
    let geometry = node.geometry()?.expect("geometry");
    // Save it to one of the supported geometry formats
    geometry.save_to_file("/tmp/output.fbx")?;
    Ok(())
}

Building

Check the documentation building section

HAPI C Documentation

More Examples

Commit count: 330

cargo fmt