株式会社Qukuriエンジニア採用サイトロゴ
株式会社Qukuriエンジニア採用サイト

くくりブログ

スーパーマリオ中

ARで実現するリアルスーパーマリオ

スーパーマリオではないけども

ARの技術を使えば、現実空間に3Dオブジェクトを配置できる。とはいえ、以前は地面を認識せずに映像の上に3Dオブジェクトが浮いてるだけだったし、なんとか地面を認識できるようになっても、壁や障害物にあたっても何の反応もなかった。
それがついに壁や障害物を認識するようになり、障害物の向こうにいけばそれに隠れる(前回のブログで紹介してます)ようになった。そうするとやることはひとつ。
おわかりですよね?リアルスーパーマリオですよ。

開発環境

まずはARスーパーマリオ?の開発環境をご紹介します。Unity2019.4にARFoundation4.1.0とARCore XR Plugin4.1.0を入れています。最初はUnity2020.1を入れましたが、ARFoundation4.1.0が動かなかったので、急遽変更しました。ARCoreで平面の検出とオクルージョン(手前の障害物に隠れる機能)を実現、Blenderで作成したオリジナル3Dオブジェクトをfbx形式でUnityに取り込みました。
ただ、最初から3Dオブジェクトを地面に配置すると地面の平面を検出する前にオブジェクトが重力に従って落っこちてしまうので、最初は宙に浮いた板に乗せています。あとはスタンダードアセットからスマホ用のジョイスティックとジャンプボタンを取り込みました。
あとはシーン再読み込みのリセットボタンを用意しました。3Dオブジェクトが迷子になったら即リセットしちゃいます。

実行環境

実行環境は当社で用意したテスト用のスマホXiaomi Pocophone F1です。2018年発売のandroid9.0、Snapdragon845搭載機です。カタログにはDepthセンサー搭載と書いてありますが、Google社のDepth Labでテストしてみたらウソのように深度の検出が出来ませんでした。設定なのかな…
なので、白い壁などの検出は大の苦手やし、少し距離が離れたら地面の平面の検出も出来ず、いきなり地面に吸い込まれます。2020年から本格的に搭載が進んでいるToFなどの深度センサーがあるのが好ましいのかも知れませんね。

椅子や机までの距離を認識していないっぽい

撮影には気を使う

地面に吸い込まれたり、白い壁を突き抜ける問題を抱えながら撮影を行いました。撮影は当社のあるbillageOsaka内と近くの船場センタービルで行いました。カメラを使ったアプリのため、人が写り込まないように気を使いました。変態だと思われて通報されたらかないません。傍からみたらかなり怪しい感じだったと思います。スーパーマリオ的なゲームをやってるだけなんですけどね。人がいない時を見計らったり、さもメールでも読んでる風を装ったり、わざわざ必要のないコーヒーを入れておいたり、意外と気を使っています。

今後の課題

テスト端末が古いと最新の技術がちゃんと実現できないと言うことを痛感しました。こういうのは新しいのを用意せんとアカンね。反省。