Houdini Engine 1.9
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Pages

Important Files

Four header files are included in the Houdini Engine distribution:

If you are implementing a managed application, you will need to replicate the data structures in HAPI_Common.h - please see the Unity sample code for examples on how to do this (in the file HAPI_Common.cs, as part of the Unity implementation).

Assuming you used the default install options, you should find these files in:

C:\Program Files\Side Effects Software\Houdini <version>\toolkit\include\HAPI

For native applications, you will need to link against the import library. The import library is name libHAPI.a and is found in a directory that should look similar to:

C:\Program Files\Side Effects Software\Houdini <version>\custom\houdini\dsolib


When writing applications with Houdini Engine it is important to ensure that the version of Houdini Engine being loaded into memory is in fact the version of Houdini Engine you compiled your code against (a common scenario where this can be a problem: setting the PATH environment variable wrongly to point to some other version of Houdini Engine).

We provide HAPI_GetEnvInt() to help you determine the version of Houdini Engine that you have actually loaded into memory. Possible int types are given by HAPI_EnvIntType.

The important version numbers are:

These are effectively Houdini Engine API version numbers that describe the API and the data structures around the API. These should match the numbers against which you built your application.

The other version numbers are there for further diagnostic purposes. The Houdini Engine API (HAPI) is somewhat de-coupled from the underlying Houdini technology. As long as the Houdini native APIs that HAPI depends on have not changed, HAPI will be able to compile against and run with many different versions of Houdini. HAPI_ENVINT_VERSION_ORIG_HOUDINI_MAJOR, HAPI_ENVINT_VERSION_ORIG_HOUDINI_MINOR, and HAPI_ENVINT_VERSION_ORIG_HOUDINI_BUILD indicate the original build from which this version of HAPI was built from, while HAPI_ENVINT_VERSION_HOUDINI_MAJOR, HAPI_ENVINT_VERSION_HOUDINI_MINOR, and HAPI_ENVINT_VERSION_HOUDINI_BUILD indicate the base Houdini version against which this version of Houdini Engine is currently deployed.

You may also get version information at build time by including the HAPI_Version.h header file. This file is generated during the building of Houdini and will always contain the correct values. All version numbers are provided as #define's for your own use.

Sample Application

To build a sample program:

  1. Copy the contents of $HFS/toolkit/enginesimplehost to a directory where you have write permissions.
  2. Use the provided sample Makefile by running:
    make -f Makefile.sample
    Note that the Makefile supports Linux and Windows (via cygwin). Mac support is coming soon.

Suggested Steps

While the HAPI docs are in dependency order for the most part, it is not perfectly so, nor are all sections of a category relevant for most integrations. Here is a suggested/recommended integration strategy, best done in order:

  1. Initialization and Testing
    1. Strings
    2. Return Codes and Error Strings
    3. Initialization and Cleanup
    4. Saving a HIP File
  2. Instantiation of Assets
    1. Asset Library Files
    2. Cooking
    3. Transforms
  3. Objects, Geos, and Parts
    1. Objects
    2. Geos
    3. Parts
  4. Attributes
    1. About Houdini Attributes
    2. Query Attribute Information
    3. Getting Attribute Values
  5. Parameters
    1. Nodes
    2. Query Parameter Info
    3. Getting Values
    4. Setting Values
    5. Incremental Updates
    6. Formatting and Display
    7. Choice Lists
    8. MultiParms
    9. Presets
  6. Materials
    1. Materials Introduction
    2. Rendering to Image
      1. Rendering Texture Map to Image
      2. Rendering Material to Image
    3. Extracting Images
      1. Image Manipulation
      2. Image File Formats
      3. Image Planes
      4. Image Extraction
  7. Asset Inputs
    1. Exposing Inputs
    2. Input Assets
      1. Marshalling Geometry Into Houdini
      2. Adding Attributes
      3. Adding Groups
    3. Connecting Assets
  8. Curves
    1. The Curve Asset
    2. Curve Output
  9. Advanced
    1. Instancing
    2. Time
    3. Intermediate Asset Results
    4. Handles
    5. Animation Curves
    6. Dynamics Simulations
    7. Volumes
    8. Utility Functions