Upgrade to Pro — share decks privately, control downloads, hide ads and more …

都市ARの作り方 PLATEAU ✖︎ Geospatial API

都市ARの作り方 PLATEAU ✖︎ Geospatial API

CA.unity #6

41 h0 -シホ- (‪41h0‬)

January 25, 2023
Tweet

More Decks by 41 h0 -シホ- (‪41h0‬)

Other Decks in Technology

Transcript

  1. Geospatial API導入(3/4) UnityのPackage ManagerのAdd package from git URLで “https://github.com/google-ar/arcore-unity-extensions.git” を入力し、Google

    ARCore Extensions for AR Foundationを インポートする インポート出来たらSamplesの中にあるGeospatialSampleをインポートする
  2. 都市AR作成(2/7) サンプルシーンで不要な処理やUIをコメントアウトしてから GeospatialController.csに先ほど作成した都市ARモデルPrefabを 現実世界に表示するための処理を追加する public void ShowModel() { if (createModelObj

    == null) { var anchor = AnchorManager.AddAnchor(latitude, longitude, altitude, quaternion); Instantiate(createModelPrefab, anchor.transform); } } 緯度 経度 高度 モデルの Rotation Finished localization (カメラ位置情報検出完了)の タイミングくらいで表示させる
  3. 都市AR作成(5/7) 都市ARのオクルージョンは以下2つに分けて考えます ①自分の体が前に来て3Dモデルが 隠れるオクルージョン ②現実の建物が前に来て3Dモデルが 隠れるオクルージョン ①はAR FoundationのAR Occlusion Managerで

    実現可能です。 ②はAR Occlusion Managerで実現不可のため、 シェーダーで実現させます。 手や建物が 映り込んだら その部分を遮蔽して 描画する
  4. 都市AR作成(7/7) ②現実の建物が前に来て3Dモデルが隠れるオクルージョン 建物オクルージョン用のシェーダーを作成し、 PLATEAUモデルのマテリアルに設定、表示する Shader "Stealth" { SubShader { Tags

    { "RenderType"="Opaque" "Queue"="Geometry-1"} Pass { ColorMask 0 CGPROGRAM #pragma vertex vert #pragma fragment frag struct appdata { float4 vertex : POSITION; }; struct v2f { float4 pos : SV_POSITION; }; v2f vert(appdata v) { v2f o; o.pos = UnityObjectToClipPos(v.vertex); return o; } half4 frag(v2f i) : COLOR { return half4(0, 0, 0, 0); } ENDCG } } } シェーダーの詳細については KENTOさんの下記記事をご覧ください https://zenn.dev/kento_o/articles/a55d8d0e 8651d6