Houdini Engine for Unreal
 All Files Pages
Collisions

There are multiple ways you can set up colliders with Houdini Engine for Unreal:

The default behavior uses per faces collisions (Complex Collisions) but it is also possible to create Convex Hulls collisions (Convex Collisions) for your geometry or to generate simple primitives collision geometry (Simple Collisions).

For all of these cases, the colliders are created by assigning your geometry (or parts of it) to groups. The corresponding colliders will be generated according to the naming convention used by this group. The name of a group will decide which type of collider it creates, and if the collision geometry will be invisible or not.

Complex Collisions

This is the default collision behavior for Houdini Engine. When geometry is assigned to a group using the collision_geo or rendered_collision_geo** prefix, a new Static Mesh Component will be created for this group and marked as Collidable.

This type of collider uses per-face collisions, and uses the UseComplexAsSimple Collision complexity. This results in accurate collision calculation on the object, but as the TriMesh is used for the calculation, the cost for complex collisions is higher than simple or convex collisions, especially if your geometry has a high number of faces. Physics simulation is also not possible with this type of colliders, as only "raycasting" collisions are.

The geometry will be invisible if it belongs to a group starting with the collision_geo prefix, and visible if it belongs to a group that starts with the rendered_collision_geo prefix.

Unreal_CollisionComplex.png
from left to right: no group (no collider), collision_geo (invisible collider), rendered_collision_geo (visible collider).

Convex Collisions

Simplified collision geometries are important for optimizing collision detection in game. Convex hulls can be generated and used as simple colliders in Unreal. These colliders will use the default collision complexity, and can be used both for physics simulation and collision.

To uses these, you need to assign your geometry to a group starting with the collision_geo_ucx or rendered_collision_geo_ucx prefix. A convex hull will be calculated from the group's geometry and set as a simple collider on the Asset Actor.

In a similar way as the complex collisions, the geometry assigned to the group will be visibile if the group name starts with rendered_collision_geo_ucx and invisible if the group name starts with collision_geo_ucx.

You can use the default automatic convex hulls decomposition used by unreal if you use the ucx_multi suffix on your group name ( collision_geo_ucx_multi ). A few seconds will be required to compute the convex hulls.

Unreal_CollisionUCX.png
from left to right: rendered_collision_geo, rendered_collision_geo_ucx and collision_geo_ucx.

Simple Collisions

It is also possible to generate simple colliders (box, sphere, capsule or K-DOPs). These colliders will use the default collision complexity, and can be used both for physics simulation and collision. They work using the same grouping convention as the previous collider types.

For simple colliders, you need to group your geometry in a group starting with collision_geo_simple or rendered_collision_geo_simple (if you want that part to be also visible) and a simple collider will be generated upon cook.

By default, a DOP26 collider will be created, but you can specify the type of the desired colliders by appending it to the group name: box, capsule, sphere, kdop10X, kdop10Y, kdop10Z, kdop18 or kdop26.

For example: collision_geo_simple_sphere_xxxxx or rendered_collision_geo_simple_yyy_kdop10X

Unreal_CollisionSimple1.png
From left to right: rendered_collision_geo_simple_box, rendered_collision_geo_simple_sphere and rendered_collision_geo_simple_capsule.
Unreal_CollisionSimple2.png
From left to right: rendered_collision_geo_simple_kdop10x, rendered_collision_geo_simple_kdop10y and rendered_collision_geo_simple_kdop10z.
Unreal_CollisionSimple3.png
From left to right: rendered_collision_geo_simple_kdop18, rendered_collision_geo_simple_kdop26.

Level Of Detail Collisions

If your HDA has multiple Level of Details , you can decide to use one of the LOD level for collisions, to do so, simply add the unreal_uproperty_LODForCollision detail attribute, and set its value to the LOD level you want to use for collisions.

Even if the HDA doesnt define complex or simple colliders, complex collisions will be activated and the specified LOD level used for collisions.

Splitting

Splitting can be used to add multiple colliders to a single object. By assigning different collision groups to different parts of a mesh, you can have multiple colliders on the generated mesh . This can be useful for non convex geometry like an arch or a door frame, as using a single collider for these type of geometry will prevent the player from going through them.

Collision geometry will be split only if their collision group names are different. In order to get two simple box colliders on a mesh for example, you will need to name them collision_geo_simple_1 and collision_geo_simple_2.

Unreal_CollisionSplit.png
Single convex collider on the left against four convex colliders on the right.
The four convex colliders on the right were created by assigning part of the arch to 4 ucx collision groups with different names:
collision_geo_ucx_farleft, collision_geo_ucx_midleft, collision_geo_ucx_midright and collision_geo_ucx_farright

Naming Conventions

Following is a list of all the possible group name prefix and their associated collider:

Prefix Collider
collision_geo Complex Collision (invisible).
rendered_collision_geo Complex Collision (visible).
collision_geo_ucx Convex Hull Collision (invisible).
rendered_collision_geo_ucx Convex Hull Collision (visible).
collision_geo_simple Default Simplified Collision (invisible).
rendered_collision_geo_simple Default Simplified Collision (visible).
collision_geo_simple_box Box Simplified Collision (invisible).
rendered_collision_geo_simple_box Box Simplified Collision (visible).
collision_geo_simple_sphere Sphere Simplified Collision (invisible).
rendered_collision_geo_simple_sphere Sphere Simplified Collision (visible).
collision_geo_simple_capsule Capsule Simplified Collision (invisible).
rendered_collision_geo_simple_capsuleCapsule Simplified Collision (visible).
collision_geo_simple_kdop10x 10DOP-X Simplified Collision (invisible).
rendered_collision_geo_simple_kdop10x10DOP-X Simplified Collision (visible).
collision_geo_simple_kdop10y 10DOP-Y Simplified Collision (invisible).
rendered_collision_geo_simple_kdop10y10DOP-Y Simplified Collision (visible).
collision_geo_simple_kdop10z 10DOP-Z Simplified Collision (invisible).
rendered_collision_geo_simple_kdop10z10DOP-Z Simplified Collision (visible).
collision_geo_simple_kdop18 18DOP Simplified Collision (invisible).
rendered_collision_geo_simple_kdop18 18DOP Simplified Collision (visible).
collision_geo_simple_kdop26 26DOP Simplified Collision (invisible).
rendered_collision_geo_simple_kdop26 26DOP Simplified Collision (visible).

Anything that is appended to the collision prefix will be used to split the colliders, and can be used to create multiple collision geometry for a single mesh.