Skip to content

Releases: sideeffects/HoudiniEngineForUnreal-v2

Version 2.0.5 - Houdini 18.5.759

17 Nov 00:50
Compare
Choose a tag to compare

Version 2.0.5 - Houdini 18.5.759

Update 5 of the V2 Plugin.
The plug-in is now linked to Houdini 18.5.759 / HAPI 3.7.3.

Binaries are currently available for UE4.26, UE4.27, UE5.00-EA2.

As H18.5.759 is the last 18.5 production, this release will be the last update for the v2 plugin for H18.5.

The Houdini 19.0 plugin can be found in the Houdini Engine for Unreal repository
https://github.com/sideeffects/HoudiniEngineForUnreal

New Features:

Added support for controlling Nanite settings via attributes (UE5)
"unreal_nanite_enabled" (int, 0 or 1 ) can be used to enable Nanite processing when building a StaticMesh.
"unreal_nanite_position_precision" (int) can be used to set the position precision. Step size is 2^(-Value) cm
"unreal_nanite_percent_triangles" (float [0 1]) can be used to control the percentage of triangles to keep from LOD0. 1.0 = no reduction, 0.0 = no triangles.

Added support for generating landscapes with edit layers
By using the "Generate" output mode, (unreal_landscape_output_mode set to 0).
Edit layer attributes are now supported on heightfield primitives.

It is now possible to set the default directory used in the browse dialog for File parameters by using the "default_dir" Parameter tag.

By default, the plugin now uses the output nodes found in a HDA instead of the display flag.

For landscape inputs, the option to marshall only selected landscapes was added, as well as the auto-selection of landscape components using the asset bounds.
(those two features existed previously in the v1 plugin)
Added an "Update selected components" button, that updates the selected components to the current landscape selection.

Added a new attribute, "unreal_force_instancer", that can be used to ensure that an instancer component is created even if there is only a single instance of a StaticMesh.
If unreal_foliage, "unreal_split_instances" or "unreal_hierarchical_instancer" is set and not 0, then the particular instancer type is created even if there is only a single instance of the StaticMesh.

Added support for the "unreal_bake_name" attribute that can be used to set the name of the object(s) generated during baking. The "unreal_output_name" attribute takes precedence.
When baking Houdini Instanced Actor Components the "unreal_output_name" (or "unreal_bake_name") attribute, if set, is now used to determine the baked instance actor names.
When baking Houdini Instanced Actor Components the instanced object name is now used as the default bake name instead of the HDA actor's name (if the "unreal_output_name" and unreal_bake_name attributes are not set).
Houdini Instanced Actor Components now support the "unreal_bake_actor" attribute when baking: the instanced actors are attached to unreal_bake_actor (which is created as an empty actor or re-used from a previous bake depending on the replacement mode).

Bugs Fixes:

  • Fixed Wrong tooltip on Landscape Input "Update Landscape Data"
  • UE5: Fixed "double cooking" issue when instantiating a new HDA by dragging it on the viewport. Like in UE4, the HDA is only cooked after being dropped.
  • Fixed a regression that caused rebuilds to fail with "Fatal error - invalid".
  • All UHoudiniPublicAPIInput classes are now API exported in the C++ Public API.
  • AHoudiniAssetActor is now public in the C++ API.
  • Fixed setting multiparm parameters via the Public API.
  • Fixed various issues with Modify landscape output mode.
  • Fixed an issue where temporary landscapes were not spawned in the HAC's level.
  • Fixed an issue where HDA would output from hidden or nested subnets.
  • Fixed handling of output data between Display nodes and Output nodes to match Houdini's internal behavior.
  • Fixed a material update issue for tiled landscapes.
  • Fixed an issue where input updates/changes via the public API, especially with curve inputs, would not always take effect.
  • Fixed loading of PDG output regression.
  • UE5: Fixed an issue where bake to actor would fail and not create any baked actors/assets.
  • Fixed a crash when trying to assign object path properties via generic attributes with an invalid path.
  • Fixed unreal_landscape_editlayer_target attribute for Landscape Modify mode.
  • Fixed landscape input targeting using Input0, Input1, etc.
  • Fixed Landscape edit layer transforms in Modify mode.
  • Fixed an issue where HDA would fail to produce an output if the HDA is a SOP/Subnet with the display flag set on an output node, and the "Use Output Nodes is enabled" option is enabled.
  • Houdini to Unreal StaticMesh translation: fixed an issue where duplicate warnings would be logged in Unreal for meshes with invalid face/vertex data, for each invalid index.
  • Fixed landscape tile resizing in Generate mode.
  • Fixed an issue where nested empty folders might crash Unreal or Houdini Engine
  • Fixed output updates / HDA cooking issues that can occur when using Session Sync.
  • Fixed an issue during baking where the baked actors of the work items of a TOP node in the PDG asset link were not shared with the remaining work items on the TOP node.
  • Fixed an issue when processing a spline/curve from Houdini where attributes such as "unreal_output_name" and "unreal_bake_actor" were not always updated when the HDA was cooked more than once, resulting in baking producing incorrect output names/bake actor names.
    If unreal_bake_actor is not set for a spline/curve we now use "unreal_output_name" to determine the bake actor name.
  • Improved how work items of TOP nodes are associated with previous cook/bake data in the PDG asset link.
  • Fixed various cases where after a successful bake the plug-in incorrectly reported that 0 packages were created and/or updated.
  • Fixed an issue where the HDA wouldn't properly switch between editable and non-editable curves.
  • Fixed cleanup issue of Houdini Spline input objects in Houdini sessions.
  • Fixed an issue where data tables with invalid names (spaces or colons) would not marshall data into Houdini Engine.
  • The generated mesh output now properly uses the collision complexity from the Houdini Mesh Generation Properties. A side effect of this is that the default collision complexity behavior is now CTF_UseDefault instead of CTF_UseComplexAsSimple.
  • Fixed issues regarding exported input capsule colliders with rotations.
  • Fixed issues regarding exported input translation/rotation/scale of convex collider collisions.
  • Updated how the plugin tries to detect if an HDA should have a PDGAssetLink created. The plugin now simply looks for non-scheduler/non bypassed TOP nodes in the asset. Previously it would look for TOP nodes inside all the non bypassed TOP/SOP networks, which in some cases drastically increased the HDA instantiation time, even for assets without any TOP nodes.
  • A Landscape's visibility layer is now properly named when sent as heightfield data to Houdini.
  • Fixed an issue where collision presets were not being saved from the plugin settings
  • When removing temporary PDG outputs the plugin now also uses the HoudiniAssetComponent's GUID in the package metadata to determine if the output asset may be deleted.
  • Fixed BSP transform issue.
  • Fixed an issue where nodes for world input actors were always recreated on update.
  • Fixed an issue where landscape input transform changes were not applied correctly.
  • Fixed an issue with output nodes: the plugin now ensures that all data from all output nodes are being output properly.
  • Prevent modifying non-edit layer landscapes when using the Modify Layer output mode.
  • Fixed tracking of transform changes, as well as transform uploading issues, of non-root components in World Input objects.
  • Fixed transform updating for Spline components
  • Fixed an issue where input nodes were not cleaned up in the session.
  • Prevent cooking of HDAs during PIE except for HDAs that are refining geometry.
    We now make sure that the plugin is inactive / not ticking during PIE after refinement is completed.

Version 2.0.4 - Houdini 18.5.696

14 Sep 01:32
Compare
Choose a tag to compare

Update 4 of the V2 Plugin.
The plug-in is now linked to Houdini 18.5.696 / HAPI 3.7.1.

New features:

  • Added support for output nodes.
    When the "use output node" option is enabled, the plugin will now also use output nodes found in the HDA alongside the display node to produce results.

  • The Plugin Settings menu now indicates if a Houdini Engine for Unity/Unreal license is checked out.

  • Added support for material instances on instancers, and for baking instancers with material instances.
    Supported by all instancer baking types except foliage due to foliage material being closely tied to the static mesh.

Bug fixes:

  • Fixed issue where invisible folders were incorrectly detected, resulting in other missing parameters
  • Fixed an issue where float ramp parameters were causing a Slate crash.
  • Fixed an issue where unreal_material_instance was not being applied on landscape outputs.
  • Fixed an issue where having a multiparm operator path and then a regular operator path would mess up the input asset order when you add or remove objects.
  • Fixed an issue where material instances were not being generated upon baking with static meshes and landscapes.
  • Optimized reading of attributes.
  • Fixed a bug preventing changing MeshGeneration properties via the details UI.
  • The plugin now logs detailed connection errors when failing to create a session.
  • Fixed a possible instantiation loop when rebuilding a loaded indie HDA without an indie license.
  • Fixed the Houdini Engine status incorrectly reporting a license failure after attempting to use an indie asset with a commercial license.
  • The plugin is now using the HAPI GetStringBatch() function when retrieving string arrays from HAPI. This is slightly faster than retrieving each string separately.
  • The plugin is now using HAPI's LoadGeoFromFile() function when importing bgeo files instead of manually using a file sop.
  • Fixed an issue where changing asset input type with a cook error wouldn't allow you to do it - This is an issue for HDAs with minimum inputs.
  • Fixed include/accessibility issues with the C++ Public API.

Version 2.0.3 - Houdini 18.5.633

15 Jul 20:48
Compare
Choose a tag to compare

Houdini Engine for Unreal - Version 2.0.3

Update 3 of the V2 Plugin.
The plug-in is now linked to Houdini 18.5.633 / HAPI 3.6.3.

Documentation for version 2.0 of the plug-in is available:
https://www.sidefx.com/docs/unreal/

Binaries are currently available for UE4.26, UE4.25, UE4.24.

Note: These are manual builds of the plugin, which can sometimes cause issues with windows defender/antivirus.
Also, if the plugin fails to start the Houdini Engine session, you may have to enable a custom Houdini location in the plugin settings and point it to Houdini 18.5.633's bin directory.

Installation:

Extract and Copy the "HoudiniEngine" folder to:

  • the "UE4.XX\Engine\Plugins\Runtime" folder for an engine installation.
  • the "UEPROJECT\Plugins" folder for a project installation (the project is recommended for the UE5 version of the plugin)

New features:

  • Added a new plugin setting to select the executable (Houdini/FX/Core/Indie) to be used when opening Session Sync or debug hip files.

Bug fixes:

  • Fixed a bug where the Dirtying of a node, or all outputs, on the PDG asset link could delete non-temp assets used as output objects (ie, when using "unreal_instance").
    The PDG Asset Link now only cleans Houdini generated objects (temp, not baked).
  • Fixed Color Parameter not opening Color Picker.
  • The Houdini proxy meshes now support calculating normals if the output mesh from the HDA did not provide any.
    This fixes render differences with the refined Static Mesh.
  • Fixed the Houdini icon displayed above Houdini ProxyMeshes not always being placed properly.
  • Public API: The various Set*ParameterValue functions now return false only if an error occurs or an invalid value is given.
    Previously the functions also returned false if the parameter already had the new value, which was not the expected behavior.
  • Fixed incorrect material assignment when splitting instancers.
  • The Instancer Translator now stores and uses the original instance indices.
    This fixes a lot of issues where attributes would not be read/applied properly when splitting instancers. (ie, generic attributes, tags..)
  • Fixed an issue where BSP input would invoke a recook at the start of every unreal session. Note that you have to recook and save the map again for this fix to be applied.
  • Fixed an issue where HDAs with editable curves and mesh outputs were not being recooked properly at the start of an unreal session.
  • Use the help URL instead of the help string if it is enabled.
  • Fixed Houdini Materials and Textures being recreated/converted multiple times if the same material was assigned to multiple parts.
    This was easily the case when using packed primitives.
    This greatly improves cook times on assets that generate unreal materials from Houdini materials.
  • Fixed HDAs not recreating/updating their output meshes when only a Part had changed.
    This could be the case for example when just modifying a Houdini material parameter, but not the actual geometry.
  • Fixed an issue where disabling folders and rebuilding would change all the parameters in that folder to their default values.
  • Fixed issue where invisible folders were incorrectly detected, resulting in other missing parameters

Version 2.0.2 - Houdini 18.5.596

03 Jun 22:20
Compare
Choose a tag to compare

Houdini Engine for Unreal - Version 2.0.2

Update 2 of the V2 Plugin.
The plug-in is now linked to Houdini 18.5.596 / HAPI 3.6.2.

Documentation for version 2.0 of the plug-in is available:
https://www.sidefx.com/docs/unreal/

Binaries are available for UE4.26, UE4.25 as well as the UE5.00 early access.

Note: These are manual builds of the plugin, which can sometimes cause issues with windows defender/antivirus.
Also, if the plugin fails to start the Houdini Engine session, you may have to enable custom Houdini location in the plugin settings, and point it to Houdini 18.5.596's bin directory.


New features:

  • Added support for Landscape Edit Layers:
    Output: Heightfield data can now be assigned to landscape edit layers on existing landscapes. Those landscapes need to have the "Enable Edit Layers" option enabled. The "unreal_landscape_editlayer_landscape" prim string attribute can be used to set the name of the target landscape actor. The "unreal_landscape_editlayer_name" prim string attribute can be used to set the name of the targeted edit layer. Finally, the "unreal_landscape_editlayer_after" primitive string attributes can be used to specify the name of another layer that the target layer should be created after.
    Input: If a Landscape with edit layers is used as input, the (final) heightfield and paint layers are still imported as usual, but we will also create heightfields of the individual edit layers using the layer names, prefixed by landscapelayer_. The imported layers will be hidden by default, and the visibility SOP is needed to unhide them.

  • Added a public API to the plugin:
    The API supports instantiating HDAs, setting parameters and inputs, cooking, inspecting and baking outputs of instantiated HDAs via C++, Blueprints and Python.

The API has an example Editor Utility Widget and example Python scripts in the plugin's "Content/Examples" folder.
Documentation for the public API will be added soon to the plugin's documentation.


Bug fixes:

  • Fixed a regression that caused generic property attributes to not always be properly applied to generated Static Mesh Components. (specifically when using RawMeshes).
  • Fixed "unreal_uproperty_CollisionProfileName" not being properly applied in some cases.
  • Fixed crash when using the bake button in the output section.
  • Generic property attributes are now applied on spline outputs.
  • Textures from Houdini Materials are now created only if the corresponding "use" parameter isn't disabled.
  • Reduced the number of HAPI calls when translating Houdini materials.
  • Optimized mesh creation. (removed redundant calls to Physics/NavCollisions functions that are already part of the StaticMesh::Build function)
  • Mesh creation: removed unnecessary attempt to load an unreal material with an invalid path.
  • Fixed World inputs creating invalid input nodes with "Import as Reference" enabled.
  • Fixed "Import as Reference" not triggering input updates when disabled.
  • Fixed issues with multiparm/ramps sync if an HDA's parameter interface had changed. This could cause mix-ups in the multiparms children parameters, and even crashes due to a recursive loop after load/rebuild.
  • Fixed missing output detail UI when an output's node is marked as editable but is not an editable curve.
  • Fixed potential crash caused by the plugin attempting to update rendering while loading a level.
  • Fixed an issue that caused OBJ HDAs with nested OBJ_geo subnets to not display/use the main OBJ geo. This caused some HDAs that used vellum solvers/DOP networks to not properly output their results.
  • Float Vector3 parameters now have spin buttons on the XYZ values.
  • Fixed regression causing mesh sockets to be ignored when they were on a separate part. This was likely to happen when using socket groups on "floating" points (points that are not used by a mesh).
  • Fixed generated mesh sockets displaying the default "Not found" mesh when they had no actor assigned. We only display the default mesh when we failed to attach or spawn the assigned Actor.
  • The output UI for Proxy meshes now displays the number of sockets found in the output.
  • Fixed issue where landscape updates wouldn't immediately update viewport after cooking.
  • Fixed material assignments for Meshes with LODs (when using RawMesh) Before, all LODs used the first material.
  • Fixed materials being mixed up when using multiple point instancers with the "unreal_split_attr" attributes. Only the first instancer had the proper materials.
  • Fixed multiple issues when importing one/multiple landscape proxies via a world/landscape input:
    • The paint layers data were not properly converted to HF masks when converting the landscape to Heightfield.
    • Fixed landscape proxies having an incorrect transform in Houdini.
    • Fixed multiple landscapes not being imported properly with World Inputs.

Version 2.0 - Houdini 18.5.563 - UE5 EA

28 May 23:30
Compare
Choose a tag to compare
Pre-release

Houdini Engine for Unreal - Version 2.0

Binaries for the UE5 early access release.

This version of the plug-in is linked to Houdini 18.5.563.

Documentation for version 2.0 of the plug-in is available:
https://www.sidefx.com/docs/unreal/

To install, unzip and copy the Houdini Engine folder to the "Engine\Plugins\Runtime" folder of UE5.

Version 2.0.1 - Houdini 18.5.532

30 Mar 22:18
Compare
Choose a tag to compare

Houdini Engine for Unreal - Version 2.0

Update 1 of the v2 plug-in.
The plug-in is now linked to Houdini 18.5.532 / HAPI 3.5.2.

Documentation for version 2.0 of the plug-in is available:
https://www.sidefx.com/docs/unreal/


New features:

  • Added support for setting/modifying per-instance custom data on instancer.
    The number of custom floats per instance can be set via the "unreal_num_custom_floats" attribute.
    The custom data itself can be set on the instances via "unreal_per_instance_custom_dataX" attributes, where X is the zero-based index of the custom float data.

  • Improved Houdini Engine Manager Ticking:
    Instead of processing each Houdini Asset Components one by one, in sequential order, per tick, we now additionally process the selected HACS and the active HACs for each tick.
    We also now continue the processing of the HACS when they are not in a "blocking" state.
    This greatly improves the time it takes to cook an HDA, especially when a lot of HDAs are present, in the level, by reducing the amount of ticks needed.

  • Improved Ticking: Added a time limit to HAC processing/ticking. The limit can be modified via HoudiniEngine.TickTimeLimit CVar.

  • New plugin setting: "Prefer Hda Memory Copy Over Hda Source File".
    When enabled, the plugin will always instantiate the memory copy of a HDA stored in the .uasset file instead of using the latest version of the HDA file itself.
    This helps ensuring consistency between users when using HDAs, but will not work with expanded HDAs. The memory copy can be updated by manually reimporting the HDA.

  • Added overrides for Static Mesh Build settings directly on the Houdini Asset Component.
    This allows overriding the default build settings values from the plugin settings per HAC.
    Additionally, this now also allows for changing those properties via generic property attributes (details).
    ie: i@unreal_uproperty_UseFullPrecisionUVs = 1;

  • It is now possible to preset geometry inputs with multiple assets when filling the object path value with multiple asset references, separated by semi-colons.
    Similarly, it is now possible to preset World, Landscape, and Asset types inputs by setting the object path parameter value to actor path/name.

  • Generic property attributes on details can now be applied to the Houdini Asset Component.
    This allows the use of detail attributes to preset some of the HAC's property (Cook Triggers, Auto-bake etc...)

  • It is now possible to decide whether or not a curve input adds additional rot/scale attributes.
    (the setting has been moved from the Houdini Asset Component to the Curve input).
    The default value for this can be changed in the plugin settings (the default is now to not add rot/scale)
    Editable curves no longer add additional rot/scale attributes.

  • Added support for generic property attributes on Landscapes.

  • Added a widget to indicate the status of the Houdini Engine Session to the details panel.

  • Added support for resolving level output paths with {hda_level} token during baking.


Bug fixes:

  • Fixed various issues with the "unreal_bake_folder" attribute:
  • "unreal_bake_folder" is now read from primitive and detail attributes on mesh, curve, instancer and landscape inputs,
    and cached in CachedAttributes on the FHoudiniOutputObject.
  • The specified BakeFolder no longer has to exist on disk to be considered valid.
  • The unreal_bake_folder no longer automatically sets the UI BakeFolder property on the HAC or PDG Asset Link.
  • The bake folder resolution order is now: primitive attribute first, then detail attribute,
    then BakeFolder on HAC/PDG UI and finally the default from the plugin settings.
    Updated the baking code to take this into account.
  • Added support for baking foliage to specified levels or sub-levels using "unreal_level_path".
  • "Bake to actors" now bakes unreal_foliage as foliage.
  • Added support for baking foliage to blueprint as HISMC.
  • Fixed index of out range when baking WC landscape/terrain and curve outputs with PDG
  • Fixed bug causing invalid transforms on Static Mesh Component upon multiple bake.
  • Fixed position offset on Landscapes due to Heightfield tiles having a slightly different size.
  • Baking: CenterActorToBoundingBoxCenter: exclude editor-only components from the bounding box calculation (such as the editor only billboard/sprite components)
  • Added the ability to copy the world transform in CopyPropertyToNewActorAndComponent
  • The component world transform is now set when baking to existing actors for SMC, single instance SMC and curves/spline components.
  • Calculate and cache certain landscape tile properties for the first tile for temp/bake workflow. Reuse cached properties for remaining tiles.
  • Invalidate landscape cache when TOP node is dirtied or all work items are cleared.
  • Cache global landscape data on TOP node after processing the first landscape tile. All subsequently processed tiles will use cached data.
  • Fixed Generic Attributes not being applied on the Houdini Asset Component like in Version 1.
  • Fixed GeneratedDistanceFieldResolutionScale Static Mesh Generation Property not being properly applied before building the Static Mesh.
  • Fix for landscape transforms when generating landscapes using PDG.
  • Fixed possible crash when duplicating HDA that contained multiparms.
  • PDG/commandlet: fixed an issue where CachedAttributes were not set on FHoudiniOutputObjects of PDG meshes imported via the commandlet.
  • HoudiniGeoImportCommandlet/HoudiniGeoImporter now also supports reading unreal_bake_folder from the individual output objects when importing in bake mode.
  • FHoudiniPackageParams: fixed an issue where the {temp}, {bake}, {out} and {out_basepath} tokens had the last sub-directory removed from their value
  • FHoudiniStringResolver: { and } in token values are replaced by __
  • Fixed bug with the "unreal_bake_folder" attribute: It no longer automatically sets the UI BakeFolder property. Its resolution order is now: primitive attribute first, then detail attribute, then BakeFolder on HAC/PDG UI, and finally the default from the plugin settings. The specified BakeFolder no longer has to exist on disk to be considered valid.
  • Fixed the unreal_output_name and unreal_bake_folder being ignored when baking instancers and the attributes were set on the instanced mesh.
  • Instancer baking: when a temp mesh is baked as part of an instancer, and the mesh has a mesh output on the asset, the mesh is baked with package params that are built from its FHoudiniOutputObject, taking into account the unreal_output_name and unreal_bake_folder set on the mesh itself, and not the values from the instancer (this matches what foliage baking is doing as well).
  • Baking: Set PackageParams.bAttemptToLoadMissingPackages to true when baking in EPackageReplaceMode::CreateNewAssets mode. This is needed since FindPackage can return null if a package is not in memory even if it exists on disk. So in such cases, we have to also call LoadPackage to check if a valid package already exists on disk.
  • PDG Commandlet: re-using existing temporary results is problematic when the commandlet is used since the node and geoids can change every time the commandlet imports or re-imports a result. So now if we receive a new work result object (where an existing object is already loaded) via the commandlet we first unload the existing object before loading the new object.
  • HAC output cleanup: simplified the checks for the base/parent component when cleaning foliage in FHoudiniOutputTranslator::ClearOutput to check if the output's owner is a HAC, otherwise try the foliage component's outer.
  • PDG: Fixed a bug where DestroyResultOutputs didn't destroy the output components.
  • PDG: Improved tracking/reuse of previous PDG WorkItem results
  • PDG: When a node has successfully cooked all of its work items, call a function to check that the node's WorkResults array is in sync with the work item IDs from HAPI. This helps in cases where work item counts change, but WORK_ITEM_REMOVED events are not received (such as when doing node rebuilds, manually deleting the node in session sync, or reloading the map where the loaded asset link is then no longer linked to the node in the Houdini Engine session). Currently, this just affects the entries in UTOPNode::WorkResults, the issue where WorkItemTallys are sometimes out of sync has not yet been resolved.
  • PDG: when looking for a FTOPWorkResult object in the TOP Node's array, if an entry with the given WorkItemID does not exist, try to find an entry with matching WorkItemIndex and WorkItemID == INDEX_NONE (invalid entries or entries that had IDs cleared upon save/load of the map).
  • PDG: FTOPWorkResultObjects were given a name that was always the same (for each FTOPWorkResultObject in a FTOPWorkResult) and this name was used to match a FTOPWorkResultObject for re-use. This has now been changed to include the index from the HAPI ResultInfo array to make the name unique. When work item results are processed, any old FTOPWorkResultObjects that were not re-used are destroyed (and have their old output objects removed and destroyed).
  • Baking: PDG: track previous bake outputs using the WorkItemIndex (from HAPI),
    not the array index in the UTOPNode::WorkResults array or the WorkItemID.
    The WorkItemIndex is more stable/deterministic than the other two options.
    Perhaps we can add support for a custom attribute to work items to help with reliably identifying the same item/object in subsequent cooks and bakes.
  • Fixed visibility layer issues with tiled landscapes.
  • PDG Auto-Bake: Use the WorkItemHAPIIndex and WorkResultObjectIndex to identify the work ite...
Read more

Version 2.0

19 Jan 22:13
Compare
Choose a tag to compare

Houdini Engine for Unreal - Version 2.0

Official release of version 2.0.
The plug-in is now linked to Houdini 18.5.462 / HAPI 3.5.1.

Documentation for version 2.0 of the plug-in is available:
https://www.sidefx.com/docs/unreal/


New features:

  • Added back the Static Mesh Build Settings from v1 (tangent/normal generation, lightmap index etc.)
    Their values can be changed in the plugin's settings dialog.
  • Added back the Static Mesh Generation Properties from v1.
    Their default values can be set in the plugin settings, or overridden per HDA in the Houdini Mesh Generation section.
  • Added back the Houdini Engine commands from v1 (Houdini.BakeAll, Houdini.CookAll etc...)
  • Added support for 4.25 on Mac OS.

Bug fixes:

  • Fixed instantiation loop that could lock up the editor when not having access to a license, and attempting to load an HDA without the source .hda file.
  • Fixed Open In Houdini / Open Session Sync not using the proper executable when using the steam version of Houdini Indie.
    We now try to use hindie.steam executable if Houdini wasn't found
  • Fixed button parameters being triggered upon rebuild/recook.
  • Fixed button parameters being triggered on first cook after loading a level.
  • Fixed properties modified by attributes on instanced actors being lost upon baking.
  • Fixed possible crash with foliage instancers after load/new level
  • Fixed HARS/Houdini crashing when using linear and closed editable curves in an HDA.
  • Fixed primitive attributes on LODs (generic attributes, screen size) not being properly set due to invalid Prim/Vertex Index.
  • Fixed the lodX_screensize/unreal_uproperty_screensize attributes being ignored.
  • Restricted the classes displayed in the drop-down menu when using string as asset picker without specifying a class.
    Too many object types were listed, causing the drop-down to be very slow to open.
    Any UObject can still be dragged and dropped on the asset picker.
  • Removed unnecessary Outer checks when baking landscape.
    This should fix Landscape Baking failures when using PDG.
  • Disabled the creation of attributes for material parameters of input meshes.
    This would cause crashes in HARC when a lot of string attributes were sent.
  • Ticking is now limited to 1 tick per frame.
    This reduces game-thread starvation during cook, DXGI_ERROR_DEVICE_HUNG at the end of a cook when the command list is too big.
  • Optimization: Reduced unnecessary/redundant string fetch via HAPI when listing Generic Attributes, fixed slow object copy on some for loops.
  • Added some Insights tag for better profiling overview.

Version2 - Beta2

26 Nov 20:38
Compare
Choose a tag to compare
Version2 - Beta2 Pre-release
Pre-release

Beta 2 Update.

The plug-in is now linked to Houdini 18.5.408 / HAPI 3.5.1.
Source code for Houdini 18.0.597 / HAPI3.4.0 is available on the repository as well.


New features:

Baking:

  • Incremental/Replace baking mode.
    The previous "replace" mode, that baked, then deleted the HoudiniAssetActors has been removed.
    Instead, you can now choose between "incremental" or "replace" baking.
    The incremental bake mode always creates new assets and potentially new actors (depending on unreal_actor_name) and leaves the previous baked assets and components intact.
    The new replace mode always try to replace/update the outputs of the previously baked assets/actors.
  • Auto-bake:
    When enabled, HDA outputs will be automatically baked after a successful cook.
  • Remove Output After Baking:
    When enabled, the HDA's temporary/cook outputs are automatically cleared upon baking.
  • The "unreal_bake_actor" attribute can be used to specify the actor to be used for baking.
    The attribute should be set to the actor name, assumed to be in the "unreal_level_path" level if set, otherwise in the current level.
  • The "unreal_bake_outliner_folder" attribute can be used to specify the world outliner folder to be used when baking to Actors.
  • Added the option to recentre components/actors upon baking.
    The center of the Actors bounding box center will be used for the baked actors. (while keeping its world position).
  • Bake a blueprint actor per output:
    When baking to blueprints, a blueprint will be generated per output actor, in the same way that "Bake to actors" works.
  • Added support for baking spline output to UnrealSplineComponent
    Also added support for "unreal_level_path", "unreal_bake_outliner_folder" and "unreal_output_actor" when baking curves.
  • PDG baking also supports the above workflows where feasible.

DataTable input:

Data Tables can now be imported as attributes point clouds via geometry inputs.
The data table attributes all start with "unreal_data_table_", followed by their column index and name.
The data table's type (RowStruct) is set in the "unreal_datatable_rowstruct" attribute.

Blueprint:

Added support for curve inputs.
Curve inputs can now be used in the BP editor when using Houdini Asset Components.

Foliage:

FoliageType assets can now be directly instantiated as Foliage instances when using attribute instancers.

World Inputs:

Added support for HoudiniAssetComponents.
This allows connecting multiple Houdini Assets to a single input.
Houdini Asset Actors selected in a World IN behave similarly than when using asset inputs:

  • cooking the input HDA will trigger a cook of the downstream one,
  • cooking an HDA will cause the instantiation of its inputs HDA etc.

Added a plugin setting to set the default spline resolution value for World inputs.

PDG:

  • Updated how the Autoload flag worked, so that it now acts like in the Unity plugin:
    When set to true, work items are loaded as they are cooked.
    Toggling it after the cook does not load previously cooked work items anymore.
    The previous behavior was confusing and could result in unexpectedly having to wait for many items to finish loading/importing.
    Buttons to manually load/unload work items results on TOP Nodes and TOP Networks have been added to the PDG Asset Link UI.
  • Added support for curve output.

Attributes:
FObjectPathProperties and FFloatInterval/FInt32Interval properties are now supported by generic attributes.
This allows properties like "CullDistance" to be modified via attributes.


Bug fixes:

  • LANDSCAPE: by default, "unreal_level_path" is now empty.
    This makes the default level for baking to be the landscape proxy/tile's world, unless the unreal_level_path attribute was set to a non-empty string.

  • LANDSCAPE: Force resampling instead of padding when the landscape sizes aren't "unreal friendly"
    This helps in limiting the overlapping issues caused by the added padding values on the border when the landscape tiles were not properly sized in Houdini.

  • LANDSCAPE: Fixed the "unreal_material" attribute not being applied to landscapes.

  • LANDSCAPE: Fixed regression causing "unreal_hole_material" being ignored on Landscapes.

  • LANDSCAPE: Fixed landscape tiles not being properly created (except for the first one) when their sizes differed.

  • LANDSCAPE: Fixed unexpected "the file already exists" issues.

  • LANDSCAPE: Fixed bug with overlapping tiles/tile updates.

  • LANDSCAPE: Fixed issues causing generated tiles to have an incorrect world position.

  • LANDSCAPE: Ensure that shared landscape actors transforms are always updated.

  • LANDSCAPE: Fixed coordinate alignment issue when calculating tile locations.

  • LANDSCAPE: Fixed issues when updating tile layers caused by a difference in normalization.

  • LANDSCAPE: Fixed landscape transform/location issues.

  • LANDSCAPE: Offset landscape to compensate for section alignment.

  • OUT: Fixed a bug that caused the ProxyMeshComponent to not display any Proxy after loading a level.

  • OUT: Fixed crash when refining proxy mesh

  • OUT: Fixed crash when unregistering components due to log calling GetPathName()

  • OUT: Proxy mesh refinement:
    The proxy mesh is now saved before refinement to avoid "save dialog" prompts.

  • OUT: Foliage, Fixed the foliage UI not updating upon adding a new foliage type.

  • OUT: Fixed temporary foliage instances not being cleared when clearing the HDA's outputs

  • IN: The revert button on world inputs' spline resolution is now functioning properly.

  • IN: The "unreal_level_path" primitive attribute is now also set when importing mesh/spline components.

  • IN: When importing mesh, spline, or landscape components/actors, we now also create the "unreal_actor_path" primitive attribute.

  • IN: Fixed crash caused by empty material parameters on mesh inputs.

  • IN: Fixed the initial visibility for the "default" Input Curve.

  • PARAM: Fixed various issues when editing ramps parameters with cooking in 'paused' mode.

  • PARAM: Fixed bug when removing elements in MultiParms.

  • PARAM: Fixed issues with Multiparm Blocklist when using object references/string values.

  • PARAM: Fixed Multiparm Blocklist instance deletion.

  • ATTR: Fixed bug when changing "tuple" uproperties (i.e.: vector, color, etc.) via the generic attributes.
    The values were incorrectly read from the generic property attribute value arrays.

  • ATTR: Added PostEditChange calls when setting UProperties via generic attributes.

  • ATTR: Ensure Object class matches UProperty class before assignment.

  • ATTR: Fixed crash when attempting to access tuple string attributes.

  • BAKE: Fixed an issue causing instancers split via the "unreal_split_attr" to not bake to separate blueprints

  • BAKE: split instancers: read "unreal_bake_actor" and "unreal_level_path" per split.

  • BAKE: Material translator: fix issue where generated name metadata is blank.
    When baking this would result in all textures of a material having the same name without the texture specific suffix.

  • BAKE: The world outliner folder naming used when baking is now more consistent.

  • BAKE: Fixed instancers not using the proper bake names.

  • BAKE: Fixed foliage instance components incorrectly detected and baked as Instanced Static Mesh Components when baking to actors.

  • BAKE: Foliage meshes are now baked using their resolved output names.

  • PDG: Added support for UnrealSplineComponents output

  • PDG: Updated UI and tooltips

  • PDG: Fixed a crash when disabling the TOP node filter when there were no results in the TOP node combo box.

  • PDG: Fixed the enabling/disabling of TOP node load work items, show work items, and cook / dirty buttons.

  • PDG: Fixed bugs with TOP Network and Node combo boxes.

  • PDG: Fixed crash caused by the TOP Network combo tooltip

  • PDG: Fixed incorrect log message format string

  • PDG: Fixed Combobox not working without rebuilding the HDA upon loading a level.

  • PDG: Indent TOP Network and TOP Node names by depth
    On the PDG AL UI, the Network and Node names are now indented by depth
    (to make it easier to visualize the node graph in the Combobox).

  • PDG: Handle nodes with child nodes.
    Add up work items from child nodes. Set the parent node state based on the states of the child nodes.
    Disable the autoload and visibility check nodes on parent nodes, must be set on child nodes individually.

  • PDG: Fixed issues when launching the commandlet.

  • PDG: Fixed issues looking for children nodes in subnets.

  • PDG: Added additional logging for PDG events

  • PDG: Don't allow calling cook on nodes/nets that are already cooking.
    This can result in incorrect work item counts in the UI.

  • PDG: Handle cases where work output actors are manually deleted.

  • PDG: Bake to correct world outliner folder
    When re-using PDG output actors in a bake, set the correct world outliner folder.

  • BGEO/Async import commandlet: Fixed crashes when using the async import commandlet.

  • BGEO: Added support for curves when importing .bgeo files.
    Curves are imported as a Blueprint actor with USpline- or UHoudiniSplineComponents.

  • BP: Fix issue where initial cook caused by input component would throw away all parameters.

  • BP: Added initial support for RampParameter.

  • BP: Spline input fixes.

  • BP: Remove stale input objects.

  • BP: Ensure parameter changes don't cause recook while a cook is already in progress.

  • BP: Fixed Blueprint + ramp parameter issues.

  • BP: Prevent component templates from processing parameter updates while paused.

  • V1: Fixed poss...

Read more

Version2 - Beta1

01 Oct 16:58
Compare
Choose a tag to compare
Version2 - Beta1 Pre-release
Pre-release

Beta 1 Update.

The plug-in is now linked to Houdini 18.0.597 / HAPI 3.4.0.


New Features:

Blueprint Support (experimental):

It is now possible to use Houdini Asset Components in the Blueprint Editor.
This lets you preset and use Houdini Digital Assets in Blueprint Actors.
Changing parameters on the Houdini Asset will automatically update all placed instances of that Blueprint.

After adding the Houdini Asset Component, the Houdini Asset it uses can be selected in the details panel.
This will cook the HDA, and display its parameters interface.

Currently, only Static mesh and Instancer outputs are supported, and only geometry inputs are available when using HDAs in the BP Editor.

Backward compatibility with Version1:

The plugin is now backward compatible with version 1.
When loading a level that contains Houdini objects made with version 1, the plugin now tries to convert the V1 components, parameters, inputs and outputs to their v2 equivalents.

Some HDAs might need to be rebuilt after the conversion for their parameters and inputs to be displayed properly by the v2 plugin.
Certain types of parameters or inputs are currently not properly upgraded to v2 (for example Editable curves or Handles).

The conversion of the legacy data is still in progress and will be improved upon in the future.

The legacy conversion can be enabled or disabled in the plugin settings.
If disabled, legacy objects will simply be ignored when loading the level.
The legacy settings also have an option to automatically rebuild converted Houdini Asset Components.

This was added to facilitate migrating a version 1 project to version 2.
To do so, we highly recommend duplicating (or at least backing up) your project first.
The version 1 plugin should then be deleted from the Plugins/Runtime folder before copying the version 2 files.
The conversion of the legacy objects will be done automatically upon loading the levels.

PDG Async Import (experimental):

The PDG Asset Link now has the ability to use an asynchronous importer commandlet to import WorkItem outputs once they are ready.

The commandlet communicates with the PDG Asset Link via a message bus, and automatically imports the BGEO files from output work items, creating uassets.
After a successful import, the commandlet notifies the PDG asset link which will then instantiate the uasset in the level.

Asynchronous import can be enabled/started/stopped via the "Work Item Import Settings" entry in the Houdini Engine menu.
The PDG Asset Link will display the status of the async importer in its details UI when using it.

BGEO Import Commandlet (experimental):

The commandlet that is used for Asynchronous import of a PDG Graph's work item outputs can also be used independently, to automatically import BGEO files to an unreal project.

The -watch= command-line argument can be used to place the commandlet into directory watching mode.

The BGEO import commandlet supports importing to bake path, by reading the "unreal_bake_folder" and "unreal_output_name" name attributes when in "bake" mode.

  • To watch a directory for new files and import them as uassets to the HoudiniEngine temporary path:
    <editor_exe> -run=HoudiniGeoImport -watch=
  • To watch a directory for new files and import them as uassets to bake paths (respecting "unreal_bake_folder" and "unreal_output_name"):
    <editor_exe> -run=HoudiniGeoImport -bake -watch=
  • To import a single .bgeo file as a uasset to the HoudiniEngine temporary path:
    <editor_exe> -run=HoudiniGeoImport
  • To import a single .bgeo file as a uasset to the bake path (respecting "unreal_bake_folder" and "unreal_output_name"):
    <editor_exe> -run=HoudiniGeoImport -bake
  • To display/log the help:
    <editor_exe> -run=HoudiniGeoImport -help

Curve Output:

It is now possible to output Spline Component from an HDA.
To do so, curves in the HDA need to be marked using the "unreal_output_curve" primitive attribute (value set to 1).
You can also control if you want the spline to be linear/closed using the "unreal_output_curve_linear" and "unreal_output_curve_closed" primitive attributes respectively.

Session Sync - Viewport Sync:

When using Session Sync, you can decide to link the Houdini and Unreal viewport via the "Sync Viewport" entry in the Houdini Engine menu.
You can decide to sync both viewport, or have unreal control the houdini viewport, or the opposite.
Viewport Sync currently only syncs the cameras' positions and orientations, and not their FOV, so the two views will not be 100% identical.


Bug Fixes:

  • Generic UProperty Attributes now properly handle nested UStructs and Array properties.
    This fixes crashes when attempting to edit a property stored in nested struct or arrays via a generic property attribute (unreal_uproperty_)
    Attribute tuples can now successfully be used to set array UProperties.
  • Fixed Scale Y/Z values being swapped (Issue #44)
  • Fixed PackBeforeMerge, KeepWorldTransform being applied only to the first input mesh found in a BP or Actor. (Geo/World Input) (Issue #46)
  • Fixed crash when importing some StaticMeshes (Issue #47)
  • Changing Mobility, Visibility, or Hidden in Game on a HAC is now properly propagated to child components.
  • Auto-save is disabled when HDAs are being cooked or are processing outputs.
  • Fixed baking ProxyMeshes.
    When baking a HoudiniAssetComponent that uses Proxy Meshes, first refine the meshes to StaticMesh before baking.
  • Fixed Parameter Details UI bug when cooking is paused.
  • Fixed Ramp Parameter Details showing tooltips inside the curve editor.
  • Fixed crash when using FMeshDescription to output meshes.
  • We're using SleepNoStats() instead of Sleep() in the Scheduler, this avoids stat messages accumulating and allocating too much memory when the editor hangs.
  • Fixed landscape input's "mesh" and "points" modes not functioning/creating anything on the Houdini side.
  • Fixed FHoudiniEngineBakeUtils::CopyActorContentsToBlueprint returning nullptr instead of false.
  • The PDG Asset Link now handles instanced foliage destruction correctly.
  • Fixed bug causing incorrect work item numbers being displayed in the PDG Asset Link UI.
  • Improved PDG Asset Link UI updates.
  • Added undo/redo support to PDG asset link UI.
  • Fixed various Linux/Clang build issues.
  • Fixed Actors baked by the PDG Asset Link being destroyed/disappearing after reloading/restarting the engine.
  • Fixed crash when a PDG work result actor name is already in use.
  • PDG asset link: Fixed work item counts and node states not being reset upon Rebuild.

Version 2 - Alpha3.2

12 Aug 21:09
Compare
Choose a tag to compare
Version 2 - Alpha3.2 Pre-release
Pre-release

Unreal: Version 2

Alpha 3.2 update - hotfix

The plug-in is linked with Houdini 18.0.532 / HAPI3.3.11.

New features:

  • Attributes values used for splitting instancers into multiple components (via the unreal_split_attr attribute) are now read as strings instead of ints. This allows splitting instancers using either int, float, or string attributes, and not just int attributes.
  • Added support for forcing the creation of Hierarchical Instanced Static Mesh Components when instancing.
    To do so, simply add the "unreal_hierarchical_instancer" (value 1) to the instancer.
  • Session sync: First pass at adding viewport sync (still a work in progress).
    This allows synchronizing the unreal and Houdini viewport when using Session Sync.

Bug Fixes:

  • Added back missing sub-asset selection dialog when instantiating multi/versioned HDAs.
  • Fixed regression that caused Houdini/HARS to crash upon updating a world input...
  • Fixed regression that caused crashes when using Brushes in a world input.
    (potentially, when using anything that used the default material in a world input)
  • Fixed crash when converting attribute values due to bad logging/string handling.
  • When importing landscape layers to Houdini, their values are now converted from [0 255] (uint8) top [0 1] (floats), instead of being normalized from [min max] (uint8) to [0 1] floats. This also fixes NaNs when importing flat layers.
  • Fixed "output templated geos" displaying all nested templated geos, including those in nested HDAs.
    We now only display templated geos that are children of the main HDA node, the output OBJ node, or the output display SOP.
  • Curve Input: Fixed "Ghost/Broken" curve components appearing when spamming the add button.
    We now check if the HDA is being cooked when clicking the "Add" button.
  • Fixed bad initialization warning (CachedSurfaceHash) when packaging the game project.