Open9

Cesium for Unity を MR モードの Apple Vision Pro アプリで利用する方法

tarukosutarukosu

Cesium for Unity を MR モードの Apple Vision Pro アプリで利用する方法について記載します。
Window モード、VR モードでの利用については以下をご覧ください。
https://zenn.dev/tarukosu/scraps/e510ed9626a660

(2024/9/12 追記)
タイルの端の色がおかしくなってしまい、つなぎ目が目立ってしまう問題への対処について追記しました。

tarukosutarukosu

Library/PackageCache/com.cesium.unity@x.x.x フォルダを Packages フォルダ内に移動する
(Cesium for Unity パッケージ内のコードを変更できるようにするため)

tarukosutarukosu

Packages/com.cesium.unity@1.11.0/Runtime/generated/Reinterop/Reinterop.RoslynSourceGenerator
内にあるスクリプトの
#if !UNITY_EDITOR && UNITY_IOS#if !UNITY_EDITOR && (UNITY_IOS || UNITY_VISIONOS) に書き換える

sed を用いる場合は以下のコマンドで書き換えられる

cd Packages/com.cesium.unity@1.11.0/Runtime/generated/Reinterop/Reinterop.RoslynSourceGenerator
sed -i '' 's/UNITY_IOS/(UNITY_IOS || UNITY_VISIONOS)/g' *.cs

(コマンド内の Cesium for Unity のバージョン番号は利用しているバージョンに合わせて変更してください)

tarukosutarukosu

Packages/com.cesium.unity@1.11.0/Runtime/generated/Reinterop/Reinterop.RoslynSourceGenerator 内にあるスクリプトの makeNoLongerReadable != 0false に書き換える

sed を用いる場合は以下のコマンドで書き換えられる

sed -i '' 's/makeNoLongerReadable != 0/false/g' ReinteropInitializer.cs
tarukosutarukosu

Cesium for Unity/Runtime/Resources 内の CesiumSelectTexCoords.shadersubgraph にて MaterialX への変換エラーが起こるため、画像のように変更する

変更前

変更後

(2024/9/12 追記)
また、Cesium for Unity/Runtime/Resources 内の CesiumRasterOverlay.shadersubgraph にて Sampler State を追加し WrapClamp に設定する

変更前

変更後

tarukosutarukosu

CesiumUnlitTilesetShader.shadergraph についても以下の変更を行う

Graph Settings にて以下を変更

  • Built-In の Material を Unlit に
  • Built-In の Alpha Clipping にチェックを入れる
  • Universal の Alpha Clipping にチェックを入れる

Fragment から Smoothness を Delete する

(2024/9/12 追記)
さらに、Sampler State ノードを作成し Sample Texture 2D ノードにつなぎ、WrapClamp にする
CesiumRasterOverlay.shadersubgraph と同様の操作)

また、CesiumDefaultTilesetShader.shadergraph についても Sampler State ノードを作成し Sample Texture 2D ノードにつなぎ、WrapClamp にする操作を行う
CesiumDefaultTilesetShader.shadergraph 内の 5 箇所の Sample Texture 2D ノードすべてに対して行う)

tarukosutarukosu

以上で完了です。
動作確認は Photorealistic 3D Tiles の表示で行っています。
他の Tileset の表示では問題が起こる可能性があるためご了承ください