Hi,
I need some sort of advice/direction regarding a technical challenge I have:
How to use large number of complex meshes into UE wile keep a descent FPS?
How to display large number of complex meshes in VR mode?
Just a bit of background: I work for a 3D mapping company and we generate complex 3D city models from aerial photogrammetry.
We do this kind of things: http://aero3dpro.com.au/adelaide_CBD (check the interactive WebGL viewer).
Just to give you an idea the all 3D city model is made of 650 individual mesh tiles with a total size of 32 Gb.
An individual OBJ or FBX tile size is between 70Mb and 115Mb and includes 3 to 4 texture files (8192x80192). We are talking about 1M faces per tiles. All buildings, trees, cars, street furniture are part of a continuous mesh.
In the geospatial industry, many software have been developed to deal with this kind of heavy data by using adaptive quadtree or quadtree LoD systems. so we know it is possible to get a very smooth interactive experience.( like the WebGL viewer in the link above).
Most of the videos in this channel have been captured from real-time viewer using adaptive quadtree LoD:https://www.youtube.com/c/aerometrexau
Many viewers can also display the data in stereo with adaptive quadtree LoD 3D model such as this Cesium viewer: https://sample.aero3dpro.com.au/NightCliffe_2016/App/index.html
What I would like to achieve is to get those 3D models to work smoothly in Unreal Engine and specifically in VR mode.
This is were I’m stuck.
Unreal Engine can load FBX or OBJ with up to 4 simple LoD.
I’ve managed to load a large dataset and can fly around interactively in game mode but the FPS is not good enough.
&t=3s (this video has been captured with matinee).
When I ingest the simple FBX LoD tiles I need to setup the right texture manually for each LoD. it is a long process but at the end, it works.
However visualizing even one unique mesh tile in VR mode is not working properly and the movements create a very jittery view due to the complexity of the mesh (around 1M faces at the highest LoD). it works only with simpler mesh tiles.
I have a demo dataset with 6 tiles in FBX format with simple LoD, quadtree LoD and adaptive tree LoD.
https://s3-ap-southeast-2.amazonaws.com/perma-bucket-aerometrex/aero3dpro_Adelaide_CBD_sample/aero3dpro_FBX_10simple_LoD.zip
https://s3-ap-southeast-2.amazonaws.com/perma-bucket-aerometrex/aero3dpro_Adelaide_CBD_sample/aero3dpro_FBX_4LoD_embedded.zip
https://s3-ap-southeast-2.amazonaws.com/perma-bucket-aerometrex/aero3dpro_Adelaide_CBD_sample/aero3dpro_FBX_adaptive_quadtree_LoD.zip
https://s3-ap-southeast-2.amazonaws.com/perma-bucket-aerometrex/aero3dpro_Adelaide_CBD_sample/aero3dpro_FBX_quadtree_LoD.zip
There is a definite bridge to be build between the geospatial industry and the gaming industry.
interactive geospatial viewers can deal with complex data but lack game engine development tools and VR capability (and are not open-source for the majority) while game engine such as UE can’t deal with complex mesh data but have amazing gameplay, effects and VR capabilities.
I’m not an programmer so I apologize if the questions seem inaccurate or if I’m missing the point:
Could this challenge be won if it was possible to load FBX with an adaptive quatree LoD into UE?
What would be the process to implement an FBX loader with up to 10 quadtree or adaptive quadtree LoD insteal of 4simple LoD?
How much would it cost to rewrite an FBX loader? Are there any other UE components which would need to be modified?
Any suggestions/ideas/comment are more than welcome.