Cesium for Unity を MR モードの Apple Vision Pro アプリで利用する方法
Cesium for Unity を MR モードの Apple Vision Pro アプリで利用する方法について記載します。
Window モード、VR モードでの利用については以下をご覧ください。
(2024/9/12 追記)
タイルの端の色がおかしくなってしまい、つなぎ目が目立ってしまう問題への対処について追記しました。
公式ドキュメントの Step 1 を参考に、Cesium for Unity を Unity プロジェクトにインポートする
Library/PackageCache/com.cesium.unity@x.x.x
フォルダを Packages
フォルダ内に移動する
(Cesium for Unity パッケージ内のコードを変更できるようにするため)
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 のバージョン番号は利用しているバージョンに合わせて変更してください)
Packages/com.cesium.unity@1.11.0/Runtime/generated/Reinterop/Reinterop.RoslynSourceGenerator
内にあるスクリプトの makeNoLongerReadable != 0
を false
に書き換える
sed を用いる場合は以下のコマンドで書き換えられる
sed -i '' 's/makeNoLongerReadable != 0/false/g' ReinteropInitializer.cs
Cesium for Unity/Runtime/Resources
内の CesiumSelectTexCoords.shadersubgraph
にて MaterialX への変換エラーが起こるため、画像のように変更する
変更前
変更後
(2024/9/12 追記)
また、Cesium for Unity/Runtime/Resources
内の CesiumRasterOverlay.shadersubgraph
にて Sampler State
を追加し Wrap
を Clamp
に設定する
変更前
変更後
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
ノードにつなぎ、Wrap
を Clamp
にする
(CesiumRasterOverlay.shadersubgraph
と同様の操作)
また、CesiumDefaultTilesetShader.shadergraph
についても Sampler State
ノードを作成し Sample Texture 2D
ノードにつなぎ、Wrap
を Clamp
にする操作を行う
(CesiumDefaultTilesetShader.shadergraph
内の 5 箇所の Sample Texture 2D
ノードすべてに対して行う)
さらに、Tileset の面の向きが反転するという問題があるため、シーン上に配置する Cesium3D Tileset に以下のコンポーネントをアタッチする
以上で完了です。
動作確認は Photorealistic 3D Tiles の表示で行っています。
他の Tileset の表示では問題が起こる可能性があるためご了承ください