I’m new to UE 5.4 and would like to know if you guys could help me please with how to approach the following issue. I have a big model of a machine, very detailed, around 150mb; you can see screws, lids, handlebar,… when I place the model into a decent landscape and try to pack it and export it to Meta Quest 3. The goal is to be able to run the app directly on the VR headset.
I have to say it is pretty challenging. One of many issues (most likely) I have is that if I import the model into the project, it is quite slow, and I’m not able to export it to the VR-Goggles.
How and should I first make the model smaller? The model has around 21Mio polys.
Hi @fiat50086, that is a challenging position to be in. Optimizing complex scenes is its own art and science, but it’s made double difficult by targeting a very low end device (mobile renderer pushing many pixels from two distinct viewpoints).
Since you’re just learning, maybe you should start by tethering the headset to your PC instead of targeting a standalone app. That would make your requirements easier and your iteration speed much faster to learn.
21M polygons will be too much for a standalone VR app. If you’re importing a Datasmith CAD model for this machine, you can choose tessellation settings on import. You can also use a Visual Dataprep recipe to handle import logic and apply simplification more easily. If you’re just working with an FBX, then you’ll want to clean it up and reduce it using the Modeling Mode or the original DCC. I haven’t targeted mobile VR in a long time, but you’re probably aiming for a million or fewer polygons on screen at any time.
Polygons are only one aspect of this. You also want to reduce the number of unique objects in your scene, which each create “Draw Calls”. So merge anything that doesn’t need to move independently, and duplicate or instantiate identical meshes instead of having a bunch of unique assets clog up the scene.
Also for targeting mobile VR, you should assume you’re not allowed to use dynamic shadows. See how far you can get without them first. That one change will dramatically affect your frame rate.
Make sure to record and benchmark your performance all along the way so you know you’re making progress with these changes!
Hi Stephen, thanks a lot for the long answer! It helps me understand the process a bit. I’m also considering uploading the model onto Sketchfab and loading it through the web application since the goal is to view the model in a more realistic scenery/environment on the VR-Goggles. I’m not sure if my export process is the best out of SolidWorks toward fbx and furthermore UE 5.4
However some things come to mind, maybe it also would be
Does it help if I don’t combine the model, so not everything is rendered, when only viewing the model from far away. In a different topic I’ve saw people slicing the model.
I haven’t used the Sketchfab viewer in VR. It is probably more lightweight than a whole Unreal Engine application, but a heavy model could still affect performance. High poly counts and high draw calls (material IDs and separate meshes) could still be problematic. I think you just need to test that.
If your entire model can reasonably be viewed from one position, I think it’s generally best to combine as much as possible. In my experience, draw calls are much more impactful than polygons these days. It’s true that you can leverage culling to not render the meshes that are behind other meshes or behind the camera, but most Solidworks models I’ve seen have been somewhat small in size and have a lot of pieces. If it was a city-scale CAD model, I’m less likely to suggest merging it all together. But something the size of a motorcycle or computer, I would merge anything that doesn’t need to explicitly move around separately.
Nanite is exclusive to UE and exclusive to the supported platforms. I don’t think standalone VR apps (Android) support it yet, but check the latest release notes. Sketchfab will not have Nanite. For the most part, if you can enable Nanite, then you should. But always test a before and after to check the performance results.