Hi!
Since I started learning and using Unreal, I always managed to find answers to my questions through YT/forums. But since a few months I’m facing something that seems really complex … so this is my first time posting here
Context
I’m working on a third person game, using UE5EA. As a little robot in a initiation quest, you’re exploring a mysterious snowy planet, finding your way through temples full of forgotten artefacts.
I’m working with a 3D artist who’s sculpting assets mainly in VR using Adobe Medium. He’s making huge caves that look like human faces, and we would like the player to be able to explore them, and ideally climb them.
Issue
The models are so huge and the shapes complex that I just don’t know how to manage precisly the collision. I used the “complex to simple” mode but, most of the time, the player will step in the air or walk through the mesh.
In the meantime, I just prevent the player from getting too close to the mesh with a classic 26Dop collision, as I have to continue the dev of the game.
Potential solutions?
Doing the collision all by hand in UE? I have like 15 meshes to process, that would be a pain…
Generating a custom simplified collision mesh through Houdini? Why not, but I don’t touched this soft yet and I’m afraid the problem will remain
Decomposing the mesh in small parts so UE can easily manage the collision? How? What the workflow could be?
I’m working on my own for the dev and I’m having trouble seeing a viable and effective solution at the moment. I feel like I’m missing something or have to review our production pipeline.
Do you have any clues or tips in this kind of situation?
In general yes, you will most likely need to create your own custom collision beyond what Unreal does automatically if you want more in depth interaction with these than simple blocking. The shape is simply too complex for an automated in-engine solution of any kind I would think.
That doesnt mean there aren’t ways to automate it though. If this were my object, I would probably first take it into Zbrush, use Zremesher to get a slightly simpler but clean topology, and then decimate it to somewhere within reason, and see if that works. Maybe a little manual touch up in Blender if the decimation creates some weird areas which it usually does.
Houdini is well capable of doing a similar process if thats what you have available, but I think if you want decent collision for these youre going to have to get stuck in to a package that can handle it outside Unreal. As I said though, that shouldnt mean manual creation for the entire thing, in the most absolute sense.
Using ZRemesher sounds like a good starting point. Actually I tried it at the beginning of the project for other smaller objects, but I’m not really familiar with the interface yet and I quickly leaved it for Blender QuadRemesher plugin, even if it wasn’t that good, probably because of the bad topology. As you said, I should probably explore a little bit more what ZBrush can offer!
Look at this bad boy. Triangles everywhere…
The mesh is around 350/400m high, for a 1,70m character
Blender’s remeshing tools aren’t terrible from the tests I’ve done with them, but I would definitely rate Zbrush as the best of the bunch that I’ve used.
Zremesh + Decimation Master is a winning combo for quickly getting really high res geometry into something more usable (as long as its static). Really well built Houdini graphs can probably get close to it as well, but thats a lot more time investment if youre not already very adept in Houdini.
Blender just struggles once the vertex count passes a certain point, but Zbrush handles it easily. But definitely be prepared for a bit of touch up of the remeshed geometry in Blender if you find that strange vertex overlaps and such happen in your automatic remeshing, usually they come out great 99% of places and then wonky in one or two difficult spots. Then again even with wonky spots it might work OK for your purposes as is, give it a try and see what happens.
Thanks a lot dude! I watched a couple videos showing ZBrush optimization capacities and I definitely think it’s the way to go. I’ll follow your tips and will keep this post updated with the meshes improvments as soon as I have the time to be back on
I see you have Blender open in the image above; are you editing these models in Blender? If so, you can generate custom collision natively there relatively easily. You would just make a proxy mesh by modelling them as meshes as a simplified version of your object and then use the correct naming convention/import settings to bring it in as custom collision. Since the collision can be very simple shapes this would probably take me no more than 20 minutes for the kinds of shapes I see in your screenshot above.
This is something that the person who is sculpting the models should be doing though probably (at least for me I consider this to be part of the modelling process, since it’s easy to set up the proxy mesh while you are making the objects). It’s not a problem to use several different boxes as well for this, so that’s probably what I would do here. Link below for how to do this (it is timestamped):
You could also simply cut up your mesh into smaller convex sections and use a decimate modifier to simplify the pieces. However this will work best if your mesh has good topology, which I’m not sure you have here. Generally if you are sculpting I think it’s a good idea to retopologize, otherwise you can end up with issues like what you’ve run into here where working with the mesh becomes annoying because of bad topology.
Re-topo is annoying but a lot of tools for remeshing etc. work best when your topology and edge flow make sense. If you have a billion random tris I don’t think you can be surprised when modifiers make a mess of your mesh
ZBrush is just AMAZING! It transformed a 93K triangles mesh into a clean 25K polys one without killing any details! The soft freezed for 5/10mn during the process but wow it was a 1click magic process! So back to UE5 I imported the model following @Krabworks link settings, and then the character was perfectly walking on the surface, it did the job perfectly, thank you both!
I also understand that Nanite seems to mess up the mesh collision, even when I’m using a custom collision mesh. So I had to desactivate it. Maybe I missed something? I feel like Nanite is a really interresting technology especially if we want to keep highly detailled models using optimized proxys for collision and ideally I’d like to keep it enabled.
I still have a few questions :
Why Unreal re-triangulate the mesh after the import? Is it the way UE have to manage meshes to render them? I still have 25K vertices but then the 25k polys turned in 50k triangles
With Nanite desactivated, do I have to worry about optimization and LODs? It would save me some time to not …
How detailled collision meshes can be? If I have 30 similar objects, won’t the load be to heavy? I never experienced it yet so I have no ideas of the usual load standards,I’m running on a medium/high end desktop pc and I’d like to keep it playable for more modest computers
A triangle is the basic building block of all 3D geometry. Even if you think youre looking at a quad, internally whatever is rendering it is typically turning it into two triangles and handling it that way. Its one reason why you have to be careful when baking normal maps and moving quad meshes between different applications, because if one application triangulates it in one direction and the other app goes the other way, it can break your normal map.
Its up to you whether you need or want LODs, but its generally recommended outside all but specific edge cases. If you go into the static mesh settings, look for “Number of LODs” and set a number, then click Apply, Unreal will auto generate some for you. That might be good enough, might not be - depends on the object. With Nanite enabled, thats obviously taken care of in a different way.
Collision detail is really a case by case thing. “As detailed as you need in order to create the collision effect you need, and not much more” might be the easiest way to put it. It depends on the object, what you want to do with it, what is colliding with it in what way, what else is in the scene and so on. Ultimately you just want it to be as simple as it can be while still providing the spatial information you need for whatever gameplay thing it is there to do.
Has anyone mentioned that you don’t really need collision if all you can do from the player perspective is climb?
Your climb system can use visual traces to position the character without requiring collision.
Ofc, if you then have a glider or something similar you could need collision either way. It depends on how the rest of the game works and if anything (projectiles?) is allowed to impact or not.
Great to know, wasn’t aware of that! This game is a bit on pause atm, but the idea was to be able to walk along the big face cliff, climb or walk to some nose, eyes or ears holes in the mesh, that lead you to an inner cave. The difficult part was to walk in this cave, which is VR sculpted and quite high poly, while having the correct collision for the character.
Except for remeshing the whole mesh on C4D Zremesher, which is quite unprecise for the collision, I still don’t know how to correctly manage this
If collision is required, better meshes/sculpting is really the only solution.
Maybe Voxel collisions could help; if the sculpting process generated a special matching voxel defininition of the collision mesh or similat.
This would be up to whatever DCC is used to generate the mesh anyway.
Essentially you have to use better programs meant to do the work you are in fact trying to do rather than hacking away with other tools that aren’t meant for it.
Or you have to combine multiple tools.
For instance, in the last year or 2…
Blender got better at a lot of things after the last round of funding (and worse on a few others).
Pixologic was bought out and Zbrush is now essentially the same as it was - still awsome, but didn’t see any improvements.
Autodesk is doing really good with Fusion360.
Houdini went free to use.
Its very likely that any of these updated tools could provide a better solution to remeshisng than they did a year, or even a few months ago…