Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test #175

Open
wants to merge 16 commits into
base: Houdini18.0-4.26
Choose a base branch
from
Open

Conversation

Taikatou
Copy link

@Taikatou Taikatou commented Dec 8, 2021

No description provided.

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 setting 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 a HDA.
- Fixed primitive attributes on LODs (generic attributes, screensize) 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 specify 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 failing when using PDG.
- Disabled the creation of attributes for material parameters of input meshes.
  This would cause crashes in HARC when a lot of 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.
- Updated FHoudiniStaticMeshGenerationProperties to fix Linux build issues.
Houdini 18.5.532 update.

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 allow 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 propery attributes on details can now be applied to the Houdini Asset Component.
  This allow 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 inputs 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 propery 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 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 geo ids 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 item and result object to bake.
- PDG Auto-Bake: when auto-baking also apply the selection option (All vs Selected Network vs Selected Node)
- Baking: Actor names: fixed an issue where if unreal_bake_actor is set to test_1, incremental baking would generate test_2 (if test_1 already exists)
  instead of test_1_1. Also use our own loop instead of MakeUniqueObjectName, to generate more consistent and continuous ranges (MakeUniqueObjectName increases a counter per class).
- Baking PDG: we now pass in all the actors baked in the current bake run all the way through to work result object baking (previously an empty array was always passed to BakePDGWorkResultObject)
- PDG: Fixed the work items tallies reporting incorrect numbers.
- FHoudiniPackageParams: removed bAttemptToLoadMissingPackages: in CreateNewAssets mode we now always check if a package exists on disk (using LOAD_Verify) if FindPackage returns nullptr.
- Removed redundant for loops when updating generic attributes on instancers.
- Fixed the "unreal_output_name" attribute being ignored on landscapes.
- Fixed geometry input's defaults value (object path inputs) being ignored.
- Fixed potential endless cook loop when using Session Sync.
- Fixed a lost session failing to be reported if HARS/Houdini crashed/was shutdown before instantiating an asset.
  This could lead to an instantiation loop.
- Fixed the Houdini Engine status sometimes being incorrectly reported.
- Fixed bugs when using foliage instancers:
  Previous foliage instances where not always properly cleaned up when directly instancing FoliageTypes,
  or when switching from foliage instances to "normal" instances.
- Updated the path that is used to find the houdini executable on Linux for session sync, tested on Ubuntu 20.04 and Houdini 18.5.499.
- Updated the path that is used to find the houdini executable on Mac for session sync.
- Fixed a crash/memory leak with UHoudiniFloatRampCurve and UHoudiniColorRampCurve from the parameter details when there is
  an attempt to the destroy the owning UHoudiniParameter or its world (while the curves are still in the root set) 
  or if the curves are destroyed but the SCurveEditors still reference them as CurveOwners.
- Fixed an issue where static mesh material slots were appended over and over when recooking HDAs that output collision meshes with materials.
- Fix up complex collision properties when outputting a static mesh.
- The first invisible complex collision meshes is treated as implicit, i.e. it will not be explicitly created as a component.
- Fixed extra "ghost" curve appearing with HDAs that contained closed editable curves, either upon duplication, or first cook after loading a level with the HDA.
- When rebuilding an HDA editable output curves (HoudiniSplineComponent) are now marked as changed/trigger update,
  so that the curve on the Houdini side is updated/kept in sync with the edited values in Unreal.
- Fixed Multi-parm instances being replaced with the first instance when rebuilding/cooking a loaded HDA actor. (when opening a map and cooking for the first time, for example)
- Fixed possible crash (Bad MeshDescription) when an HDA generates invalid output mesh data.
- MeshTranslator: Fix crash if main Static Mesh didn't have a BodySetup.
- FHoudiniOutputTranslator::UpdateLoadedOutputs: don't skip closed editable
  output curves that are identified as meshes: HAPI treats closed curves
  as meshes not curves.
- Fixed issue where RawMesh LODs would get incorrect material assignments.
- Fixed bug preventing the modifications of RVT via generic uprop attributes
- Generic Attributes: Fixed bug when assigning single value to array property
- Generic Attributes: Added log infos when properties are incompatible or when we cannot find valid ValuePtrs for the UProperties.
- Recook now also resend the input objects to Houdini.
- Added persistent notification mechanism to prevent notification spamming during cooking.
- PDG Auto-bake: we now auto-bake a node once all work items of the node are
  complete (but we still support baking additional dynamically generated work
  items automatically if they come in later)
- World Inputs now detect added/removed components on an actor used as a world input and trigger an update.
- Fixed world inputs auto-starting the Houdini Engine Session when a camera object was selected.
- Merged PR#101 on behalf of dearamy: Fix Misusing of Y and Z
  This fixes incorrect terrain output scale.
- Merged PR#122 on behalf of eliiik: Fix Houdini Spline visualization rotation and scale error
  This fixes invalid Houdini Spline rotation/scale when the Actor has been scaled/rotated.
- Fixed HARS/Houdini crashing when sending additional rot/scale attributes on editable curves.
- Fixed Editable curves not displaying the proper curve points upon instantiation if the editable curve was set with 2 points or less.
- Prevent crash when the user tries to set per instance custom data via generic attributes.
  We now skip the attribute and log a warning that indicates the proper attributes to use.
- The PhysicsState, RenderState and Bounds of the HAC and its children are now properly updated upon recook.
- Fixed HoudiniAssetComponent being ignored by editor ray tracing due the HAC not having a SceneProxy in the SceneManager.
  This fixes issues like surface snapping not working with Houdini Generated Static Meshes.
  This only applies to "refined" static meshes, the temporary HoudiniStaticMeshComponents still don't have collisions.
- Fixed folders sometimes loosing their selected (tabs) / expanded (collapsible) by improving the reuse of parameter objects.
  The lookup table (by name) that we use to find previously created parameters can now store multiple parameters,
  as it is sometimes possible to have two parameters with the same name (ie: Folder/FolderList).
- Fixed crash when importing Landscapes via the PDG Asset Link.
  This was caused by FHoudiniEngineUtils::GetOuterHoudiniAssetComponent() not returning an HAC if it wasn't the direct outer of the object.
  For PDG outputs, the output's outer is actually the PDG Asset Link, not the HAC.
- Fixed crash when attempting to visualize a curve with no CV points but with display points.
- Fixed curve inputs loosing their type/method/closed/reversed properties after loosing/restarting the Houdini Engine Session.
- Added missing includes/forward declarations for NoPCH/Non-Unity builds
Houdini 18.5.563 update.

The plug-in is now linked to Houdini 18.5.563 / HAPI 3.6.1.

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

-------------------------------------------------------
Changes:
-------------------------------------------------------

- 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 unecessary 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 a HDA's parameter interface had changed. This could cause mixups 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.
- Added missing new files.
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/

-------------------------------------------------------
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 a 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 (point 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 display 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.
- Updated license file
Update 3 of the V2 Plugin.
The plug-in is now linked to Houdini 18.5.633 / HAPI 3.6.3.

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
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.
Update 5 of the V2 Plugin.
The plug-in is now linked to Houdini 18.5.759 / HAPI 3.7.3.

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 UYnreal 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 arte 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 component 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 behaviour.
- 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 curve.
- 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 behaviour 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 network, which in some case 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 node: the plugin now ensures that all data from all output nodes are being output properly.
- Prevent modifying non-editlayer 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants