/HoudiniEngineForUnreal

Completely Rebuild Of Offcial Houdini Engine From Zero, 2x - 40x Faster I/O, Optimized for making procedural landscape and city toolset

Primary LanguageCMIT LicenseMIT

Houdini Engine For Unreal

Welcome to the repository for the Houdini Engine For Unreal Plugin.

This plug-in is the completely remaster of the official Houdini Engine For Unreal from zero, with similar usages but up to 2x - 40x faster data I/O performance compare to the lastest official plug-in, native World-Partition support and much more functionalities optimized for making procedural landscape and city toolset. Moreover, this plug-in provides a set of C++ API to define your own unreal classes and assets I/O translators

As the usage is similar, Official Documentation is also available for this plug-in . But there are still lot of things are distinct. For concrete usage of this plug-in, please see Source/HoudiniEngine/Public/HoudiniEngineCommon.h and Resources/houdini/otls/examples

Compatibility

Support Houdini >= 20.5.278, Unreal Engine >= 5.3.

NOT compatible with official plug-in, and can NOT work together with official one.

Installation

  1. In this GitHub repository, click Releases on the right side.

  2. Download the Houdini Engine zip file that matches your Unreal Engine Version.

  3. Extract the HoudiniEngine folder to the Plugins of your Unreal Project Directory.

    e.g. C:/Unreal Projects/MyGameProject/Plugins/HoudiniEngine

This Plugin will automatically find the correct houdini version on your computer, or you can specify a custom Houdini installation in the plug-in settings.

Usage Brief

Here's a list of extra functionalities than official plug-in:

N.B. This list is NOT completed, for details please see Source/HoudiniEngine/Public/HoudiniEngineCommon.h

Common:

  1. Provides a set of C++ API, allow writing custom I/O translator for your own unreal classes or assets

    See Source/HoudiniEngine/Public/HoudiniInput.h and Source/HoudiniEngine/Public/HoudiniOutput.h Also see HoudiniMassTranslator of how to use these API.

  2. Streamlined Blueprint API.

  3. Light weight, compact usage and panel widgets.

  4. ... (And Much More)

Paramerter:

  1. Much more robust nested parameter support.

  2. All parameters support revert, including ramps.

  3. All parameters support copy and paste.

  4. Fully Menu support, support menu script (dynamic menu), support "normal", "replace", "toggle" menu types.

  5. ... (And Much More)

Input:

  1. Much more intutive way to draw input curves (press Enter to end/start), support fuse/split points and join/detach curves, support free-hand (Shift pressing) curve drawing.

  2. Support Landscape Mask brush input with mask types of Bit, Byte, and Weight

  3. Landscape layers input could be specified for individual editlayer and layer;

  4. Landscape layers input support update while brushing.

  5. Unreal spline input support import custom properties on your Blueprint.

  6. Texture input support.

  7. DynamicMeshComponent input support.

  8. All component type input support.

  9. All settings in the parameter input panel could set by parameter tags

  10. Mesh inputs are packed before transform.

  11. All Input types support shared memory data transport, 8x faster than official shared memory session.

  12. ... (And Much More)

Output:

  1. unreal_uproperty_* support dict and array attributes, almost everything could be set.

  2. Mesh output support using s@unreal_split_attr (like instancer output)

  3. All output types support partial update, including meshes, instancers, landscapes, geometry collection (chaos), curves.

  4. All output support generated to the split actors (i@unreal_split_actors = 1) rather than attach to parent Houdini Actors, and could set these split actors' properties by unreal_uproperty_* attributes, which means you could begin play in editor directly without baking output in a World-Partition level.

  5. So Baking is deprecated, use i@unreal_split_actors = 1 instead.

  6. Support Texture output (volumevisualmode = "image", and as a HAPI bug, must add my sharedmemory_volumeoutput Sop to your HDA)

  7. Landscape output support shared memory output (6x faster than official shared-memory session, need to add my sharedmemory_volumeoutput Sop to your HDA)

  8. Class Instancer output is 40x faster than official plug-in, also support instantiate USceneComponent derived Classes(e.g. SplineMeshComponent, PointLightComponent etc.)

  9. Geometry Collection (Chaos) output as instancers (s@unreal_output_instance_type = "GC"), all of the settings on UGeometryCollection could be set by unreal_uproperty_*, also support split and partial output

  10. Support Static/AnimatedSparseVolumeTexture (VDBs) output

  11. Support Dynamic Mesh (Geometry Script, s@unreal_output_mesh_type = "dynamic") Output

  12. ... (And Much More)