Custom UCX collision won't be recognized in UE 4.14

The problem object

I have more or less complex mesh which represents an island. It looks like this when in Blender:

The mesh is manifold (water-tight), has no holes and is triangulated so it should be convex in all parts of its surface.

The goal

I’d like it to have precise collision so I rename island object as Island_01, duplicate it and rename the duplicate to UCX_Island_01.
I’ve read docs like FBX static mesh pipeline, also many related questions, for example [this one][2], and [this as well][3] however meshes are already named as needed (should be).

How object is exported

Both objects are exported into one .fbx file with these exporting options:

131293-unrealengine_island-ucx-trouble.jpg

Importing into Unreal Engine

While importing in UE 4.14 Auto Generate Collision option is disabled as well as One Convex Hull Per UCX. If One Convex Hull Per UCX is enabled collision is present but is not accurate enough. Due to the fact the player is expected to explore the island and walk on that surface it should stay on it without flying over it.

The Problem

As a result though there isn’t any collision on mesh (nothing is shown while [reviewing collision][5] and player falls down through the meshes).

Additional

  1. What might prevent this from working is that mesh has ~ 1,5 km wide and has around 16k faces. Though UCX method didn’t work even with simpler geometry I was interested if UCX meshes have some kind of limit for geometry.

  2. I’ve read on FBX static mesh pipeline:

The UE4 FBX import pipeline uses FBX 2014. Using a different version during export may result in incompatibilities.

Could it be that fbx export settings prevent this from working ?
Why UCX collision doesn’t work in this case ?

The .fbx file itself with the objects mentioned for further examination.


Edit

The collision on this mesh works if changing Static Mesh Settings > Collision Complexity to Use Complex Collision as Simple and its quality is good. Although as I’ve learned from Unreal Engine Collision tutorial this is one of ways to add auto generated collision to in-game object and it has nothing to do with UCX collision (so it will work without mesh called as that UCX_ etc.) I’d like to know why doesn’t UCX collision work in this case.

Did you ever find a solution to this? Was there something that was preventing the UCX_ mesh from being used?

I haven’t run precise tests but I believe the mesh is not non-intersecting, i.e. it has self-intersecting (non-manifold) areas left after I used Displace modifier while creating the mesh. If testing on simpler geometry UCX collision was working for me just fine

Ah, not the same problem as me then. Thanks anyway!

(I’m coming to the conclusion that I’ll just export two meshes, a simple one that I’ll use for collision and a visual mesh too. I’ll set the collision mesh to use complex collision, then set the collision mesh as invisible and with collisions on, and invert that for the visual mesh. It would save a few steps if I could just name the collision mesh with UCX_ and avoid this faff, but it doesn’t look like I’m going to be able to do that for some reason.)

You could as a new question with providing (simplified or part of if needed) the object which is enough to reproduce behaviour and some details for the context; probably there is non-manifold geometry or something else.

I think you might be misunderstanding the meaning of ‘convex’. A convex mesh is one where
From a dictionary definition,

  1. (of a polygon) having only interior angles measuring less than 180°.

Basically, for a 3D mesh, there must be no two points on your mesh where you can draw a line between those points and the line leave the interior of your mesh. So even if the mesh is manifold and without holes, if there are dips or valleys in the surface then it’s not convex (a requirement of UCX_ collision)

It works in the editor when you check the box to use Complex Collision because then it will use every single mesh face as a collider. That’s why it’s both very accurate, and expensive. For your island, it would mean it’s calculating the collision based on 16k faces.

You have a couple of options that are more optimized than just clicking the box.
One, make a convex hull that can be your UCX_ mesh. This isn’t going to give you what you want, because it will remove all the valleys on the island, and be inaccurate.

Another option that would be more optimized than checking the ‘Use complex as simple’ box, would be to cut out only the faces that you will let the player walk on, and export that seperately, place it where your island is, and check ‘Use complex’ on that mesh. So you’re only calculating collision on faces that you actually need to.

Like this:

Yes, for some reason I didn’t think geometry of the mesh is bad due to self-intersecting areas left after Displace modifier in Blender. Anyway looks like third option is to rebuild mesh without that non-manifold geometry (by providing less displacement) and then using UCX collision.

I have had this issue before. What I did was after you make your complex mesh with all its peaks and valleys etc, duplicate the entire mesh. So you have 2 identical meshes sitting on top of each other. Then for the duplicated mesh, highlight as many faces as you reasonably can while still maintaining a “polygonal” shape. So for a valley, the floor of the valley could likely be all selected, and separated from the “sides” that are the mountains etc but each mountain side would be its own polygonal shape. And for each rectangle or box you can create you “separate selected faces” into a new object. That object you then name UCX_01…UCX_02…etc. This way you can optimize the number of collisions for your mesh. It is tedious but it allows you to keep the complexity without having to make a collision out of each face of your mesh.