イルミネーション × NrealLightのコンテンツ開発
こんにちは、こんばんは。
MiRu place代表の荒木です。
この度、なんば光旅というイベントの一環としてイルミネーションとスマートグラスを融合した『イルミネーションダイビング』というコンテンツの開発を担当させていただきました。
開発協力:MiRu place (ミルプレース)
動画に映っていない内容はなるべくネタバレしない程度の開発に関する話を書いています。
ARの開発をされたことがない方にも理解しやすいように意識して補足しています。
イルミネーションダイビングの開催初日レポートも別に記事を書いていますので以下のリンク先から見ていただけたら幸いです。
今回はキラキラと輝く海の生きものがイルミネーションの周辺を回遊する夢のような空間を表現。
会場のなんばパークスはグランドキャニオンの渓谷をモチーフにした造りになっていて雰囲気は抜群です。
素敵な会場なのでAR映像の存在感を意識して開発しました。
海の生きものを渓谷の形に合わせて回遊させることをはじめ、通路になっている空間や柱を魚群に潜り抜けさせたり細かい演出にもこだわりました。
会場を上から見ると以下の画像のようになっています。
右端がスタート地点です。
体験者はスタート地点から左端にある光の滝まで歩いて来たら折り返してスタート地点に戻ってもらうコースにしました。
また、このコースを5つのエリアに分けて演出や出現する映像に変化を与えるようにしました。
1st Area - スタート地点より手前の待機エリア周辺
2st Area - スタート地点
3rd Area - 中間地点
4th Area - 光の滝
5th Area - 折り返してスタート地点に戻るまで
開発の要点はもくじとして記載していますので気になるところからご自由にお読みください。
もくじ
- MatterportとReality Captureでフォトグラメトリを作成
- ImmersalMapperでローカライゼーションさせるスポットをスキャン
- 海の生きものや装飾物の配置とコーディング
- まとめ
開発環境
Unity : 2020.3.29.f1
ImmersalSDK : 1.16.1 → 1.7.0 → 1.17.1
NRSDK : 1.9.5
開発期間
2ヶ月
MatterportとReality Captureで会場のモデルを作成
NrealLightはスマホのARのように遮蔽物に合わせて映像を自動で切り抜いたり消したりするオクルージョンの機能がありません。
したがって自前で現実世界の遮蔽物と同じ形状で専用のシェーダーを適用したモデルを作成して遮蔽物としてシーンに組み込む必要があります。
このモデルを最初から作るのは大変なので3Dスキャナーやフォトグラメトリで作成してしまうということです。
例えば下記の画像ではオクルージョンを適用しているからこそ光の滝の中からクジラが出てきてるように見えますがオクルージョンが無ければ距離的には光の滝より後方にいるにも関わらずクジラの全身が見えている映像になってしまいます。
会場の形状を活かして海の生きものたちを体験者の頭上を泳がせるにしてもオクルージョンが無ければ海の生きものたちが渓谷の壁面をすり抜けていくように見えてしまうので実在感が大きく損なわれます。
Matterportは距離や面積に対して精度が高いモデルが作れますが肝心の頭上を撮影することが難しいので複数のフロアからカメラで撮影した画像をReally Captureにインポートしてモデルを作成。
複数のフロアとは言ってもスタート地点と折り返し地点の光の滝の周辺しかコースを見渡せる窓が無かったので中間地点の壁面は下から見上げた画像しかありませんでした。
それでも何度も試行錯誤していると割と良いモデルが作成されたので足りない部分はモデルをBlenderにインポートして手動で補正しました。
ImmersalMapperでローカライゼーションさせるスポットをスキャン
現実の景色と映像が一致しているAR/MRコンテンツの開発には必須とも言えるVPSはImmersalを使用しました。
ImmersalをNrealLightに設定する方法に関しては以下の記事が詳しいです。
イルミネーションの光は特徴点が多くてローカライゼーションは容易に進められる想定でした。
ですが実際に試してみたところ敏感に反応はしてくれますが会場はガラスも多くて反射などが影響しているせいかオブジェクトが正しい向きに向いてくれないことが多々ありました。
同時にImmersalが1.17.0にアップデートされて当初使用していた1.16.1より精度が落ちた印象がありました。
最終的にはイルミネーションをなるべく含んでいなくて精度が高い場所を検証してホットスポットとして絞り出してから、その場所にそれぞれ体験者が注目するような演出やオブジェクトを配置。
また、常にローカライゼーションはさせずにホットスポットの手前に配置したコライダーに触れるとローカライゼーションをオンにして成功すればオフにするように仕様を変更。
次のホットスポットまでの映像の固定はNrealLightの6Dofに頼りました。
海の生きものや装飾物の配置
スタート地点から既に折り返し地点が見えているので工夫しなければ最初からほとんどの生きものが見えてしまい楽しさが半減してしまいます。
気が付かない程度にフォグをかけて光の滝の周辺のオブジェクトは見えないようにしました。
サンゴや海藻などの装飾物は地面や壁から生えているように見せようとすればするほど現実と映像の境目が目立ってしまいかえって逆効果ですので現実ではない不思議な世界ということを逆手に取りました。
コレらの装飾物は地面から少し浮かせて根元から雫が溢れるような表現をパーティクルで与えることで異空間から生えているような見せ方にしました。
体験者の進行に合わせて朝から夜に変わるようにDirectional Lightの色を徐々に変えていくことで海の生きものや装飾物の色に変化を与えて空間の雰囲気を飽きさせない工夫もしています。
個人的な経験でグランドキャニオンの夕暮れは涙が出てくるぐらい綺麗だった記憶もあって夕暮れを表現する色は特にこだわりました。
また、色の変化をわかりやすくする狙いもあって地面のコースティクスを配置しています。
エリアによって異なる演出で言えば例えば1st Areaはあくまで受付が完了した人達の待機場所ですが、皆様が退屈しないように池を光らせたり夢の世界の入口であることを感じさせるような装飾を施しました。
また、案内役のイルカとコミュニケーションも取れるようにしました。
実際のスタート地点となる2nd Areaの入口にはダイビングを連想させられるように水面を設置しました。
同時にこの水面に触れると2nd Areaから4th Areaまでのオブジェクトがアクティブになるようにしています。
イベントではツアーガイドがいますので体験者の皆様が一斉に水面の中にダイビングするように案内することでマルチプレイ機能は実装していなくても全員の映像が同期しているかのように『今どこに何が泳いでいるか』を共有できる仕組みになっています。
4th Areaでは光の滝からしぶきを上げながら巨大なクジラが飛び出します。
これがメインとなる演出にしたかったので全員が見逃さずに驚きと感動を共有できるように出現タイミングを明確にしておく必要がありました。
これは端末の時間を取得して毎時0分を起点に1分30秒のスパンで出現させるようにしました。
もちろん4th Areaに来るまではクジラには眠ってもらっています。
他にも書きたい話は沢山あるのですがそれはまたの機会に。
まとめ
以下が個人的に財産となりました。
- イルミネーションなど夜でも明るい屋外で使用するNrealLightの映像の実在感は最高レベル。
- Immersalとイルミネーションと相性は微妙。
- 歩きながら体験するAR/MRコンテンツではImmersalのローカライゼーションは必要な時だけオンにして次のポイントまでは6Dofに頼った方が良い。
イルミネーションダイビングは絶賛開催中です。
年内のチケットは残りわずかとなっています(2022年12月15日現在)。
気になる方は以下の特設サイトまで。
『イルミネーションダイビング』
企画・制作:株式会社U.
開発協力:MiRu place (ミルプレース)
MiRu placeは大阪を拠点にしていますが関西に限らず全国どこでも対応可能です。
NrealLightやNreal Airなどスマートグラス(ARグラス)のコンテンツ開発やレンタルに興味があればMiRu placeまでお気軽にご相談ください。
VRやスマホのARに関する内容でも大歓迎です。
Twitter (unofficial) : @alucky7th
Discussion