Issue with out of the box Cesium Ion assets: Slanted terrain, missing textures and more

Hello all,

I am currently trying to get 3D Tiles for Godot set up and running. However I am encountering various issues and am not sure what the root cause could be.

I’ll start off with some general information:

  • Windows 11 64 bit Laptop (with integrated Intel GPU)
  • Godot v4.4.1.stable.mono.official (.NET Version)
  • Latest version of 3D Tiles for Godot (Downloaded the .zip from GitHub)

Following the Getting Started guide on GitHub I set up a project with the absolute minimum of nodes just to test basic functionality.

My main scene consists of the following:

Scene Tree:

WorldEnvironment

Furthermore I added different Cesium Ion assets via the Cesium Ion Panel as well as the Dynamic Camera.

The issues I encounter vary, however none of the Assets that can be added via the Cesium Ion Panel seem to work out of the box for me.

With Cesium World Terrain using Bing Maps I get the 3d tiles mesh, however textures seem to be missing and the terrain is slanted compared to my World Environment’s Sky:

Google Photorealistic 3D Tiles also does not work out of the box for me:

Can someone give me a heads up on what the cause of my issues could be? I am relatively new to Godot development, so maybe I am missing something obvious.

1 Like

Hi

For Bing maps + world terrain verify your ion asset id for bing map is 2 and world terrain is 1

Are you building the plugin using scons or using the pre built v1.0 plugin?

The tiles are clustered at center (google tiles), i assume you are building this from source, in that case the issue may be as follows(not sure though)

  1. All tile transforms are identity matrices : [0.0, 0.0, 0.0]
  2. ECEF positions are all zero - Tile ECEF position: [0.0, 0.0, 0.0]
  3. The coordinate transformation is working correctly, but it’s transforming zero positions

Thx

Hey @Manju_nath thanks for taking the time!

So the Cesium3DTileset Node that is being created when I click Add for Cesium World Terrain + Bing Maps Aerial does have the property Ion Asset ID set to 1. There is however no other node being created that has the Bing Maps Aerial ID, which would be 2. Or where would I find that?

I downloaded the plugin from Releases on the GitHub page. I did not build it myself since I figured it should be identical to the plugin I would get when building with the standard settings myself. Maybe I should try building it myself.

As for the Google Photorealistic 3D Tiles I am not sure where I would check your assumptions. The Ecef X, Ecef Y and Ecef Z properties of the CesiumGeoreference node that gets added with Google Photorealistic 3D Tiles are all non-zero values.

When building the project I also get this error:

W 0:00:01:945 load: res://addons/cesium_godot/visuals/scripts/atmosphere_settings.tres:3 - ext_resource, invalid UID: uid://d2xi05o8ul7aw - using text path instead: res://addons/cesium_godot/visuals/scripts/atmosphere_settings.gd
<C++ Source> scene/resources/resource_format_text.cpp:447 @ load()

Is adding the assets via the Cesium Ion Panel working out of the box for you?

For cesium world + bing map there should be a raster overlay node with asset id set to 2, if not added then try adding it manually and set the asset id to 2.

atmosphere_settings.gd error can be resolved by opening the file in editor by double clicking on it

in inspector click on save button > saves as > overwrite the same file.

For google 3d tiles, it should work with v1.0 addon which is prebuilt, may be re-download the plugin, try it with a new project.

Also i would suggest you to try using Godot 4.4.1 standard GD version

Hope this helps

Adding the CesiumIonRasterOverlay manually and assigning the asset id works. I wonder why that node is not added automatically for me.

Your fix for the warning about atmosphere_settings.gd also worked.

I’ll try reinstalling the plugin and working with a new project and see if that fixes the Google Photorealistic 3D Tiles dataset. Having trouble building the plugin myself, but its probably worth a try.

Tried using the Godot version you mentioned. That did not fix the issue though.

1 Like

Thank you for the update. I’m sorry I couldn’t assist further in fully resolving the Google Tiles issue. To address the slanted world environment, please try applying the rotation values shown in the attached image.

Thx

Changing the rotaiton manually to your values did not fix it on my end. Is the rotation of the horizon an issue that you are having as well? Maybe using the WorldEnvironment node whith a Procedural Sky is not the intended setup. Sadly there is not much documentation yet on how to properly set up a project with 3D Tiles for Godot.

Make sure to keep the WorldEnvironment node as a child of the Georeference node. Then, try adjusting its transform values during play mode to align it with the horizon. This helps the environment move along with the camera.

Also, set Custom FOV to 0, even though the environment may appear slanted in the editor view. Use the play window to match the alignment more accurately. This is just a temporary fix.

Regarding the issue:
I’ve only tested the Google tileset and a custom tileset using the Windows build.

3D_Tiles_For_Godot_v1.0.0_Win64.zip: Release 3D Tiles For Godot v1.0.0 · Battle-Road-Labs/3D-Tiles-For-Godot · GitHub

try these values

1 Like

I have verified the windows build again and tiles are clustered, but my initial tests with the plugin were correct, i think there may be some changes to the data received from the cesium ion for google tiles, it could be cesium team is testing few things.

i request someone from cesium team to assist regarding this issue.
Thx

1 Like

For me the WorldEnvironment does not move along with the camera when it is placed as a child to the Georeference node. This is especially noticeable when moving the camera far away from its initial position. The WorldEnvironment stays stationary for me while the camera moves in relation to the tiles orientation.

In general Georeference node when made parent of WorldEnvironment node may not influence WorldEnvironment node. i was facing a weird bug in my scene moving the Environment node fixed it for me, so i assumed may be it was same for you.

Thx

Just bumping to confirm that I’m experiencing the same issues. I’m specifically trying to get this working with double precision for true origin, and have built both the extension and godot with the appropriate arguments, but I’ve experienced many of these same bugs. The only combination I’ve gotten to mostly work is Godot 4.4.1 standard dist + 3D-Tiles-for-Godot v1.0 with Cesium World + Bing Imagery.

Glad to finally have 3d tiles in godot, and hopeful the kinks can be worked out soon

update google tiles to use matrix transform, (only if you are building from source)
GodotPrepareRenderResources.cpp, try adding constexpr int32_t gTilesassetid = 2275207 and add the currAssetId == gTilesassetid if section, build the plugin and this should resolve the clustered google tileset.

// Applies for tilesets that 
		constexpr int32_t worldTerrainId = 1;
		constexpr int32_t osmBuildingsId = 96188;
		constexpr int32_t gTilesassetid = 2275207;

		// Applies for osmBuildings and world terrain
		int32_t currAssetId = this->m_tileset->get_ion_asset_id();
		if (this->m_tileset->get_data_source() == CesiumDataSource::FromCesiumIon && (currAssetId == worldTerrainId || currAssetId == osmBuildingsId || currAssetId == gTilesassetid)) {
// rest of the code

and optional

#update  CesiumGeoreference node in your scene

[node name="CesiumGeoreference" type="CesiumGeoreference" parent="."]
ecefX = 1.33489e+06
ecefY = -4.65165e+06
ecefZ = 4.14081e+06
latitude = 40.742
longitude = -73.988
altitude = 75.0
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, 0)

Thx

Thanks for the quick response. That fixes the issue for google tiles with a cartographic origin, but both the google tileset and cesium + bing imagery tilesets are still incorrectly transformed for me when using the true origin. Also - and I’m not sure if this is somehow related - the CesiumRasterOverlayNode isn’t automatically added for me, and I have to manually create it (and set the id to 2 for bing imagery).

1 Like

You’re right, currently, the true origin option is still broken in several areas. There are some important core features that need addressing for it to work correctly. Hopefully we’ll see fixes for these in the upcoming PR releases.

Thanks for this. I’m going to try the same updates to GodotPrepareRenderResources.cpp.

Thought I would chime in and note that I’ve been experiencing some issues w.r.t asset permission / tokens for assets that I’ve uploaded – but it seems to vary depending on asset type.

I’ll share some debug info later today / this weekend once I’m back home.

1 Like