クワマイでもできる

クワマイでもわかる

歌い踊る自分をARで見たい[ARKit編]

作りたいもの

f:id:kuwamai:20180515183932j:plain

ARでどこでもエイサイハラマスコイ踊りがしたい。

できたもの

公園でエイサイハラマスコイ。

立ち入り禁止の芝生の上でもエイサイハラマスコイ。

製作の記録

Unity ARKit plugin

VtuberごっこのおかげでUnityの操作はわかってきた。
Xcodeは未だによくわからないので、ARKitもUnityで使ってみる。
早速Asset storeからダウンロード。

こっちで最新のが公開されてたりする。
ARKit1.5の新機能とか楽しかった。

細かい話はこちらのスライドがとても詳しかったです。
今回やることくらいなら読まなくても大丈夫だった。

Exampleを開いてみる

Assets / UnityARKitPlugin / Examples / UnityARShadows / UnityARShadows を開いてみる。
これはタップした所に小人が出て来て、床に影が落ちるサンプル。
一度何も手を加えずにビルドして見ても楽しい。
初めてのiOS Appだったけど、ビルド設定等は以下のサイトが参考になりました。

特にCamera Usage Descriptionを空白にするとAppが起動直後に落ちた。
落ちるとXcodeにこんなエラーメッセージが出る。

This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.

タップした場所にモデルを置く

たくさんモデルを表示して賑やかにしたい。さっき開いたExampleに手を加えていく。
以下の記事が参考になりました。

こちらのScriptを使用させていただきました。

このScriptをGame Objectにくっつけて、置きたいモデルをセットする。

f:id:kuwamai:20180521164720p:plain

Exampleに入ってるHitPlayerは無効にしておく。

f:id:kuwamai:20180526181446p:plain

置いたモデルが同じ方向を見てると寂しい。
置いた時にモデルの正面がカメラの方を向くようにしたい。
カメラの姿勢はこれで取得できる。

UnityARMatrixOps.GetRotation (UnityARSessionNativeInterface.GetARSessionNativeInterface ().GetCameraPose ())

ちなみに、UnityARMatrixOps.GetRotation ()はARKitの座標系をUnityの座標系に変換するもの。

あとは歌って踊るPrefabを用意すれば完成。
とはいえAnimationもAudioもわからないので後編に続く。

後編書いた。