Unity AR FoundationマルチプラットフォームでARアプリを開発できるフレームワーク です。
そして、Unityは AR Foundationを簡単に理解できるように、いくつものシーンを含んだ サンプルプロジェクトを GitHubにあげており、そのサンプルの中でよく使われる機能をいくつか既に紹介しました。

Unity AR Foundation のサンプルを試してみた(SimpleAR)
Unity AR Foundation のサンプルを試してみた(ImageTracking)
Unity AR Foundation のサンプルを試してみた(FaceTracking)


そして、今回は 現実世界と仮想世界とのScaleとRotationを合わせる機能サンプルScaleを紹介します。
ARF_Scale_01
【機能説明】

ARF_Scale_02

このScaleと言うシーンは名前の通り、現実世界と仮想世界とのScaleとRotationを合わせる機能となります。

以下のGithubの説明にもあるように、表示されているゲームオブジェクト自体のScaleやRotationを変更させることなく、ARSessionOrigin自体のAR空間自体のScaleやRotationを変更させる機能となります。
これにより、ビルが建っているような巨大な仮想空間の世界を目の前のテーブルの上に展開させるように、現実世界と仮想世界のScale調整を行うことができます。
ARF_Scale_03


【使い方】

平面を探して認識がされると平面が表示されます。
そこをタップして、その上空に立方体とカプセルのカラフルなオブジェクト群(Content)を表示させます。

UI上に表示されているScaleバーとRotationバーを動かすことにより、Scaleを変えたり、向きを変えたりすることができます

もちろんそれらのゲームオブジェクト(Content)が直接変わっているのではなく、ARSessionOriginのScaleやRotation自体が変わっています。要はこのARの仮想空間部分自体のScaleとRotationを変えていることになります。
ARF_Scale_04


【詳細説明】

ARF_Scale_05

【AR Sessionオブジェクト】
このゲームオブジェクトはどのサンプルにも同じコンポーネントで使われている、AR Foundationを使う上で基本となるオブジェクトです。
ARF_Scale_06

AR Sessionクラス:
AR Foundationの AR としての基本機能(デバイスのトラッキングや、平面の認識)を AR Sessionと呼び、本Game Objectがその機能を担っています。このコンポーネントを付けたGame ObjectをSceneに必ず含める必要があります。

AR Input Managerクラス:
このコンポーネントはデバイスで現実世界をトラッキングするのに必要となります。実際はScene上のどこにあっても良い。


【AR Session Originオブジェクト】
このゲームオブジェクトでARの座標とUnityの座標の変換を行うので、AR上に表示するゲームオブジェクトの制御を行う。

ARF_Scale_07

AR Session Originクラス:
Session Spaceと言う ARの座標と Unity Space:Unityの座標の変換を行います。ARデバイスを起動した位置を Session Spaceの原点(0,0,0)として位置の計算をします。
AR Cameraを配下に持っています。また、表示する Game Objectはこの AR Session Originオブジェクト配下に作られる。

AR Plane Mangerクラス:
認識した平面の位置に AR Planeとして Prefabを作成する。

AR Raycast Managerクラス:
Plane上に Cubeを置く位置を取得するため、スクリーンタップ時に Planeへの Raycastを実行する。

Scale Controllerクラス:
UIのSliderで入力されたScale値に基づき、ARSessionOrigin自体のScaleに反映させる。

MakeAppearOnPlaneクラス:
指定されたゲームオブジェクト(Content)をRaycastで指定された場所に表示させる。

Rotation Controllerクラス:
UIのSliderで入力されたY軸に関するRotation値に基づき、MakeAppearOnPlaneを用いてContentを再配置する。


Sponsored Link