On this page

Introduction

In Unreal, the Procedural Content Generation Framework (PCG) allows you to create procedural content within the engine. See Unreal’s PCG documentation for more information.

The PCG plug-in integrates Houdini Digital Assets (HDAs) and its functionalities into Unreal’s PCG graph. Using Houdini’s node networks and HDAs, it allows you to create tools, assets, landscapes, geometry, curves, and skeletal meshes with the combined power of PCG nodes to enhance your assets within Unreal.

Houdini Digital Asset node

The Houdini Digital Assset (HDA) node is the framework to connect PCG’s network to Houdini Engine for Unreal plugin capabilities. This node allows you to use all the functionalities of an HDA in Unreal combined with PCG nodes to output an asset or pass through data.

The HDA node is set to send and receive Parameters, Inputs, and Outputs.

Using HDA node in PCG

You can set parameters and HDA inputs on the HDA PCG node similar to Houdini Asset Components.

A single output pin contains information about all outputs.

To create the HDA node in PCG:

  1. Import your HDA into Unreal. See the HDA import and export workflow for more information.

  2. In your PCG graph, click TAB and enter Houdini. This pops up Houdini Digital Asset as a node option. Set this node into the PCG Graph.

  3. In the Houdini PCG details panel, locate the Houdini Asset parameter.

  4. In the dropdown menu, select your desired HDA.

    • A Houdini Session will now be created. The HDA is parsed for inputs, outputs and paramters.

You can use any supported HDA type inside of PCG. See Assets for more information

Parameters

You can override parameters by assigning one or more attribute sets to the parameter pins. Create attribute sets from any built-in PCG node such as properties or data tables.

Inputs

Unreal objects

Unreal objects such as meshes and landscape can be sent to HDA inputs using attribute sets. The attribute name object identifies the object being used. You can set additional input settings on the HDA PCG node’s details panel.

PCG data

The plugin uploads the raw data to Houdini if an attribute or point data is assigned to the HDAs input node and doesn’t contain an object attribute. This is useful for sampling points on a landscape and sending it to Houdini rather than the whole landscape.

Note

Point data transforms its coordinates between Unreal and Houdini. Generic Vector attributes don’t convert because vectors can’t be distinguished from points, vectors, or arbritrary data.

Outputs

Unreal objects

You can create Unreal objects directly from Houdini similar to Houdini asset components. These objects create in the content browser or the level hosting in the PCG graph actor since PCG doesn’t pass Unreal objects between nodes.

The HDA PCG node can pass information about the objects between PCG nodes.

PCG data

The HDA PCG node can create raw PCG data instead of Unreal objects. For example, an HDA may sample a Houdini heighfield and return a list of points rather than a whole landscape. You can use unreal_pcg_params to export parameters and attribute sets.

Houdini PCG

When you are in the PCG graph and have created a Houdini Digital Asset (HDA) PCG node, an additional Houdini PCG tab appears. See Details Panel for the full list of HDA settings.

Setting

Description

Houdini Asset

Set the Houdini Asset from the dropdown for the HDA PCG node in the PCG Graph.

Output Type

Dropdown menu to select the output.

Cook - When you cook an asset, it follows these steps

  1. Loads the current HDA, inputs, and parameters into Houdini.

  2. Cook the HDA in Houdini.

  3. Process the outputs from the HDA and creates Unreal actors, scene components, and assets as needed.

After cooking scene components such as meshes, they're attached to the HoudiniPCGActor. Actors are placed in the current level. Assets are created in the temperary Houdini directory located in Game/HoudiniEngine/Temp.

Cook and Bake - First, cooks the PCG Node following the Cook description process. Then, bakes the cooked data which typically means copying the data from the Cook stage to its final output location. Scene components are replaced with actors in the level. Actors are placed using the final baked actor naming convention. Assets moved to the Baked folder.

Note

Baked actors and assets are deleted when regenerating the PCG graph or selecting Cleanup in the PCGComponent settings. To prevent this, select Clear PCG Link on the PCGComponent.

Create Scene Component

When on, scene components and actors will be created for HDA outputs in the current level. When off, only assets are created in the content folder. This is useful for creating assets which are then used to spawn other actors in the PCG Graph such as the Static Mesh Spawner node.

Automatically Delete Temp Assets

When on, automatically deletes assets stored in the Houdini Engine temporary folder in the Content folders. This folder can become full when using PCG, so turn it on to reduce disk space.

Use PCG Cache

To optimize PCG performance, Unreal uses an internal cache to store outputs generated by PCG nodes. If the inputs do not change, the cache assumes the outputs can be reused and speeds up the PCG graph generation.

However, using the PCG cache is not desirable if the HDA PCG node depends on assets outside of Unreal. For example, if an HDA loads a .bgeo, Unreal will not know if the .bgeo changes and the HDA does not rerun. For this case, it’s better to turn off the PCG Cache setting for an HDA PCG node.

Note

This setting only affects the node applied, the rest of the graph’s nodes still uses the PCG cache.

Tip

When this setting is on and a node does not generate correctly. Use Force Generate to clear the cache. You can also use CTRL + on the Generate button on the PCG component.

Supported features

In general features available on the Houdini asset component are compatible with the HDA PCG node with a few limitations listed.

Landscapes

Landscape creation is fully supported by Houdini in PCG. Landscape modification is supported with some caveats.

If an HDA modifies an existing Unreal landscape, enable “Ignore Landscape Tracking” on the PCG Component in the level. This prevents Unreal from creating a dependency loop when landscapes are modified.

The Houdini Engine plugin for Unreal currently does not fully support the modification of existing landscape layers. Although modifications to existing layers will be applied, they will not be undone when a PCG graph is regenerated. The recommended workflow for PCG is to create landscape edit layers inside the HDA, as created layers will be deleted when the HDA is cleaned or regenerated.

Session Sync

Session Sync mostly functions when you use PCG HDA in simple PCG graphs.

Be aware when you use PCG loops, one HDA SOP is instantiated per loop iteration in PCG. This means edits to one HDA in session sync only affects on iteration of the loop until the HDA is saved again.

PCG Loops

As mentioned in session sync, one HDA is instantiated per loop iteration. There are no limits to how many HDAs you can load but be cautious of complex HDAs that may iterate many times over.

All HDAs in a PCG graph including loops share input data. For example, if three HDA PCG nodes use the same landscape as the input, then the landscape will only be sent to Houdini once.

Unreal

Getting started

Basics

Using Houdini Engine

Scripting

Reference