Houdini 20.5 Unreal

Houdini-Niagara Plug in

Install and setup for Houdini-Niagara

On this page

The Houdini Niagara plugin can be found in your Houdini install directory, next to the Houdini Engine plugin: HoudiniXX.Y\engine\unreal\5.Z\HoudiniNiagara. You can also download the Houdini Niagara plugin at SideFX Houdini Niagara GitHub page.

The latest version supports Unreal 5.4. Similar to the Houdini Engine plugin, the Houdini Niagara plugin’s source code is intended to be compatible with all previous version of UE5. That plugin can be found under the FX category, and requires the Niagara plug-in to be activated.

This plugin adds an additional type of asset: Houdini Point Cache Assets that contains various point attributes exported from Houdini. It also provides the custom Houdini-Niagara Data interface for parsing and processing those assets in Niagara.

Installation

  1. Download the latest release from GitHUb.

  2. Unzip the downloaded file.

  3. Copy the HoudiniNiagara folder into _Your_Unreal_Project/Plugins_ folder.

  4. To confirm the plugin is installed, load your project and navigate to Edit ▸ Plugins.

  5. Search for Houdini Niagara in the Project section of the Plugins window.

You can also build the plugin from source by following the instructions on the GitHub page.

Getting Started

The plugin includes a configured emitter, 1HoudiniNiagaraBasic1, that can be used as the basis for most Niagara Systems that utilise an Houdini Point Cache. The required modules for reading an Houdinin Point Cache can be found below.

For a quick introduction to the workflow and various assets:

Modules

Module

Description

Init Houdini Point Cache

Emitter Spawn Group - This module tracks spawning info and ensures unique point ID’s for each emitter

Spawn Particles from Houdini Point Cache

Emitter Update Group - This module reads an Houdini Point Cache and spawns particles based on their age attribute relative to Emitter.LoopedAge

SpawnGroup can be set if multiple caches need to be accessed in the same emitter

Sample Spawned Houdini Point Cache

Particle Spawn Group - This module reads an Houdini Point Cache and sets the default attributes in the Houdini namespace. It only set the attribute for each particle once at spawn time. The Set Parameter module can then be used to set attributes like Particles.Position from Particles.Houdini.Position

SetLifetime sets Particles.Lifetime based on the life attribute (if it exists)

SetVelocity sets Particles.Houdini.Velocity based on the v attribute (if it exists)

Sample Houdini Point Cache

Particle Update Group - This module reads an Houdini Point Cache and updates the default attributes in the Houdini namespace based on Emitter.LoopedAge

The Set Parameter module can then be used to set attributes like Particles.Position from Particles.Houdini.Position

UseCustomAge when on allows the user to specify a custom attribute to control the time index used for reading point cache attributes

Default Attributes

The sample modules will attempt to read the following attributes from an Houdini Point Cache. If an attribute does not exist the particle attribute will be set to 0.

  • Particles.Houdini.Position is set from P

  • Particles.Houdini.Normal is set from N

  • Particles.Lifetime is set from life

  • Particles.Houdini.Color is set from Cd

  • Particles.Houdini.Alpha is set from Alpha

  • Particles.Houdini.Impulse is set from impulse

  • Particles.Houdini.Force is set from force

  • Particles.Houdini.Type is set from type

  • Particles.Houdini.Velocity is set from v

  • Particles.Houdini.Pscale is set from pscale

  • Particles.Houdini.Orient is set from orient

Custom Attributes

Custom attributes can be read by creating your own module.

This video shows how to do that.

Houdini Point Cache Asset

You can import .hbjson, .hjson and .hcsv files generated by the Niagara ROP in Houdini. hcsv has been deprecated in favor of the ascii and binary json file formats. The plugin supports float, vector (including color) and int values.

If vector or tuple values are exported, they will be expanded upon being parsed by the plug-in (so P will become P.x, P.y, P.z).

If you select a Houdini Point Cache Asset, it shows you the following properties on the file:

This can be useful for checking the header info of the file - number of points, number of frames, etc. It will also list the array of attributes stored in the file.

Hover over a Houdini Point Cache Asset in the Content Browser to display the following information on the available data:

Special Attributes

The header of the point cache file contains the names of all the attributes exported. Certain attributes have built-in functions for getting their values:

  • Position values should be stored as P

  • Time values should be stored as time. The Niagara ROP will add this attribute automatically or it can be set by the user.

  • Point IDs should be stored as id

  • Normal values should be stored as N

  • Velocity values should be stored as v

  • Color values should be stored as Cd

  • Alpha values should be stored as Alpha

  • Life values should be stored as life

  • Type values can be stored as type

  • Impulse values should be stored as impulse

If you want to update point position over time, Point IDs and time values are required.

The spawn time for a given point in the file is calculated in the following way:

  • if the asset has an age attribute, the spawn time is calculated by comparing age to time.

  • if the asset does not have age, when time==0, a particle will be spawned.

If the asset has a life attribute, this will directly set the lifetime of a particle. This can be disabled on the sample modules and set in the Emitter stack as well.

The type for a given point is set to its first type value. If the file doesn’t contain type values, all points will have a type set to 0.

Houdini-Niagara Data Interface

To access the point cache data contained in the Houdini Point Cache Asset, the custom Houdini-Niagara Data Interface provided by the plug-in should be used.

The Data Interface can be accessed by adding a Houdini Point Cache Info parameter to your module/emitter/system in Niagara, and selecting a Houdini Point Cache Asset for it.

All the functions that get attributes from an Houdini Point Cache Asset require:

Attribute

Description

Houdini Point Cache Info

A reference to the Houdini Point Cache Asset

PointID

A unique particle ID, usually Particles.Houdini.NID

SampleIndex

An integer value of the index in a series of attribute values over time. Use the Get Sample Indexes for Point at Time or Get Last Sample Index function to get this value

Time

The current time of the emitter, usually Emitter.LoopedAge

Data Interface

The Data Interface will expose the following functions:

Function

Description

Get Sample Indexes for Point at Time

Returns the sample indexes for a given point at a given time. The previous index, next index and weight can then be used to Lerp between values

Get Last Sample Index at Time

Returns the index of the last sample in the point cache that has a time value lesser or equal to the Time parameter

Get Point IDs to Spawn at Time

Returns the count and point IDs of the points that should spawn for a given time value. Refer to the Spawn Particles From Houdini Point Cache module for an implementation.

Get Number Of Attributes

Return the number of attributes in the cache

Get Number Of Points

Return the number of points in the cache

Get Color

Returns the color value for a given Sample Index in the point cache

Get Float Value

Returns the float value in the point cache for a given Sample Index and Attribute Index

Get Float Value by String

Returns the float value in the point cache for a given Sample Index and Attribute name

Get Impulse

Return the impulse value for a given Sample Index in the point cache

Get Normal

Return the normal value for a given Sample Index in the point cache. The returned Normal vector is converted from Houdini’s coordinate system to Unreal’s

Get Point Alpha at Time

Returns the linearly interpolated alpha for a given point at a given time

Get Point Color at Time

Returns the linearly interpolated color for a given point at a given time

Get Point Impulse at Time

Returns the linearly interpolated impulse for a given point at a given time

Get Point Life

Returns the life value for a given point when spawned. The life value is either calculated from the alive attribute or is the life attribute at spawn time

Get Point Life at Time

Returns the remaining life for a given point in the point cache at a given time

Get Point Normal at Time

Returns the linearly interpolated normal for a given point at a given time. The returned vector is converted from Houdini’s coordinate system to Unreal’s

Get Point Position at Time

Returns the linearly interpolated position for a given point at a given time. The returned Position vector is converted from Houdini’s coordinate system to Unreal’s

Get Point Quat Value at Time

Returns the linearly interpolated quaterion value in the specified attribute index for a given point at a given time

The 1DoHoudiniToUnrealConversion1 parameter indicates if the vector4 should be converted from Houdini’s coordinate system to Unreal’s

Get Point Quat Value at Time by String

Returns the linearly interpolated Quat value in the specified attribute (by name) for a given point at a given time. The DoHoudiniToUnrealConversion parameter indicates if the vector should be converted from Houdini’s coordinate system to Unreal’s

Get Point Type

Returns the integer type value for a given point when spawned

Get Point Type at Time

Returns the integer type value for a given point at a given time

Get Point Value at Time by String

Returns the linearly interpolated float value in the specified attribute (by name) for a given point at a given time

Get Point Vector4 Value at Time

Returns the linearly interpolated Vector4 value in the specified Attribute Index for a given point at a given time. The returned Vector is converted from Houdini’s coordinate system to Unreal’s

Get Point Vector4 Value at Time by String

Returns the linearly interpolated Vector4 value in the specified attribute (by name) for a given point at a given time. The returned Vector is converted from Houdini’s coordinate system to Unreal’s

Get Point Vector Value at Time

Returns the linearly interpolated Vector value in the specified Attribute Index for a given point at a given time.The returned Vector is converted from Houdini’s coordinate system to Unreal’s

Get Point Vector Value at Time by String

Returns the linearly interpolated Vector value in the specified attribute (by name) for a given point at a given time. The returned Vector is converted from Houdini’s coordinate system to Unreal’s

Get Point Vector Value at Time Ex

Returns the linearly interpolated Vector value in the specified attribute index for a given point at a given time

The DoSwap parameter indicates if the vector should be converted from Houdini’s coordinate system to Unreal’s

The DoScale parameter decides if the Vector value should be converted from meters (Houdini) to centimeters (Unreal)

Get Point Vector Value at Time Ex by String

Returns the linearly interpolated Vector value in the specified attribute (by name) for a given point at a given time

The DoSwap parameter indicates if the vector should be converted from Houdini’s coordinate system to Unreal’s

The DoScale parameter decides if the Vector value should be converted from meters (Houdini) to centimeters (Unreal)

Get Point Velocity at Time

Returns the linearly interpolated velocity for a given point at a given time. The returned vector is converted from Houdini’s coordinate system to Unreal’s

Get Position

Returns the position value for a given sample index in the point cache file. The returned Position vector is converted from Houdini’s coordinate system to Unreal’s

Get Position and Time

Returns the position and time values for a given Sample Index in the point cache. The returned Position vector is converted from Houdini’s coordinate system to Unreal’s

Get Quat Value

Returns a Quat in the point cache for a given Sample Index and Attribute Index.

Get Quat Value by String

Returns a Quat in the point cache for a given Sample Index and Attribute Name

The DoHoudiniToUnrealConversion parameter indicates if the vector should be converted from Houdini’s coordinate system to Unreal’s

Get Time

Returns the time value for a given Sample Index in the point cache

Get Vector4 Value

Returns a Vector4 in the point cache for a given Sample Index and Attribute Index. The returned Vector is converted from Houdini’s coordinate system to Unreal’s

Get Vector4 Value by String

Returns a Vector4 in the point cache for a given Sample Index and Attribute name. The returned Vector is converted from Houdini’s coordinate system to Unreal’s

Get Vector Value

Returns a Vector in the point cache for a given Sample Index and Attribute Index. The returned Vector is converted from Houdini’s coordinate system to Unreal’s

Get Vector Value by String

Returns a Vector in the point cache for a given Sample Index and Attribute name. The returned Vector is converted from Houdini’s coordinate system to Unreal’s

Get Vector Value Ex

Returns a Vector3 in the point cache for a given Sample Index and Attribute Index

The DoSwap parameter indicates if the vector should be converted from Houdini’s coordinate system to Unreal’s

The DoScale parameter decides if the Vector value should be converted from meters (Houdini) to centimeters (Unreal)

Get Vector Value by String

Returns a Vector3 in the point cache for a given Sample Index and Attribute name

The DoSwap parameter indicates if the vector should be converted from Houdini’s coordinate system to Unreal’s

The DoScale parameter decides if the Vector value should be converted from meters (Houdini) to centimeters (Unreal)

Get Velocity

Returns a Vector3 in the point cache for a given Sample Index and Attribute name. Returns the velocity value for a given Sample Index in the point cache. The returned velocity vector is converted from Houdini’s coordinate system to Unreal’s

Unreal

Getting started

Basics

Using Houdini Engine

Scripting

Reference