Skip to content

Commit 1e50105

Browse files
committed
Houdini Engine for Unreal - Version 2.0
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
1 parent 6cfc93a commit 1e50105

File tree

77 files changed

+7354
-3181
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+7354
-3181
lines changed

HoudiniEngine.uplugin

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"FileVersion" : 3,
33
"FriendlyName" : "Houdini Engine v2",
4-
"Version" : 18050462,
5-
"VersionName" : "v2.0 - H18.5.462",
4+
"Version" : 18050532,
5+
"VersionName" : "v2.0 - H18.5.532",
66
"CreatedBy" : "Side Effects Software Inc.",
77
"CreatedByURL" : "http://www.sidefx.com",
88
"DocsURL" : "http://www.sidefx.com/docs/unreal/",

LICENSE.md

+93-24
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,93 @@
1-
2-
Copyright (c) 2021
3-
Side Effects Software Inc. All rights reserved.
4-
5-
Redistribution and use of in source and binary forms, with or without
6-
modification, are permitted provided that the following conditions are met:
7-
8-
1. Redistributions of source code must retain the above copyright notice,
9-
this list of conditions and the following disclaimer.
10-
11-
2. The names Side Effects Software and SideFX may not be used to endorse or
12-
promote products derived from this software without specific prior
13-
written permission.
14-
15-
THIS SOFTWARE IS PROVIDED BY SIDE EFFECTS SOFTWARE `AS IS' AND ANY EXPRESS
16-
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17-
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
18-
NO EVENT SHALL SIDE EFFECTS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
19-
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
20-
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
21-
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
22-
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
23-
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
24-
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1+
ALPHA AND BETA SOFTWARE
2+
CONFIDENTIAL DISCLOSURE AGREEMENT
3+
Revised 10/2011
4+
This Agreement is made today between Side Effects Software Inc., a corporation
5+
incorporated under the laws of Ontario, Canada and having a place of business
6+
at 123 Front Street West, Suite 1401, Toronto ("Side Effects Software") and
7+
you ("Beta Tester").
8+
9+
BACKGROUND:
10+
11+
1. Side Effects Software is in the business of developing and marketing certain
12+
computer graphics software and related materials.
13+
2. Beta Tester, in order to permit Side Effects Software in refining and
14+
perfecting such software and materials, has expressed an interest in testing
15+
certain alpha/beta versions of software more fully described in Schedule A
16+
(the "Software & Materials").
17+
3. Each Animator, as an employee, contractor or agent of the Beta Tester, may
18+
have access to the Software & Materials and perhaps to other confidential
19+
information of Side Effects Software such as trade secrets, business or
20+
product plans, which might be disclosed during the course of the software
21+
testing (the "Confidential Information").
22+
4. Side Effects Software wishes to ensure that the Software & Materials are not
23+
used by Beta Tester for purposes other than alpha/beta testing and that they
24+
are not disclosed to any other party without the prior written consent of
25+
Side Effects Software;
26+
27+
NOW THEREFORE, in consideration of this background and the provision of
28+
such materials to Beta Tester and other good and valuable consideration (the
29+
receipt and sufficiency of which are hereby acknowledged), Beta Tester agrees
30+
with Side Effects Software as follows:
31+
32+
1. Side Effects Software hereby grants to Beta Tester on the terms set out
33+
herein a personal, non-transferable and non-exclusive license to use the
34+
object code version of the Software & Materials for its internal operations
35+
on its computers. Any commercial exploitation of the Software is at the
36+
Beta Tester's risk. Beta Tester's right to use the Software & Materials is
37+
limited to those rights expressly set out in this Agreement. Beta Tester
38+
shall carry out testing of the Software & Materials in accordance with such
39+
reasonable instructions as Side Effects Software may provide to it from time
40+
to time.
41+
2. Beta Tester shall use all reasonable efforts (which shall consist of at
42+
least the same level of diligence as it uses to protect its own proprietary
43+
information and trade secrets) to protect the confidentiality of all
44+
Software & Materials, including all product features, and other Confidential
45+
Information of Side Effects Software that may come to the attention of or
46+
knowledge of Beta Tester as a result of undertaking such testing. Beta
47+
Tester shall not discuss product features or show the Software & Materials
48+
to anyone. Beta Tester shall not copy, publish, disclose, attempt to
49+
recreate the source code version of the Software or make any use other than
50+
as contemplated herein of any of the Software & Material or any such
51+
Confidential Information. For the purposes hereof, Confidential Information
52+
shall not include any information that:
53+
- At the time of such disclosure, is generally available to the public
54+
through no fault of Beta Tester;
55+
- Was in possession of Beta Tester without any obligation of confidentiality
56+
prior to the date hereof and was not acquired directly or indirectly from
57+
Side Effects Software; or
58+
- Was received by Beta Tester after the date hereof from a third party who
59+
imposed no obligation of confidentiality and who did not acquire any such
60+
information directly or indirectly from Side Effects Software.
61+
3. Beta Tester shall not communicate or otherwise disclose to Side Effects
62+
Software during the term of this Agreement any confidential or proprietary
63+
information of any other third party.
64+
4. In accepting this Agreement the Beta Tester agrees to test and evaluate the
65+
Software & Materials and to report all problems, concerns, deficiencies and
66+
suggestions for improvements to Side Effects Software. A representative from
67+
Side Effects Software may be contacting Beta Tester weekly for a report.
68+
5. Upon completion of such testing or at any time on the request of Side
69+
Effects Software, Beta Tester shall promptly return to Side Effects Software
70+
all copies of the Software & Materials, as well as any Confidential
71+
Information, then in its possession or control and shall, if requested,
72+
provide Side Effects Software with a certificate signed by an authorized
73+
representative of Beta Tester to such effect from an officer of Beta Tester.
74+
6. All Software & Materials, as well as any Confidential Information, is
75+
provided "as is". Side Effects Software makes no representation, warranty or
76+
guarantee with respect to any such material and assumes no liability for the
77+
use and performance of any alpha and beta software. Side Effects Software
78+
reserves the right to alter all aspects of the Software and Documentation
79+
from one alpha or beta version to the next, including the user interface,
80+
screen displays, fonts and functionality.
81+
7. The Software will timeout and cease to function one month after its build
82+
date, regardless of when it was downloaded or installed.
83+
84+
SCHEDULE A
85+
SOFTWARE AND MATERIALS
86+
The following Software and related Materials are bound by the attached Alpha
87+
and Beta Software
88+
Test Agreement:
89+
Software: Houdini Engine for Unreal
90+
Version: Version 2.0 - alpha
91+
92+
You must accept these terms and conditions to install the Software and
93+
Materials.

Source/HoudiniEngine/HoudiniEngine.Build.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@
3232

3333
/*
3434
35-
Houdini Version: 18.5.462
36-
Houdini Engine Version: 3.5.1
35+
Houdini Version: 18.5.532
36+
Houdini Engine Version: 3.5.2
3737
Unreal Version: 4.26.0
3838
3939
*/
@@ -47,7 +47,7 @@ public class HoudiniEngine : ModuleRules
4747
{
4848
private string GetHFSPath()
4949
{
50-
string HoudiniVersion = "18.5.462";
50+
string HoudiniVersion = "18.5.532";
5151
bool bIsRelease = true;
5252
string HFSPath = "";
5353
string RegistryPath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Side Effects Software";

0 commit comments

Comments
 (0)