目次
1)ARCore
ARCore は Google 社が開発とメンテナンスを行っているプラグインで、ARCore 用の Unity SDK はこちらからダウンロードできます。ARCore はエンジンに直接統合されていますので「XR Settings」にチェックボックスがあります。Unity 2017.1 以降のバージョンで対応しています。

ARCore SDK には、Augmented Images、Cloud Anchors、コンピュータービジョンなどの機能を紹介するサンプルのシーン HelloAR が用意されています。他にも ARCore 独自の機能としてはフィーチャーポイントや Instant Preview があります。
HelloAR は、あらかじめ水平面と垂直面の両方を検知するように構成されています。Android のマスコットである Andy のプレハブが含まれており、ユーザーがシーンをタップするたびにスポーンされますが、これは自作の 3D モデルに簡単に置き換えることができます。1 点ご注意いただきたい点として、HelloAR シーン上で構築する際に ARCore はそのセッションをスクリプタブルアセットとして処理している、ということがあります。このため ARCore で特定の機能を使用するにあたっては、適切なセッションデータを使用していること、そしてセッションをそこから構成していることを確実にする必要があります。
自分のセッションに個別に割り当てるスクリプタブルアセットの一例が、Augmented Images データベースです。プロジェクト内の画像を複数選択して右クリックすると、「Create」メニューの中にサブメニューを作成することができます。その後 Augmented Images は、選択されたすべての画像を 1 つのスクリプタブルアセットにまとめ、コンピュータービジョンがこれらのオブジェクトをどのくらい簡単に認識および追跡できるかに基づいて画像のスコアを計算します(推奨は 85 以上です)。
2)ARKit
この SDK は、ARCore とは異なり Unity が開発とメンテナンスを行っていて、Unity 2017.1 以降に対応しており、iOS 11.3 以降を実行する Apple デバイスで動作します。ダウンロードはこちらから行えます。SDK に付属するサンプルシーンには、Focus Square、Shadows and Occlusion、Image Anchor、Plane Mesh、Relocalize、Face Tracking など、主要な ARKit の機能がすべて含まれています。その他 ARKit 固有の機能としては Environment Probes、World Maps、Trackable Images があります。詳細については ARKit に関するドキュメントを参照してください。
3)AR Foundation
AR Foundation は、ARKit と ARCore のコア機能を Unity 内の抽象化した共通の API に組み込むソリューションで、現在対応しているのはコア機能の一部のみです。ARKit の Environment Probes や ARCore の Instant Preview などのプラットフォーム固有の機能は、特定の SDK からしか使用できません。とはいえ、新機能は AR Foundation に今後も追加されていく予定です。現時点でサポートされている機能は、垂直面と水平面の検出や、ライトエスティメーション、フィーチャーポイント、AR のスケーリング、AR のアンカーなどがあります。
AR Foundation は Unity 2018.1 以降で使用可能で、パッケージマネージャーを使用してインストールできます。
Unity XR エバンジェリストの Dan Miller が、Unite セッションの 17:30 のあたりで AR Foundation のインストール方法を手順を追って説明します。

ARKit で制作された『GNOG』(製作者 KO_OP)
4)AR でのスケールに関する問題とその解決方法
ARコンテンツ内に存在するアセットのスケールダウンにはリスクが伴います。例えばゲームオブジェクトに物理演算を適用している場合、アセットをスケールダウンすると物理挙動が変わるので、動作が不安定になる可能性もあります。複雑なレベルでは正常に動作しなくなります。また、Unity のシステムの中には、ナビメッシュ、テレイン、ライトマップ、パーティクルシステムなど、いったんベイクすると変更できなくなるものもあります。

代わりに、アセットがスケーリングされたように見せるカメラトリックを上手に使いましょう。スケーリング効果を作り出すには、1 台のカメラのポジションを前後に動かしたり、複数のカメラを使ったりすることができます。この方法を十分理解できるように、Unity エンジニアの Rick Johnson が書いたこちらのブログ記事をお読みください。このようなスケーリングに関するヒントは、Jimmy と Tim の対談の 42:05 付近で解説されています。
追加のヒント:ユーザーがデバイスを長時間静止状態にするとフィーチャーポイントが消えてしまいます。デバイスが一方向から単一のカメライメージのみを捉えている状態では、世界を認識するのが非常に困難になるので、動きを与えてアプリがフィーチャーを検出できるようにする必要があります。

ビジュアルやオーディオできっかけを提供して、フィーチャーポイントが検出される程度にユーザーがデバイスを動かすように促しましょう。ビジュアルでのきっかけを表示する場所は、たとえばインストラクションやガイドラインの表示場所など、目に留まる所をよく考えて選んでください。
数フィート(1m 程度)くらいの距離の所でアクションやゲームプレイを行う必要があることを知らせる手がかりを提供しましょう。また、照明が暗すぎても明るすぎてもカメラで情報を読み取れなくなることも伝えましょう。カメラでサーフェスのエッジを検出できるようにするには、光と影のバランスが必要です。
AR アプリの UI はシンプルにして、わかりやすさを心がけましょう。文字、UI 要素、キャラクター、爆発などが多すぎると、プレイヤーはうんざりしてしまいます。UI のアクションや要素は、できるだけ 1 か所にまとめるようにしましょう。
最後に、誰かが突然アプリをプレイしているスペースに入ってくるといった不測の事態に対応するためのオプションをいくつか用意しておきましょう。たとえば、プレイヤーにコンテンツを移動するためのギズモをいくつか提供して、プレイするエリアや面を選べるようにします。
5)AR コンテンツの開発に役立つツールセット 7 選
Vuforia AR ツールキット:Vuforia の AR ツールキットで、2017.2 バージョン以降で利用できます。ARCore、ARKit、Microsoft Hololens と組み合わせることができ、AR コンテンツ用の追加機能を提供します。

Vuforia の画像認識機能
Facial AR Remote:Facial AR Remote は、オーバーヘッドを低く抑えつつ、Unity エディターに直接接続されたデバイスを使用してパフォーマンスをキャプチャーする方法です。アニメーションの作成のみならず、キャラクターとブレンドシェイプのモデリング、リギングにも便利で、Unity で独自のアニ文字やミー文字のようなインタラクションを合理的に構築できます。これにより開発者は、デバイスに合わせて構築を行う必要なく、エディターでモデルを反復処理することが可能になり、プロセスの中の時間のかかる手順が省けます。詳細については次のドキュメントを参照してください。
Unity ARKit Remote:Unity の ARKit プラグインと組み合わせて使えます。Unity ARKit Remote を使うと、ARKit のデータを Unity エディターにフィードバックする特殊なアプリを iOS デバイスで実行できるようになるため、そのデータにリアルタイムで応答できます。
Unity UI:AR ゲームや AR アプリでクリエイティブな UI を作成するなら、Unity UI は欠かせないツールセットの 1 つです。Unity UI を効果的に使うためのさまざまなヒントは、以下のリソースをご覧ください。
Best Practices:A guide to optimizing Unity UI
Text Mesh Pro:Text Mesh Pro は Unity UI と組み合わせて使う便利なツールで、豊かで動的な UI を柔軟に作成できます。Text Mesh Pro はアセットストアから無料で入手できます。
高度なテキストレンダリング手法を採用した Text Mesh Pro には、一連のカスタムシェーダーが付属しています。驚くべき柔軟性でテキストスタイリングやテクスチャリングを行いながら、ビジュアルクオリティーを大幅に向上させることができます。

タイムライン:タイムラインは Unity にネイティブに統合されたフルマルチトラックシーケンサーです。複雑なコードを書くことなく、どんな要素からでもカットシーンやシーケンスを作成できます。アニメーションクリップ、キーフレーム、オーディオ、その他さまざまな要素のシーケンスを作成できます。Unity Learnのチュートリアル(英語)でタイムラインについて学ぶことができます。なお、PlusまたはPro with Teams Advancedを契約中の方はこちら(英語)のチュートリアルを無料でご覧いただけます。

パーティクルシステム:Unity では、多岐にわたるパーティクルシステムを作成するためのモジュールが豊富に揃っています。パーティクルシステムに関するドキュメントはこちらにあります。
Analytics:Unity Analytics は、ゲームの公開時にだけでなく、たとえばアプリの UI に対するプレイヤーの反応や理解度を確認する目的など、テストの際にも活用できます。ローンチ前、ローンチ中、ローンチ後の Analytics の活用方法の詳細を見る。
6)過負荷を避けるために:AR の最適化のヒント
AR アプリはハードウェアに多くのことを要求します。連動する複数のカメラ、深度センサー機能、大量の演算が必要なアルゴリズムを同時に、多くの場合モバイルメディアや携帯型メディアで処理しなければなりません。そこでパフォーマンスの大幅な最適化が必要になります。これにはメモリ管理や、物理領域の処理や制御などが含まれます。
そのほかのリソース
Unityニュース
Pro TipsなどUnityの最新情報、学習情報、お得な情報を受け取りたい方はこちら。