I Want to Improve the Performance of Japan 3D Building Data in VR

Following the steps in the link below, I specified the Ion Asset ID for Japan 3D Building Data in Cesium for Unreal to display PLATEAU, and when running it in VR, the performance drops to around 20-29 fps, making it sluggish.

Similarly, when specifying the Ion Asset ID for Google Photorealistic 3D Tiles and running it in VR, the performance is around 36-38 fps, which is smoother compared to Japan 3D Building Data.

When profiling with Unreal Engine’s stat RHI, I noticed high usage of Texture 2D Memory and Vertex Buffer Memory.

Could you please advise on any settings or improvements that could allow Japan 3D Building Data to achieve 36 fps or higher?

Below are my development environment and PC specs.

Development Environment

  • UE5.3
  • Cesium for Unreal v2.8.0
  • CesiumGeoreference Settings
    • Origin Latitude: 35.658581
    • Origin Longitude: 139.745
    • Origin Height: 65.0

PC Specs

  • OS: Windows 10
  • CPU: Intel i7-9750H 2.60GHz
  • Memory: 32GB
  • GPU: NVIDIA GeForce RTX 2070

Hi @RxRDevelop,

I’m not sure why Google Photorealistic 3D Tiles would be performing smoother than Japan 3D Building Data. Could you include screenshots of your World Outliner so we can see what objects are in your level?

I should mention that we recently discovered a bug in UE 5.3 and UE 5.4 where Unreal was creating more texture coordinate buffers than necessary. We’ve already published a fix for this to our Github repository, and we expect to include it in the next release. I hope it results in notable performance improvements for your use case. :smile:

@janine
Thank you for your response.

I am attaching screenshots of the editor, including the World Outliner, when displaying Google Photorealistic 3D Tiles and Japan 3D Building Data.
The screenshots are taken with stat fps, stat GPU, and stat RHI executed.

■Google Photorealistic 3D Tiles

■Japan 3D Building Data

Even when not running in VR, just displaying it in the editor shows that the values for Texture 2D Memory and Vertex Buffer Memory are more than double when using Japan 3D Building Data compared to Google Photorealistic 3D Tiles.

I will also share the project in a zip file just in case. (I have removed the Cesium for Unreal plugin version 2.8.0 that was placed in the Plugins folder.)
CesiumPlateauVR53.zip (260.0 KB)

Thank you as well for letting me know about the texture coordinate buffer bug in UE 5.3 and UE 5.4.
However, since this issue occurs in the same UE 5.3 based on the difference in terrain data, I have a feeling that the problem might be with the terrain data itself.

Hi @RxRDevelop,

Thanks for the detailed response! I’ve written an internal note for our team to investigate this more deeply as soon as we can.

One thing I notice about your setup is that you’re draping Bing Maps Aerial on both datasets. Could you share with us what the performance looks like without that overlay? Simply because it’s another variable in the equation, and it’ll be good to confirm if it’s affecting the numbers at all. Thank you!

@janine
Thank you for your prompt response and for escalating the investigation internally.

As requested, I’ve disabled the Bing Maps Aerial overlay and attached a new set of screenshots for both the Google Photorealistic 3D Tiles and Japan 3D Building Data, running without the overlay.
■Google Photorealistic 3D Tiles

■Japan 3D Building Data

When run in VR, Google Photorealistic 3D Tiles was 36-38 fps and Japan 3D Building Data was 26-38 fps
Google Photorealistic 3D Tiles seems to be a bit more stable. Is it because Japan 3D Building Data has almost 4 times more stat RHI Triangles drawn?

Also, when the Minato-ku LOD2 URL, which was previously included in the list of 3D Tiles provided by PLATEAU, was displayed in Cesium, the number of triangles drawn was lower than that of Google Photorealistic 3D Tiles, and the performance was around 36-45 fps in VR.

■Minato-ku LOD2

Does Cesium’s system select and display the most detailed LOD 3D Tile for a specific area?
Is it possible to specify and display the LOD of PLATEAU with Japan 3D Building Data displayed in Ion Asset ID?
I understand that PLATEAU has LOD0 to LOD4.

Hi, @janine

I wanted to kindly follow up on a question I posted in the forum over a week ago, as I have not received any response yet. I understand the team may be busy, but I would really appreciate any guidance or assistance with my questions.

Thank you in advance for your time and help!

Hi @RxRDevelop, I apologize for the delay.

Thank you for profiling without the raster overlay. It may seem like a small change, but removing raster overlays can make a difference in load time.

I had a chance to run your project myself on an older version of the plugin, and I can confirm I could see a difference in memory. I’m still not sure why one dataset takes more memory than the other; I would have to look more deeply into the specifics of each tileset.

However, whenever I use latest update of Cesium for Unreal, I see much less Vertex Buffer Memory being used by the Japan 3D Buildings dataset. Here’s the stats I’m seeing, for reference:

Google Photorealistic 3D Tiles:

Japan 3D Buildings:

Please let me know if the latest version, v2.9.0, improves the performance of your application. In the meantime, I’ll ask internally about Japan 3D Buildings and how the dataset was generated, to see if there are hidden reasons for the memory difference. Thank you!