{"id":18789530,"url":"https://github.com/adrianpangithub/houdiniengineforunreal","last_synced_at":"2025-10-04T03:33:55.823Z","repository":{"id":254432107,"uuid":"840680284","full_name":"AdrianPanGithub/HoudiniEngineForUnreal","owner":"AdrianPanGithub","description":"Completely Rebuild of official Houdini Engine from Zero, 2x - 15x Faster I/O, and More functionalities optimized for making procedural landscape and city toolset","archived":false,"fork":false,"pushed_at":"2025-08-27T05:38:16.000Z","size":51014,"stargazers_count":91,"open_issues_count":0,"forks_count":18,"subscribers_count":10,"default_branch":"UE5_6","last_synced_at":"2025-08-27T13:53:54.228Z","etag":null,"topics":["houdini","houdini-engine","houdiniengine","unreal","unreal-engine","unrealengine"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AdrianPanGithub.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-08-10T11:02:07.000Z","updated_at":"2025-08-27T08:46:53.000Z","dependencies_parsed_at":"2024-08-23T12:45:32.227Z","dependency_job_id":"ddfa2052-8122-4b96-bc01-1ce4a076094c","html_url":"https://github.com/AdrianPanGithub/HoudiniEngineForUnreal","commit_stats":{"total_commits":8,"total_committers":1,"mean_commits":8.0,"dds":0.0,"last_synced_commit":"143cc59e4a2c611f57a51a3acae6357407d5a48f"},"previous_names":["adrianpangithub/houdiniengineforunreal"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/AdrianPanGithub/HoudiniEngineForUnreal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdrianPanGithub%2FHoudiniEngineForUnreal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdrianPanGithub%2FHoudiniEngineForUnreal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdrianPanGithub%2FHoudiniEngineForUnreal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdrianPanGithub%2FHoudiniEngineForUnreal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AdrianPanGithub","download_url":"https://codeload.github.com/AdrianPanGithub/HoudiniEngineForUnreal/tar.gz/refs/heads/UE5_6","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdrianPanGithub%2FHoudiniEngineForUnreal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278260375,"owners_count":25957655,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["houdini","houdini-engine","houdiniengine","unreal","unreal-engine","unrealengine"],"created_at":"2024-11-07T21:07:50.876Z","updated_at":"2025-10-04T03:33:55.815Z","avatar_url":"https://github.com/AdrianPanGithub.png","language":"C","readme":"# Houdini Engine For Unreal\n\nWelcome to the [repository](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal) for the Houdini Engine For Unreal Plugin. \n\nThis plug-in is the completely remaster of the official Houdini Engine For Unreal from zero, with similar usages but up to 2x - 15x faster data I/O performance compare to the latest official plug-in, native World-Partition support, COPernicus texture I/O 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 (See [HoudiniPCGTranslator](https://github.com/AdrianPanGithub/HoudiniPCGTranslator) and [HoudiniMassTranslator](https://github.com/AdrianPanGithub/HoudiniMassTranslator))\n\nAs the usage is similar, [Official Document](https://www.sidefx.com/docs/houdini/unreal/) is also available for this plug-in. But there are still a lot of things are different. For the concrete usage of this plug-in, please see [Document (Usage Brief)](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal?tab=readme-ov-file#usage-brief) and [Document (Reference)](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal?tab=readme-ov-file#reference) below, also see [Resources/houdini/otls/examples](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/tree/HEAD/Resources/houdini/otls/examples) and [Source/HoudiniEngine/Public/HoudiniEngineCommon.h](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Source/HoudiniEngine/Public/HoudiniEngineCommon.h#L238) (All attributes, groups and parameter-tags are listed here)\n\nTopics:\n- [Compatibility](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal?tab=readme-ov-file#compatibility)\n- [Installation](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal?tab=readme-ov-file#installation)\n- [Usage Brief](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal?tab=readme-ov-file#usage-brief) (Including Common, Parameter, Input and Output)\n- [Reference](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal?tab=readme-ov-file#reference) (All attributes, groups and parameter-tags are listed here)\n- [Blueprint API Reference](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal?tab=readme-ov-file#blueprint-api-reference)\n\n# Showreels\nSee what can be achieved by Only using your HDAs and this custom HoudiniEngineForUnreal plugin:\n[City toolchains](https://youtu.be/5Vp5nAFq1X8?si=IGSDG4cUdsefwn5x) and [Terrain toolchains](https://youtu.be/19gIzQGnSaU?si=-t7LaDjhUEc7hjMe)\n\n# Compatibility\n- Support all builds of Houdini 21.0, Unreal Engine \u003e= 5.4 and legacy version for 5.3.\n- Support Windows, macOS-arm64(Apple Silicon M series), and Linux(Ubuntu).\n- Support Editor Packaging (**Debug Info** and **Editor Lib** binaries has been uploaded in [Releases](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/releases) separately).\n\n- NOT compatible with official plug-in, and can NOT work together with official one.\n\n# Installation\n01. In this GitHub [repository](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal), click [Releases](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/releases) on the right side.\n02. Download the Houdini Engine zip file that matches your platform and Unreal Engine Version.\n03. Extract the **HoudiniEngine** folder to the **Plugins** of your Unreal Project Directory.\n\n    e.g. `C:/Unreal Projects/MyGameProject/Plugins/HoudiniEngine`\n\nThis plug-in will automatically find the correct houdini version on your computer, or you could specify a custom Houdini installation in the plug-in settings(Houdini Engine menu/Settings).\n\nN.B. But for Steam Houdini Indie, You MUST specify your steam houdini location manually, by plug-in setting: CustomHoudiniLocation, or use \"HAPI_PATH\" environment variable to specify your Houdini location.\n\n# Feedback\nPlease report issues, suggestions and feature requests on [Github](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/issues?q=is%3Aissue)\n\n# Usage Brief\nAll official functionalities are supported by this plug-in!\n\nHere's a list of **Extra functionalities** than official plug-in:\n\nN.B. This list is NOT completed, for details please see [Source/HoudiniEngine/Public/HoudiniEngineCommon.h](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Source/HoudiniEngine/Public/HoudiniEngineCommon.h#L238) (All attributes, groups and parameter-tags are listed here) and [Resources/houdini/otls/examples](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/tree/HEAD/Resources/houdini/otls/examples)\n\n**Common**:\n- Native UE5-**World-Partition** \u0026 **Game Packaging** support, **NO** need bake! **NO** need delete houdini actor when packaging! Just using i@**unreal_split_actors** = 1, to generate standalone actors that can directly package to game. With [s@unreal_split_attr](https://www.sidefx.com/docs/houdini/unreal/instancing.html#splitting-instancers) (Also split Mesh by s@unreal_split_attr in this plugin) to split actors, provides native support for world-partition actor streaming (UE5 OFPA One-File-Per-Actor), See [he_example_split_actors.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_split_actors.hda), also see output usages and references below of how to use these functionalities.\n- Streamlined [Blueprint API](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal?tab=readme-ov-file#blueprint-api-reference).\n- Finite state machine for achieving rich user interactions by only using HDA (See [he_example_quick_shape.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_quick_shape.hda))\n- Provides a set of C++ API, allow writing custom I/O translators for your own unreal classes or assets\n    See [Source/HoudiniEngine/Public/HoudiniInput.h](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Source/HoudiniEngine/Public/HoudiniInput.h#L340) and [Source/HoudiniEngine/Public/HoudiniOutput.h](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Source/HoudiniEngine/Public/HoudiniOutput.h#L48).\n    Also see [HoudiniPCGTranslator](https://github.com/AdrianPanGithub/HoudiniPCGTranslator) and [HoudiniMassTranslator](https://github.com/AdrianPanGithub/HoudiniMassTranslator) of how to use these API.\n- Light weight, compact usage and panel widgets.\n- ... (And Much More)\n\n**Parameter**:\n- Much more robust nested parameter support.\n- All parameters support revert, including ramps.\n- All parameters support copy and paste.\n- Fully Menu support, support menu script (dynamic menu), support \"normal\", \"replace\", \"toggle\" menu types.\n- Node preset(including parameters and inputs) now save as DataTable, which can be fetched by houdini input directly.\n- \"unreal_ref_filter\" tag for string-parameter with tag { \"unreal_ref\" : \"1\"/\"2\" }.\n- Be careful: { \"unreal_ref\" : \"1\" } tag but on operator-path-parameter means \"import as reference\", which will Not actually import geometry but import references only (See [HoudiniEngineCommon.h Line 373](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Source/HoudiniEngine/Public/HoudiniEngineCommon.h#L373)). So Remove \"unreal_ref\" or Set { \"unreal_ref\" : \"0\" } on operator-path-parameter if you want to import landscape layer data or mesh geometries.\n- Import asset info(like Bounds of StaticMesh) by using parameter tag { \"**unreal_ref**\" : \"**2**\" / \"**import_info**\" } on string-parameter, the string value will be like: `/Script/Engine.StaticMesh'/Engine/BasicShapes/Cone.Cone';bounds:-0.5,0.5,-0.5,0.5,-0.5,0.5`, #include \u003c[houdini_engine_utils.h](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/vex/include/houdini_engine_utils.h)\u003e and use [get_asset_bounds](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/vex/include/houdini_engine_utils.h#L11) vex function to parse.\n- ... (And Much More)\n\n**Input**:\n- Much more intuitive way to draw input curves (press **Enter** to end/start, Click in viewport to draw points), support Free-Hand (**Shift** pressing) curve drawing, support Insert point (**Shift** pressing when NOT drawing), support fuse/split points and join/detach curves, also could use **he_convert_curves** Sop in your HDA to resample input curves.\n- Custom attributes on input curves by parameter panel (Attach parms to the folder named [input name] + \"**_prim_attribs**\"/\"**_point_attribs**\" to define custom per curve/point attributes. See [he_example_spline_mesh_output.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_spline_mesh_output.hda). Will perform as string asset parameter with \"import_info\" if attach operator-path parameter to attribute folder)\n- Support Landscape Mask brush input with mask types of Bit, Weight, and Byte (See [he_example_byte_mask.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_byte_mask.hda)).\n- Landscape layers input could be specified for individual editlayer and layer by input settings or parm tags (e.g. { \"unreal_landscape_editlayer_Flat Middle\" : \"height Alpha Grass\" }, { \"unreal_landscape_editlayer_Base Landscape\" : \"* ^Alpha ^Mud ^Rock\" }, { \"**landscape_layer**\" : \"height\" } (will import combined layer), See [HoudiniEngineCommon.h Line 384](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Source/HoudiniEngine/Public/HoudiniEngineCommon.h#L384))\n- Landscape visibility layer now input as \"**Alpha**\", should look identical in unreal and houdini.\n- Landscape layers input support update while brushing.\n- Unreal spline input support import **custom properties** on your Blueprint.\n- **Texture input** support, See [he_example_terrain_stamp.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_terrain_stamp.hda). This feature allow HDA working with **COPernicus**.\n- DataAsset input support (as point with d@unreal_object_metadata).\n- DynamicMeshComponent input support.\n- All component types input support.\n- StaticMesh and SkeletalMesh(KineFX) input using nanite fallback mesh(render data) by default, use parameter tag: { \"**import_render_data**\" : \"**0**\" } to import source model, or set on input ui panel.\n- StaticMesh and SkeletalMesh(KineFX) inputs are packed before transform, #include \u003c[houdini_engine_utils.h](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/vex/include/houdini_engine_utils.h)\u003e and use [crack_packed_transform](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/vex/include/houdini_engine_utils.h#L4) vex function to retrieve p@rot and v@scale from packed meshes.\n- World Input(Actor Input) support filter all actors in current level by Label, Class, FolderPath or Tags, using parameter tag { \"**unreal_actor_filter_method**\" : \"**class**\"/\"**label**\"/\"**tag**\"/\"**folder**\" } to specify filter method, { \"**unreal_ref_class**\" : \"StaticMeshActor PointLight\" } to specify filter classes when filter method is \"Class\", using { \"**unreal_ref_filter**\" : \"Tree ^Street\" } to specify filter string when using other actor filter methods. Also could set on input ui panel.\n- Also support filter input components by { \"**unreal_ref_class**\" : \"PCGComponent StaticMeshComponent\" } when World Input (Actor Input).\n- All settings in the houdini input ui panel could be set by parameter tags (e.g. { \"check_changed\", \"0\" }, { \"unreal_ref\", \"1\" }(Means `import-as-reference`), { \"import_render_data\", \"0\" } for individual operator path input, Rather than set all in plugin settings in official plugin. See [HoudiniEngineCommon.h Line 373](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Source/HoudiniEngine/Public/HoudiniEngineCommon.h#L373)).\n- All Input types support shared memory data transport, up to 15x faster than official shared memory session.\n\n- ... (And Much More)\n\n**Output**:\n- Mesh output as StaticMesh by default, rather than preview mesh(HoudiniMesh). Use s@**unreal_output_mesh_type** = \"dynamic\" to output proxy mesh (GeometryScript/**DynamicMesh Output**), which is way much faster than StaticMesh output. Moreover, StaticMesh output will defer Mesh Distance Field generation while editing, but will automatically build Mesh Distance Field when current map re-open.\n- Mesh output support using [s@unreal_split_attr](https://www.sidefx.com/docs/houdini/unreal/instancing.html#splitting-instancers) (like instancer splitting, See [he_example_split_actors.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_split_actors.hda))\n- All output types support partial update, including meshes, instancers, landscapes, geometry collection (chaos), curves using i@**partial_output_mode**, See [HoudiniEngineCommon.h Line 252](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Source/HoudiniEngine/Public/HoudiniEngineCommon.h#L252), Must split output using s@**unreal_split_attr** before partial update.\n- All output support generated to the split actors (i@**unreal_split_actors** = 1) rather than attach to parent Houdini Actors (use s@**unreal_split_attr** specified attribute to name the split actors), and could set these split actors' properties by **unreal_uproperty_*** attributes (e.g. s[]@unreal_uproperty_**DataLayerAssets**, s@unreal_uproperty_**RuntimeGrid**, s@unreal_uproperty_**HLODLayer**), which means you could begin play in editor directly without baking output in a World-Partition level.\n- So Baking is deprecated, use i@**unreal_split_actors** = 1 instead (See [he_example_split_actors.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_split_actors.hda)).\n- **unreal_uproperty_*** support dict and array attributes, almost everything could be set.\n- Support **Texture output** (volumevisualmode = \"image\", and as an HAPI bug, MUST add my **sharedmemory_volumeoutput** Sop to your HDA, See [he_example_texture_output.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_texture_output.hda)), optionally using s@**unreal_object_path** to specify output texture asset path, allow HDA working with **COPernicus**.\n- \"**Alpha**\" heightfield layer now output as Landscape visibility layer, should look identical in houdini and unreal.\n- \"**mask**\" heightfield layer with s@**unreal_output_name** can write data directly to Mask Input.\n- Landscape output recommend to use shared memory output (6x faster than official plugin, add my **sharedmemory_volumeoutput** Sop to your HDA on the top of output node at last, See [he_example_terrain_stamp.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_terrain_stamp.hda). Since HAPI_GetHeightFieldData has serious bugs, especially when transport volumes with various resolutions).\n- Support Delete landscape EditLayer (i@**unreal_landscape_editlayer_clear** = 2) and Delete weight layer (i@**unreal_landscape_layer_clear** = 2).\n- Support instantiate USceneComponent derived Classes(e.g. SplineMeshComponent, PointLightComponent etc. See [he_example_spline_mesh_output.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_spline_mesh_output.hda)).\n- Negative scale support for InstancedStaticMeshComponent Output.\n- Geometry Collection (Chaos) output as instancers (s@**unreal_output_instance_type** = \"GC\"), all of the settings on UGeometryCollection could be set by **unreal_uproperty_***, rather than specific attributes in official plugin, also support split and partial output (See [he_example_chaos_geometry_collection_output.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_chaos_geometry_collection_output.hda)).\n- Standalone MaterialInstance asset output (Still using s@**unreal_material_instance** and @**unreal_material_parameter_***, but on points, See [he_example_vdb_output.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_vdb_output.hda))\n- Unreal spline output support specify tangents (v@**unreal_spline_point_arrive_tangent**, v@**unreal_spline_point_leave_tangent**) and spline class (s@**unreal_output_spline_class**, can be \"WaterBodyLake\", \"/Game/Blueprints/BP_Spline\", \"CineSplineComponent\", etc. See [he_example_spline_output.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_spline_output.hda) with \"Water\" plugin enabled).\n- All assets (including DataAsset) support create or modify by HDA output (See [he_example_split_actors.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_split_actors.hda), using s@**unreal_object_path** (\"having class prefix\" means create, otherwise, means modify), d@**unreal_object_metadata**, @**unreal_uproperty_***).\n- Allow output specific mesh and curves that could edit directly in unreal editor (See [he_example_quick_shape.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_quick_shape.hda))\n- Static/AnimatedSparseVolumeTexture (VDBs) output support.\n\n- ... (And Much More)\n\n# Reference\nBasic attributes are identical to official plugin, such as s@unreal_material, s@unreal_material_instance, @unreal_material_parameter_, [s@unreal_split_attr](https://www.sidefx.com/docs/houdini/unreal/instancing.html#splitting-instancers), s@unreal_instance, [@unreal_uproperty_](https://www.sidefx.com/docs/houdini/unreal/attributes.html#generic), [@unreal_data_table_](https://www.sidefx.com/docs/houdini/unreal/outputs.html#data-tables), i@unreal_landscape_output_mode, s@unreal_landscape_editlayer_name, i@unreal_landscape_editlayer_subtractive, [i@unreal_num_custom_floats, f@unreal_per_instance_custom_data#](https://www.sidefx.com/docs/houdini/unreal/instancing.html#per-instance-custom-data), s@unreal_uproperty_CollisionProfileName, p@rot, v@scale, etc.\n\nBeware that All attributes used for baking are **deprecated and removed**. Instead, you could use i@unreal_split_actors = 1 and @unreal_uproperty_* to set them directly without baking, to package the generated result to your game.\n\nBeware that all attributes used for Geometry Collection output are **deprecated and removed**. Instead, all settings on Geometry Collection could be set by @unreal_uproperty_*.\n\nBeware that the mesh output also split by [s@unreal_split_attr](https://www.sidefx.com/docs/houdini/unreal/instancing.html#splitting-instancers), just like instancer splitting, rather than using groups.\n\nMesh output groups please use `collision_geo` and `lod_#`, other official groups are **deprecated and removed**. \"rendered_collision_geo\" is deprecated, please use i@**unreal_uproperty_CollisionComplexity** = 3 instead. \"collision_geo_simple_*\" are deprecated, please use d@**unreal_uproperty_Primitives** or d@**unreal_uproperty_AggGeom** instead.\n\nHere're the lists of **Extra** attributes, groups, and parameter tags that official plugin does NOT have.\n\nN.B. This list is NOT completed, for details please see [Source/HoudiniEngine/Public/HoudiniEngineCommon.h](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Source/HoudiniEngine/Public/HoudiniEngineCommon.h#L238) (All attributes, groups and parameter-tags are listed here)\n| Attributes | Class | Type | Explanation |\n| --- | --- | --- | --- |\n| unreal_split_actors | point/vertex/prim/detail | int | (Output) To generate standalone split actors rather than attach to parent houdini actors, for world-partition (OFPA) and game packaging, See [he_example_split_actors.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_split_actors.hda). |\n| unreal_output_mesh_type | point/vertex/prim/detail | int/string | (Output) Define the output mesh to generate as StaticMesh(default)/DynamicMesh(= 1)/HoudiniMesh(= 2). |\n| unreal_output_instance_type | point/vertex/prim/detail | int/string | (Output) Define the output points to generate as auto/ISMC(= 1)/HISMC(= 2)/Components/Actors(= 4)/Foliage(= 5)/Geometry Collection(Chaos, = 6), See [he_example_chaos_geometry_collection_output.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_chaos_geometry_collection_output.hda). |\n| unreal_object_path | point/prim | string | (Input/Output) assign the path of output Texture, output Mesh, output DataTable... If on points output, means asset create/modify (e.g. = `/Script/Engine.DataLayerAsset'/Game/Maps/DL_HE_Runtime.DL_HE_Runtime'` will create a DataLayerAsset named DL_HE_Runtime, See [he_example_split_actors.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_split_actors.hda)). |\n| unreal_object_metadata | point | dict | (Input/Output) |\n| unreal_output_spline_class | point/vertex/prim/detail | string | (Output) Define the output curve to generate as custom Actors or Components (e.g. /Game/BPs/BP_Spline, WaterLakeBody, HoudiniCurvesComponent, CineSplineComponent, See [he_example_spline_output.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_spline_output.hda) with \"Water\" plugin enabled). |\n| curve_type | point/vertex/prim/detail | int/string | (Input/Output) Define the HoudiniCurve/UnrealSpline type. |\n| curve_closed | point/vertex/prim/detail | int | (Input/Output) Whether the HoudiniCurve/UnrealSpline is open(= 0)/closed(= 1). |\n| unreal_spline_point_arrive_tangent | point | vector3 | (Input/Output) Define the arrive tangent on unreal SplineComponent, See [he_example_spline_output.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_spline_output.hda). |\n| unreal_spline_point_leave_tangent | point | vector3 | (Input/Output) Define the leave tangent on unreal SplineComponent, See [he_example_spline_output.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_spline_output.hda). |\n| id | point\u0026prim | int | (Input) always \u003e= 1, Unique id on input curves and points. |\n| unreal_landscape_spline_tangent_length | vertex | float | (Input) Define the length of tangents on unreal landscape splines. |\n| unreal_actor_outliner_path | point | string | (Input) For World input(Actor input), different from s@unreal_actor_path, this attribute records the path in unreal world outliner, also includes actor label |\n| unreal_brush_type | prim | string | (Input) For World input(BSP Actor input), == 1 means \"Add\", == 2 \"Subtract\", See EBrushType. |\n| partial_output_mode | point/vertex/prim/detail | int/string | (Output) use with s@unreal_split_attr, allow incremental generated result update, = 1 means modify/create split values' output, = 2 means delete split values's output. |\n| unreal_landscape_layer_clear | point/vertex/prim/detail | int/string | (Output) = 1 means clear a landscape height/weight layer, = 2 means delete weight layer |\n| unreal_landscape_hole_material | point/vertex/prim/detail | string | (Input/Output) Assign landscape hole material |\n| unreal_landscape_hole_material_instance | point/vertex/prim/detail | string | (Output) Create a material instance and assign this landscape hole material instance. |\n| unreal_uproperty_Materials | point/vertex/prim/detail | string-array/string | (Output) Assign override materials on all PrimitiveComponents, like InstancedStaticMeshComponent, HeterogeneousVolumeComponent, See [he_example_split_actors.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_split_actors.hda) and [he_example_vdb_output.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_vdb_output.hda). InstancedStaticMeshComponent output will be split by this attribute. |\n| unreal_uproperty_FolderPath | point/vertex/prim/detail | string | (Output) Assign the actor outliner folder path |\n| unreal_uproperty_AggGeom | point/vertex/prim/detail | dict | (Output) Assign simple collision proxies on StaticMesh, e.g. = { \"SphereElems\": [{\"Center\": {\"X\": 10, \"Y\": 20, \"Z\": 0}, \"Radius\": 150 }]} |\n| unreal_uproperty_CustomPrimitiveData | point/vertex/prim/detail | dict | (Output) Assign custom primitive data on primitive components like StaticMeshComponent, e.g. = { \"Data\": [ 0.1, 0.4 ] } |\n| delta_info | detail | string | (Input) Allow HDA to know the changes, See [he_example_quick_shape.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_quick_shape.hda). |\n| `__shared_memory_path__` | prim | string | (Output) Warning: Must be created by `sharedmemory_volumeoutput` Sop to accelerate landscape output and enable copernicus texture output, do NOT create it manually! See [he_example_terrain_stamp.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_terrain_stamp.hda) and [he_example_kinefx_output.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_kinefx_output.hda) |\n| ... (And Much More) |\n\n| Groups | Class | Explaination |\n| --- | --- | --- |\n| collision_geo | prim | (Input/Output) To separate complex collision mesh from StaticMesh output. Moreover, mesh output support split by s@unreal_split_attr just like instancer output (official feature), rather than using groups to split. |\n| lod_# | prim | (Input/Output) official features. |\n| changed | point\u0026prim | (Input) on input curves and points, mark the elements changed by current operation. |\n\n| Parameter Name Suffix | Parm Type | Explanation |\n| --- | --- | --- |\n| *_point_attribs | folder | On folder parms, is [curve input name/group name] + \"_point_attribs\", to define custom per point attributes, See [he_example_spline_mesh_output.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_spline_mesh_output.hda). |\n| *_prim_attribs | folder | On folder parms, is [curve input name/group name] + \"_prim_attribs\", to define custom per prim/curve attributes, See [he_example_terrain_stamp.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_terrain_stamp.hda) and [he_example_quick_shape.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_quick_shape.hda). |\n| *_byte_value# | int | For Mask Input and mask type = \"byte\", this suffix should add to multi-parm instance, See [he_example_byte_mask.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_byte_mask.hda). |\n\n| Specific Volume Names | Explaination |\n| --- | --- |\n| height | (Input/Output) Heightmap. |\n| Alpha | (Input/Output) Convert to/from unreal Visibility layer. |\n| mask | (Input/Output) Mask Input, also can be output with s@unreal_output_name, allow writing data to mask input. |\n| partial_output_mask | (Output) == 0.0 will skip all this pixel layer data output on this EditLayer. |\n\n| Parameter Tags | Parm Type | Explanation |\n| --- | --- | --- |\n| unreal_ref | string, string-with-menu | Display a string parameter as Unreal Asset Slot, See [he_example_byte_mask.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_byte_mask.hda). = \"2\"/\"import_info\" will import extra info of the assets, such as bounds of the StaticMesh, etc. |\n| unreal_ref_class | string, operator-path | Filter asset list by classes, e.g. = \"Blueprint Texture2D MaterialInterface ^MaterialInstance\". |\n| unreal_ref_filter | string, operator-path | Filter asset list by string, e.g. = \"tree ^street\". |\n| unreal_ref | operator-path | = 1 to set \"import as reference\", meshes will import as points, landscape will import as empty volume that matches the landscape, See [he_example_terrain_stamp.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_terrain_stamp.hda). Also set on input ui panel. |\n| check_changed | operator-path | Set appressive input update import, default is true, set to \"0\" to defer input update import. Also on input ui panel. |\n| num_input_objects | operator-path | (Content Input) Default can import multiple objects to one single input, set to a number to limit the count of the input objects in one single input. |\n| import_render_data | operator-path | (Mesh Input) Default will import nanite fallback mesh, set to \"0\" to import source model (Mesh Description). |\n| lod_import_method | operator-path | (Mesh Input) Import FirstLOD(= 0)/LastLOD(= 1)/AllLODs(= 2), also on input ui panel. |\n| collision_import_method | operator-path | (Mesh Input) Import NoCollsion(= 0)/ImportWithMesh(= 1)/ImportCollisionOnly(= 2). |\n| import_landscape_splines | operator-path | (Landscape Input) Set to \"1\" to import landscape with landscape splines. |\n| landscape_layer | operator-path | (Landscape Input) Combine all EditLayers to import, use this tag's value to specify the layer you want to import, e.g. = \"height Alpha Grass\", See [he_example_byte_mask.hda](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Resources/houdini/otls/examples/he_example_byte_mask.hda). |\n| unreal_landscape_editlayer_* | operator-path | (Landscape Input) \"unreal_landscape_editlayer_\" + [EditLayer Name], like \"unreal_landscape_editlayer_Base Landscape\", set tag value like \"landscape_layer\" tag, e.g. \"* ^Alpha ^Mud\". |\n| curve_color | operator-path | (Curve Input) Specify input curve color, e.g. \"0.9, 0.4, 0.5\" is pink. |\n| import_rot_and_scale | operator-path | (Spline/Curve Input) import p@rot and v@scale point attributes. |\n| import_collision_info | operator-path | (Curve Input) import collided actor object name and collider normal attributes. |\n| unreal_actor_filter_method | operator-path | (World/Actor Input) Filter all actors in current level by Selection(default)/Class(= 1)/Label(= 2)/Tag(= 3)/Folder(= 4). |\n| mask_type | operator-path | (Mask Input) Set Mask Input mask type to Bit(default)/Weight(= 1)/Byte(= 2). |\n| as_toggle | folder(collapsible) | (Parm Attribute) mark collapsible folder parm attribute as int values and upload to houdini, Only for attribute, normal parameter does not support this tag. |\n\n| Environment Variables | Explanation |\n| --- | --- |\n| HAPI_CLIENT_NAME | == \"unreal\". |\n| CLIENT_PROJECT_DIR | Allow HDA to get the current unreal project directory. |\n| CLIENT_SCENE_PATH | Allow HDA to get the current unreal level(map) path. |\n| HOUDINI_ENGINE_FOLDER | Default is \"/Game/HoudiniEngine/\". |\n\n# Blueprint API Reference\n\n[HoudiniNode](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Source/HoudiniEngine/Public/HoudiniNode.h#L104)::\n- static AHoudiniNode* `InstantiateHoudiniAsset`(const UObject* WorldContextObject, UHoudiniAsset* HoudiniAsset, const bool bTemporary = false)\n- void `LoadParameterPreset`(const UDataTable* ParameterPreset)\n- void `SetParameterValues`(const TMap\u003cFName, FHoudiniGenericParameter\u003e\u0026 Parameters)\n- void `SetCookOnParameterChanged`(const bool bInCookOnParameterChanged)\n- void `SetCookOnUpstreamChanged`(const bool bInCookOnUpstreamChanged)\n- FString `GetCookFolderPath`() const\n- FString `GetBakeFolderPath`() const\n- void `ForceCook`()\n- void `RequestRebuild`()\n- void `RequestPDGCook`(const int32 TopNodeIdx)\n- UHoudiniInput* `GetInputByName`(const FString\u0026 Name, const bool bIsOperatorPathParameter = true) const\n- FHoudiniGenericParameter `GetParameterValue`(const FString\u0026 ParameterName) const\n- void `Initialize`(UHoudiniAsset* HoudiniAsset)\n- void `UnlinkSplitActors`()\n- bool `LinkSplitActor`(const FString\u0026 SplitValue, AActor* SplitActor)\n- AActor* `Bake`()\n- void `BroadcastEvent`(const EHoudiniNodeEvent NodeEvent)\n- DELEGATE_OneParam(FHoudiniNodeEvents, const EHoudiniNodeEvent, InNodeEvent) `HoudiniNodeEvents`;\n- ...(And Much More)\n\n// HoudiniNode::SetParameterValues can set every parameter, including Button(Int, numeric value \u003e= 1.0), Multi-Parm(MultiParm, use string value like \"12\"), Operator-Path input(String, multi-objects use \";\" to separate, actor use actor name), etc. Will actually set parameters in next tick!\n\n[HoudiniNodeEvent](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Source/HoudiniEngine/Public/HoudiniNode.h#L21):: `RefreshEditorOnly` = 0, `StartCook` = 1, `FinishInstantiate` = 2, `FinishCook` = 3, `Destroy` = 4\n\n// `Bind Event to Houdini Node Events` in blueprint, recommend used in Editor Utility Widget or Scriptable Tool, rather than used in actor blueprint, as HoudiniNodeEvents is transient!\n\n[HoudiniInput](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Source/HoudiniEngine/Public/HoudiniInput.h#L147)::\n- void `Import`(UObject* Object)\n- ...(And Much More)\n\n[HoudiniInputHolder](https://github.com/AdrianPanGithub/HoudiniEngineForUnreal/blob/HEAD/Source/HoudiniEngine/Public/HoudiniInput.h#L302)::\n- void `MarkChanged`(const bool bChanged = true)\n- void `RequestReimport`()\n- TSoftObjectPtr\u003cUObject\u003e `GetObject`() const\n\n// **MarkChanged**(true) will NOT request HoudiniNode to cook, the **RequestReimport**() will.\n\n**HoudiniMeshComponent**::\n- UStaticMesh* `SaveToStaticMesh`(const FString\u0026 StaticMeshName)","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadrianpangithub%2Fhoudiniengineforunreal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadrianpangithub%2Fhoudiniengineforunreal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadrianpangithub%2Fhoudiniengineforunreal/lists"}