On this page |
Requirements ¶
The Unreal Chaos integration works requires Unreal Engine 4.26 with Chaos integration in order to be compiled. UE 4.26 without Chaos enabled will still generate GeometryCollection components, but will not have Chaos physics enabled.
Geometry Collections outputs ¶
Geometry collection outputs are generated from packed primitive with a non-zero unreal_gc_piece
primitive attribute. It is recommended to use the Voronoi fracture node along with the the unreal_gc_piece attribute for a good balance between speed and results.
It is required that the set of all unreal_gc_piece values are sequential. In other words, if there exists a unreal_gc_piece
with value X, then there must exist a unreal_gc_piece
with value (X - 1).
It is recommended to fracture your geometry in Houdini to the highest damage threshold using the Voronoi fracture or any tool of your choosing. Afterwards, apply unreal_gc_piece
to each group with a value corresponding to your desired clustering level.
Below is an example of an HDA that takes a cube, fractures it into three different levels, and then outputs it for the Plugin to process.
This is what is contained within the attribute wrangle of the network:
This is the result of the HDA:
Observe that the output contains 3 levels (not including Level 0), as expected.
If your HDA output contains more than one GeometryCollection, then you must add the attribute unreal_gc_name
with a unique name for each of your desired GeometryCollections. This will split the GeometryCollections according to the name.
Fracturing and Clustering ¶
In addition to adding manual fractures as done above, you can also use a combination of RBD fracture and RDB cluster nodes. The unreal_gc_cluster
is a primitive attribute that Specifies clustering index, to group multiple pieces of the same level to different groups in the GeometryCollection.
Full control over the exact GeometryCollection hierarchy is not supported at this time (But is often times not needed).
Below is an example that takes a cube, fractures it using RBD fracture, and then randomly cluster groups of pieces using RBD cluster:
The unreal_gc_piece is initialized to 1 in the beginning:
After clustering, update the level of the clustered pieces:
Pack using the “name_gc” (because the name attribute get overwritten by the RBD nodes):
The result is a GeometryCollection with 2 levels, with two clusters of pieces (the pieces in level 2), and two pieces that are not part the cluster (the pieces in level 1):
Attributes ¶
Houdini to Unreal ¶
This table lists special attributes to set in an HDA and the plugin recognizes when you translate the Houdini data to Unreal outputs. You can setup these attributes on your assets to control and override some properties and behaviours of the generated Unreal outputs. See Attributes and Groups for more information.
Geometry Collections ¶
Setting up these attributes on your asset allows you to control and override some properties and behaviours of the generated Unreal outputs.
Attribute Name |
Owner |
Type |
Description |
---|---|---|---|
|
prim |
int |
Specifies the primitive as a GeometryCollection piece. The value represents the clustering level, or 0 to disable this behaviour |
|
prim |
int |
Specifies the primitive clustering index, to group multiple pieces of the same level to different groups |
|
detail |
float |
Specifies the clustering damage threshold |
|
detail |
int |
Specifies the collisions collision type. 0 = Implicit-Implicit, 1 = Particle-Implicit |
|
detail |
int |
Specifies the collisions implicit type. 0 = Box, 1 = Sphere, 2 = Capsule, 3 = Level Set, 4 = None, 5 = Convex |
|
detail |
int |
Specifies the collisions min level set resolution |
|
detail |
int |
Specifies the collisions max level set resolution |
|
detail |
int |
Specifies the collisions min cluster level set resolution |
|
detail |
int |
Specifies the collisions max cluster level set resolution |
|
detail |
int |
Specifies the collisions min level set resolution |
|
detail |
float |
Specifies the collisions collision object reduction percentage |
|
detail |
int |
Sets the collisions mass as density. 0 = unset, 1 = set |
|
detail |
float |
Specifies the collisions mass |
|
detail |
float |
Specifies the collisions minimum mass clamp |
|
detail |
float |
Specifies the collisions collision particles fraction |
|
detail |
int |
Specifies the collisions maximum collision particles |
|
prim, detail |
string |
Specifies the name of the GeometryCollection. Used to differentiate multiple GC outputs |
Geometry Collections - Unreal Engine 5 ¶
These attributes are specific to Unreal Engine 5. UE5 Allows you to specify multiple “Size Specific Data”. In addition, each element of “Size Specific Data” allows you to specify an array of collision shapes.
Attribute Name |
Owner |
Type |
Description |
---|---|---|---|
|
detail |
int |
Specifies the clustering connection type. 0 = Point implicit, 1 = MinimalSpanningSubsetDelaunayTriangulation, 3 = PointImplicitAugmentedMinimalDelaunay |
|
detail |
The max size of the Size Specific Data. Required to specify multiple Size specific data |
|
|
detail |
The collision damage threshold for each Size Specific Data |
|
|
detail |
Specifies the clustering damage threshold. The |
|
|
detail |
Specifies the collisions implicit type. 0 = None, 1 = Box, 2 = Sphere, 3 = Capsule, 4 = Level Set. The |
|
|
detail |
Specifies the collisions min level set resolution. The |
|
|
detail |
Specifies the collisions max level set resolution. The |
|
|
detail |
Specifies the collisions min cluster level set resolution. The |
|
|
detail |
Specifies the collisions max cluster level set resolution. The |
|
|
detail |
Specifies the collisions collision object reduction percentage. The |
|
|
detail |
Specifies the collisions collision particles fraction. The |
|
|
detail |
Specifies the collisions maximum collision particles. The |
|
|
detail |
Specifies the collisions margin fraction. The |
The X
in the attributes that contain _X
represents the index of the size specific data. Additionally, some of the collision attributes can either be a value or an array of values. An element at index i represents the value for the collision object at index i
.
A value is identical to a value array of size one with only that value in it for backwards compatibility.
If you do not add the _X
suffix, then it will be equivalent to index 0.
If you want to have more than one size specific data, then it must be specified using the unreal_gc_collisions_max_size
attribute. For instance, the sequence of attributes unreal_gc_collisions_max_size = {1234, 12345}
and unreal_gc_collisions_collision_type_1 = {0, 1}
means that you have a GeometryCollection with two size specific datas, and the second size specific data has two collision shapes: One with a collision type of Implicit-Implicit, and the other with a collision type of Particle-Implicit.
Unreal to Houdini ¶
This table lists special attributes which are created by the plug-in when importing data from Unreal to Houdini. See Attributes and Groups for more information.
Geometry Collections ¶
All output attributes in the above table are imported into Houdini in addition to the attributes below:
Attribute Name |
Owner |
Type |
Description |
---|---|---|---|
|
detail |
string |
The path name of the geometry collection |
|
detail |
string |
Path to the actor that contained the input data/should be generated. Only available if Actor is specified as input |
|
detail |
string |
Path to the level in which an actor should be generated or which contained the input data. Only available if Actor is specified as input |