cesium-unity icon indicating copy to clipboard operation
cesium-unity copied to clipboard

cesium unity plugin on arch linux

Open 2tata opened this issue 4 months ago • 4 comments

Hi, first of all thanks for this amasing software!

I got an issue installing cesium in unity on linux.

to my system: 6.10.10-arch1-1 #1 SMP PREEMPT_DYNAMIC Thu, 12 Sep 2024 17:21:02 +0000 x86_64 GNU/Linux

unityhub version 3.9.1 --> https://aur.archlinux.org/packages/unityhub

I installed the 2022.3.48f1 editor version

### first attempt

I created a new project (3D core).

under "services" -> "gerneral settings" -> "Package Manager" I added following:

Cesium
https://unity.pkg.cesium.com
com.cesium.unity

then I installed the cesium plugin in version 1.13.0

The consol log give me some errors:

Library/PackageCache/[email protected]/Runtime/Cesium3DTile.cs(2,7): error CS0246: The type or namespace name 'Reinterop' could not be found (are you missing a using directive or an assembly reference?)

seems that Reinterop for dotnet is not coming with that repo plugin.

### second attempt

I followd the instructions here: https://github.com/CesiumGS/cesium-unity/blob/main/Documentation~/developer-setup.md

installed: extra/dotnet-sdk 8.0.8.sdk108-1 (85.3 MiB 300.0 MiB) (Installed) extra/nasm 2.16.03-1 (341.2 KiB 2.4 MiB) (Installed)

dotnet --version 8.0.108 cmake version 3.30.4

cloned cesium-unity-samples

then cesium-unity inside it.

in cesium-unity-samples/Packages/com.cesium.unity i called:

[<user> com.cesium.unity]$ dotnet publish Reinterop~ -o .
MSBuild version 17.8.5+b5265ef37 for .NET
  Determining projects to restore...
  All projects are up-to-date for restore.
  Reinterop -> /home/<user>/cesium-unity-samples/Packages/com.cesium.unity/Reinterop~/bin/Debug/netstandard2.0/Reinterop.dll
  Reinterop -> /home/<user>/cesium-unity-samples/Packages/com.cesium.unity/

got the message:

DllNotFoundException: CesiumForUnityNative assembly:<unknown assembly> type:<unknown type> member:(null)
NotImplementedException: The native implementation is missing so OnValidate cannot be invoked.

did:

cd cesium-unity-samples/Packages/com.cesium.unity/native~
cmake -B build -S . -DCMAKE_BUILD_TYPE=Debug

run into following error:

[<user> native~]$ cmake -B build -S . -DCMAKE_BUILD_TYPE=Debug
CMake Deprecation Warning at extern/tidy-html5/CMakeLists.txt:20 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


CMake Warning (dev) at extern/tidy-html5/CMakeLists.txt:26 (project):
  Policy CMP0048 is not set: project() command manages VERSION variables.
  Run "cmake --help-policy CMP0048" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.

  The following variable(s) would be set to empty:

    PROJECT_VERSION
    PROJECT_VERSION_MAJOR
    PROJECT_VERSION_MINOR
    PROJECT_VERSION_PATCH
This warning is for project developers.  Use -Wno-dev to suppress it.

-> TIDY_SO_VERSION = 58. This is an EVEN (stable) release.
-- *** Debug Logging is NOT enabled.
-- *** Building support for runtime configuration files.
-- *** Only building static library STATIC, version 5.8.0, date 2021.07.10
-- VCPKG_TRIPLET x64-linux-unity
-- EZVCPKG v0.1 starting up
	Website: https://github.com/jherico/ezvcpkg
-- EZVCPKG_BASEDIR envrionment variable not found and basedir not set, using default /home/<user>/.ezvcpkg
-- EZVCPKG initializing
	commit:     2024.07.12
	repository: https://github.com/microsoft/vcpkg.git
	local dir:  /home/<user>/.ezvcpkg/2024.07.12
-- EZVCPKG Building/Verifying package asyncplusplus using triplet x64-linux-unity
CMake Error at extern/cesium-native/cmake/ezvcpkg/ezvcpkg.cmake:83 (message):
  EZVCPKG failed with error 1
Call Stack (most recent call first):
  extern/cesium-native/cmake/ezvcpkg/ezvcpkg.cmake:185 (EZVCPKG_CHECK_RESULTS)
  extern/cesium-native/cmake/ezvcpkg/ezvcpkg.cmake:279 (EZVCPKG_BUILD)
  extern/cesium-native/cmake/ezvcpkg/ezvcpkg.cmake:293 (EZVCPKG_FETCH_IMPL)
  extern/cesium-native/CMakeLists.txt:50 (ezvcpkg_fetch)


*** The output from the command was:
error: Invalid triplet: x64-linux-unity
Built-in Triplets:
  x64-osx
  arm-neon-android
  x64-uwp
  x64-windows
  arm64-android
  x86-windows
  arm64-osx
  x64-linux
  arm64-uwp
  x64-android
  arm64-windows
  x64-windows-static
Community Triplets:
  arm64-osx-dynamic
  mips64-linux
  x64-windows-static-release
  x64-xbox-xboxone
  x86-android
  arm64-ios
  x64-openbsd
  x64-windows-static-md
  ppc64le-linux
  arm64-linux-release
  arm-linux-release
  arm64-linux
  x86-mingw-static
  x64-mingw-static
  s390x-linux
  x64-windows-static-md-release
  x86-ios
  x64-osx-dynamic
  x64-linux-release
  x86-windows-static-md
  x86-windows-static
  loongarch32-linux-release
  arm64-ios-release
  s390x-linux-release
  arm64-ios-simulator
  arm-windows
  arm64-osx-release
  arm-mingw-static
  arm-windows-static
  riscv32-linux
  x86-windows-v120
  loongarch64-linux
  arm-mingw-dynamic
  loongarch64-linux-release
  arm-linux
  riscv64-linux-release
  arm64-mingw-dynamic
  x64-xbox-xboxone-static
  arm-android
  x64-linux-dynamic
  x64-uwp-static-md
  arm64ec-windows
  wasm32-emscripten
  x64-osx-release
  x64-ios
  ppc64le-linux-release
  x64-xbox-scarlett-static
  x64-freebsd
  armv6-android
  arm64-mingw-static
  arm-uwp-static-md
  arm-ios
  arm64-uwp-static-md
  x64-windows-release
  x86-uwp
  x64-xbox-scarlett
  arm64-windows-static
  arm64-ios-simulator-release
  x86-uwp-static-md
  x86-mingw-dynamic
  arm64-windows-static-md
  riscv32-linux-release
  riscv64-linux
  x86-freebsd
  arm64-windows-static-release
  loongarch32-linux
  arm-uwp
  x86-linux
  x64-mingw-dynamic
Overlay Triplets from "/home/<user>/cesium-unity-samples/Packages/com.cesium.unity/native~/vcpkg/triplets":
  x64-android-unity
  x64-windows-unity
  arm64-osx-unity
  arm64-ios-unity
  arm64-android-unity
  x64-osx-unity
  x64-uwp-unity
  arm64-uwp-unity
See https://learn.microsoft.com/vcpkg/users/triplets?WT.mc_id=vcpkg_inproduct_cli for more information.


CMake Error at extern/cesium-native/cmake/ezvcpkg/ezvcpkg.cmake:102 (message):
Call Stack (most recent call first):
  extern/cesium-native/cmake/ezvcpkg/ezvcpkg.cmake:185 (EZVCPKG_CHECK_RESULTS)
  extern/cesium-native/cmake/ezvcpkg/ezvcpkg.cmake:279 (EZVCPKG_BUILD)
  extern/cesium-native/cmake/ezvcpkg/ezvcpkg.cmake:293 (EZVCPKG_FETCH_IMPL)
  extern/cesium-native/CMakeLists.txt:50 (ezvcpkg_fetch)


-- Configuring incomplete, errors occurred!

(this is maybe interresint for you guys)

work around it with following:

cd /home/<user>/.ezvcpkg/2024.07.12
cp triplets/x64-linux.cmake triplets/x64-linux-unity.cmake

run the first cmake call again:

[<user> native~]$ cmake -B build -S . -DCMAKE_BUILD_TYPE=Debug
CMake Deprecation Warning at extern/tidy-html5/CMakeLists.txt:20 (cmake_minimum_required):
  Compatibility with CMake < 3.5 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


CMake Warning (dev) at extern/tidy-html5/CMakeLists.txt:26 (project):
  Policy CMP0048 is not set: project() command manages VERSION variables.
  Run "cmake --help-policy CMP0048" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.

  The following variable(s) would be set to empty:

    PROJECT_VERSION
    PROJECT_VERSION_MAJOR
    PROJECT_VERSION_MINOR
    PROJECT_VERSION_PATCH
This warning is for project developers.  Use -Wno-dev to suppress it.

-> TIDY_SO_VERSION = 58. This is an EVEN (stable) release.
-- *** Debug Logging is NOT enabled.
-- *** Building support for runtime configuration files.
-- *** Only building static library STATIC, version 5.8.0, date 2021.07.10
-- VCPKG_TRIPLET x64-linux-unity
-- EZVCPKG v0.1 starting up
	Website: https://github.com/jherico/ezvcpkg
-- EZVCPKG_BASEDIR envrionment variable not found and basedir not set, using default /home/<user>/.ezvcpkg
-- EZVCPKG initializing
	commit:     2024.07.12
	repository: https://github.com/microsoft/vcpkg.git
	local dir:  /home/<user>/.ezvcpkg/2024.07.12
-- EZVCPKG Building/Verifying package asyncplusplus using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package expected-lite using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package fmt using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package glm using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package ms-gsl using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package rapidjson using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package spdlog using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package stb using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package uriparser using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package abseil using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package draco using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package ktx using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package modp-base64 using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package meshoptimizer using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package openssl using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package s2geometry using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package libjpeg-turbo using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package sqlite3 using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package tinyxml2 using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package libwebp using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package zlib-ng using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package picosha2 using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package earcut-hpp using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package cpp-httplib[core] using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package libmorton using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package zstd using triplet x64-linux-unity
-- EZVCPKG Building/Verifying package catch2 using triplet x64-linux-unity
-- EZVCPKG done
-- CMAKE_TOOLCHAIN_FILE /home/<user>/.ezvcpkg/2024.07.12/scripts/buildsystems/vcpkg.cmake
-- PACKAGE_BASE_DIR /home/<user>/.ezvcpkg/2024.07.12/packages
-- PACKAGE_BUILD_DIR /home/<user>/.ezvcpkg/2024.07.12/installed/x64-linux-unity
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 
-- Configuring done (7.4s)
-- Generating done (0.4s)
-- Build files have been written to: /home/<user>/cesium-unity-samples/Packages/com.cesium.unity/native~/build

then the second one:

[<user> native~]$ cmake --build build -j14 --target install --config Debug
[  5%] Built target tidy-static
[  7%] Built target CesiumUtility
[  8%] Built target CesiumJsonWriter
[  8%] Built target Cesium3DTiles
[ 11%] Built target CesiumGeometry
[ 14%] Built target CesiumJsonReader
[ 16%] Built target CesiumAsync
[ 20%] Built target CesiumGltf
[ 21%] Built target Cesium3DTilesReader
[ 22%] Built target Cesium3DTilesWriter
[ 22%] Built target CesiumIonClient
[ 25%] Built target CesiumGeospatial
[ 27%] Built target CesiumGltfWriter
[ 29%] Built target CesiumGltfReader
[ 29%] Built target CesiumGltfContent
[ 45%] Built target CesiumForUnityNative-Editor
[ 47%] Built target CesiumQuantizedMeshTerrain
[ 49%] Built target Cesium3DTilesContent
[ 52%] Built target CesiumRasterOverlays
[ 57%] Built target Cesium3DTilesSelection
[100%] Built target CesiumForUnityNative-Runtime
Install the project...
-- Install configuration: "Debug"
-- Up-to-date: /home/<user>/cesium-unity-samples/Packages/com.cesium.unity/native~/../Editor/./libCesiumForUnityNative-Runtime.so
-- Up-to-date: /home/<user>/cesium-unity-samples/Packages/com.cesium.unity/native~/../Editor/./libCesiumForUnityNative-Editor.so

now in unity i added the cesium-unity-samples project but with 2022.3.48f1 editor version (the 2021 one seems not work on arch anymore). logedin into cesium ion. Then added a Blank 3D Tiles Tileset on the gameobject Cesium3DTileset I switch to url and use my maps api url https://tile.googleapis.com/v1/3dtiles/root.json?key=<my key>

then I get following error:

[2024-10-01 23:49:28.695] [error] [TilesetJsonLoader.cpp:697] Error when parsing tileset JSON, error code Invalid value. at byte offset 0

UnityEngine.Debug:Log (object)
Reinterop.ReinteropInitializer:UnityEngine_Debug_CallLog_FA05wu8x__otZNsgdHTnU9A (intptr) (at ./Reinterop/Reinterop.RoslynSourceGenerator/ReinteropInitializer.cs:13570)
Reinterop.ReinteropInitializer/ActionNativeFunction:Invoke () (at ./Reinterop/Reinterop.RoslynSourceGenerator/ReinteropInitializer.cs:10186)
System.Threading._ThreadPoolWaitCallback:PerformWaitCallback ()

in /home/<user>/cesium-unity-samples/Packages/com.cesium.unity/native~/extern/cesium-native/Cesium3DTilesSelection/src/TilesetJsonLoader.cpp in line 697

...
  rapidjson::Document tilesetJson;
  tilesetJson.Parse(
      reinterpret_cast<const char*>(responseData.data()),
      responseData.size());
  if (tilesetJson.HasParseError()) {
    SPDLOG_LOGGER_ERROR(
        pLogger,
        "Error when parsing tileset JSON, error code {} at byte offset {}",
        tilesetJson.GetParseError(),
        tilesetJson.GetErrorOffset());
    return TileLoadResult::createFailedResult(std::move(pCompletedRequest));
  }

  // Save the parsed external tileset into custom data.
  // We will propagate it back to tile later in the main
  // thread
  TilesetContentLoaderResult<TilesetJsonLoader> externalTilesetLoader =
      parseTilesetJson(
          pLogger,
          tileUrl,
          tilesetJson,
          tileTransform,
...

i change the error message parameter to tileUrl wich gave me the uri provided by the maps google api

https://tile.googleapis.com/v1/3dtiles/datasets/CgA/files/UlRPVEYubm9kZWRhdGEucGxhbmV0b2lkPWVhc<some removal>PTYsaW1hZ2VyeV9lcG9jaD0xMDA5LGFsaWdubWVudF92ZXJzaW9uPVJPQ0tUUkVFXzk4OF9HT09HTEVfREFUVU1fMjAyNDA3MDRUMDc1M1pfZ2VuZXJhdGVkX2F0XzIwMjQwOTE3VDEyMDha.glb

this is a valid glb compressed Json file wich I checked with https://github.khronos.org/glTF-Validator/

the google maps API sayes somethng from:

  "extensionsUsed": [
    "3DTILES_content_gltf"
  ],
  "extensionsRequired": [
    "3DTILES_content_gltf"
  ]
}

which I didnt investigated further.

It seems that the cesium plugin have an Issue decompressin glb files.

Does you have any idea how i can fix it?

2tata avatar Oct 01 '24 22:10 2tata