Apple Engine

Apple, iPhone, iOS, その周辺のことについて

iOS Human Interface Guidelines の Augmented Reality (ARKit) をざっくり訳す

以下、ざっくり訳。間違っていたらごめんなさい。
あと、軟弱なので訳せなかったところは飛ばしている。

一応、ベータなので内容は変更される可能性あり。

Augmented Reality - Technologies - iOS Human Interface Guidelines

 

注記
  • phone と原文で書かれているところは iPhone(iPad) にしている
  • () の部分は自分が追記したもの。ポエム。

 

Augmented Reality (AR)

ARKit を使用して仮想オブジェクトを現実の世界にシームレスに融合させる臨場感あふれる魅力的な体験を提供する。

AR アプリでは、カメラを使用して現実の世界を表示し、3次元の仮想オブジェクトが重ね合わされ、 実際に存在するという錯覚を作り出す。

ユーザーは、さまざまな角度からオブジェクトを鑑賞するためデバイスの方向を変えることができ、 ジェスチャーや動きを使ってオブジェクトを操作などインタラクションを起こすことができる。

 

エクスペリエンスの設計

ディスプレイ全体を使用する。

現実世界でアプリの仮想オブジェクト設置し、操作するためにできるだけ多くの画面を使用する。
没入体験を減らす操作系の UI や情報で画面が乱雑にならないようする。

 

現実的なオブジェクトを配置するときには頑張ってつくりこめ

すべての AR 体験でリアルなフォルムの仮想オブジェクトを必要とするわけではないが、使用する場合はその環境にあたかもあるような見栄えのオブジェクトを使うべき。
検出された現実世界のサーフェス上にオブジェクトを配置し、より良いテクスチャやジオメトリを作成し、適切なスケーリング、仮想オブジェクトに環境照明を反映させる。

 

ユーザーに不快感を与えないようにする

一定の距離や角度でデバイスを長時間保持させるとユーザーは疲労する可能性あり。 アプリを使用した際、デバイスをどのようにもって使用されるか考えて不快感を与えさせないように。

例えば、オブジェクトを遠くに配置することで、近くに移動する必要がなくなる。

 

アプリでユーザーが動くことを推奨する場合は、徐々に動きを促す。

最初にゲームなど経験に適応する時間を与えること。
その後、徐々に動きを促すべき。

  

ユーザーの安全に注意する

あまりにも長距離の移動をさせたり、近くに人や物が存在すると、危険な状態になる可能性がある。
なので、アプリを安全に運用する方法を検討する。

例えば、ゲームで大きな動きや突然の動きを避けるなど。

 

臨場感あふれる体験を高めるために、オーディオと触覚フィードバックを使用する

音響効果またはバイブレーション/触覚フィードバックは、仮想物体が現実世界表面、または他の仮想物体と接触したことを確認させることができる。

没入型のゲームでは、BGM はユーザーを仮想世界にのめり込ませるのに役立つ。

 

可能な限り、コンテキスト(前後関係, 流れ)でヒントを提供する

オブジェクトの周りに3次元回転インジケータを配置すると、オーバーレイで表示されたテキストベースの命令よりも直感的になる。

平面検出前やユーザーがコンテンツのヒントなどに応答していない場合など。

状況によっては、テキストオーバーレイヒントが必要。

f:id:x67x6fx74x6f:20170906113949p:plain

 

何らかの指示をするテキストを表示する場合は、わかりやすい用語を使用せよ

ユーザー全員がテクノロジーに詳しいわけではないので、
アプローチが容易になるように、ARKit、ワールドディテクション、トラッキングなどの開発者用語を使用しないようにする。

代わりに、ほとんどの人が理解できるフレンドリーな会話言葉を使用せよ。 (トラッキングとか大丈夫そうだけどドキュメントには書いてある)

×
平面を見つけることができません。 側面に移動するか、iPhone(iPad)の位置を変えてみてください。 平面を見つけることができません。トラッキングを調整します。
場所をタップして@配置するオブジェクトの名前」を配置します。 平面をタップしてオブジェクトを固定します。
多くの照明を点けて動してみてください。 機能が不十分です。
iPhone(iPad)をゆっくり動かしてみてください。 過度の動きが検出されました。

 

AR 体験への不必要な中断を避ける

現実環境を分析後、ユーザーが AR アプリを終了して AR アプリに再び入るたびに平面が検出される。

デバイスと仮想空間のカメラの位置が変更されている可能性があり、以前に配置されたオブジェクトは再配置される可能性が高くなる。

AR を非表示にしオブジェクト設定の変更をできるようにすることも解決策の一つ。
(状況によってはフルリセットも必要かも?)

 

拡張現実に入り込む

f:id:x67x6fx74x6f:20170906114205p:plain

初期設定が行われている状態を示し、ユーザーに伝える。
現実環境を分析する初期化プロセスは、アプリが AR に動作する度に発生し数秒かかる。

起こりうる混乱を減らし、プロセスをスピードアップするために、初期化中の状況を示し、周囲を探索させたり、積極的に平面を探すよう促す。

 

仮想オブジェクトの配置

f:id:x67x6fx74x6f:20170906114233p:plain

 

平面にインターフェースを配置して、オブジェクトを配置できるタイミングを理解させる

ビジュアルインジケータは、サーフェスターゲティングモードがアクティブであることを伝えるうえで最適な方法で 人が水平で平らな面をだと推測するのに役立つ。

平面がターゲットに設定されると、インジケータの外観が変更され、オブジェクトの配置が可能になることが見た目でわかるようになる。

アプリに合わせたビジュアルインジケータをデザインしても良い。

 

ユーザーがオブジェクトを配置するときに適切に応答させる

平面検出の間、(非常に短時間で)精度が向上する。

ユーザーが画面をタップしてオブジェクトを配置する場合は、現在使用可能な情報を使用して配置し、位置の設定、サーフェスの範囲を超えて配置されてしまった場合は戻す。

 

検出されたサーフェスのエッジにオブジェクトを正確置こうとしない

AR では、平面境界は環境分析毎に変化する可能性のあるため。

 

仮想オブジェクトとのユーザインタラクション

f:id:x67x6fx74x6f:20170906114317p:plain

 

画面上のコントロールは直接操作を優先させる

画面上のオブジェクトなど、別のコントロールする UI を使って操作するのではなく、直接オブジェクトを触り操作できれば、より没入感があり直感的。

ただし、ユーザーが動き回っているときなど、直接の操作が混乱を招いたり操作困難になることがあるので注意。

 

標準的で使い慣れたジェスチャーを使用して、仮想オブジェクトと直接操作する

たとえば、オブジェクトを移動するための1本指でのドラッグジェスチャ、回転するオブジェクトの2本指で操作するジェスチャをサポートするなどを検討する。

詳しい内容は ジェスチャ(英語) を参照。

 

インタラクションを簡素に保つ。

タッチジェスチャーの処理は 2 次元であるが、AR の現実世界は 3 次元。
仮想オブジェクトとのユーザーのやり取りを簡素化するために、以下のアプローチを検討する。

 

f:id:x67x6fx74x6f:20170906114416p:plain

  • オブジェクトが置かれている2次元表面への移動を制限する
  • オブジェクトの回転を単一の軸に制限する

 

操作可能な仮想オブジェクトの適切な位置でジェスチャーに応答させる

小さい、薄い、または遠くに置かれたオブジェクトの特定のポイントに人の指が正確に触れることは難しい。

アプリでインタラクションを起こすオブジェクトの近くでジェスチャを検出する場合は、ユーザーがオブジェクトに影響を与えることを想定することを勧める。

 

ユーザーが設置するオブジェクトの拡大縮小(スケーリング)が必要かどうかを検討する

通常、スケーリングはおもちゃやゲームのキャラクターなど、オブジェクトに固有のサイズがなく、ユーザーがそれを大きくしたり小さくしたりする場合に適している。

実際の世界に比べて大きさが決まっているサイズのオブジェクトの場合、家具のようなアイテムが正確なサイズに配置されている場合、スケーリングはさせない。

 

競合するジェスチャーに注意する

2本指のピンチジェスチャーは、2本指の回転ジェスチャーと非常によく似ている。

もし、2つのジェスチャーを実装する場合は、アプリをテストして、正しく操作するできることを確認しておく。

 

仮想オブジェクトの動きがスムーズであることを確認する

オブジェクトのサイズを変更したり、オブジェクトを回転させたり、新しい場所に移動したりするときに、オブジェクトが突然消えて現れたりなど、スムーズに表示されるよう注意する。

 

より魅力的なインタラクションの方法を探求する。

ジェスチャーが AR 内の仮想オブジェクトとインタラクションを起こす唯一の方法ではない。

モーション(ジャイロ、コンパス、加速度センサー)や近接(近接センサー)など、他の要素を使用してコンテンツを息吹を吹き込むことができる。

例えば、ユーザーが歩いているときに、ゲームキャラクターがユーザーを見るように頭を動かすなど。

 

エラーなど問題が起こった時の処理

使用できる環境の条件を満たしていない場合、ユーザー側からリセットできるようにする

オブジェクト配置の改善や条件の改善を待つように強制しない。
もう一度やり直してより良い結果が得られるかどうかを確認する方法を教える。

    f:id:x67x6fx74x6f:20170906114532p:plain

(多分、光が足りないとうことを伝えたいのだと思われる)

 

問題が発生した場合には可能な修正を提案する

ユーザーの環境と平面の検出の分析は、さまざまな理由で失敗することがある。

十分な光がない、平面が反射する、平面が充分なディテールを持っていない、カメラが大きく動くなど。

アプリ得る詳細情報が不十分か、動きが多すぎるか、平面の検出に時間がかかりすぎる場合は、問題を解決するための提案を提示する。

問題 考えられる提案
不十分な機能が検出されました 多くの照明を点けて移動してみてください
過度の動きが検出されました iPhone(iPad)を遅く動かしてみてください。
表面の検出に時間がかかりすぎる 移動して、より多くのライトをオンにして、iPhone(iPad)が模様など質感のある平面をカメラがとらえている事を確認してください。

 

可能なデバイスでのみ AR 機能を提供する

アプリの主な使用目的が AR の場合は、ARKit をサポートする端末での使用できるようにする。

製品写真を含む家具カタログのようなアプリで、AR を第2の機能として提供している場合、サポートされていないデバイスで AR 使用時は、エラーを表示しないようにする。
(AR の機能を塞ぐか、違う方法で似たような体験をさせるということだと思われる)

また、デバイスが ARKit をサポートしていない場合は、最初の画面にオプションである AR 機能を提示しないこと。

開発については、「 Information Property List Key Reference 」の UIRequiredDeviceCapabilities セクション の ARKit 用のキーと、ARConfigurationisSupported プロパティを参照。

 

もっと詳しく知る

開発者向けのガイダンスについては ARKit を参照。