iOS 開発者ガイド for SDK

LiveSight コンテンツの追加と操作

このセクションでは、 LiveSight に表示するコンテンツを追加する方法と、そのコンテンツに対するユーザーの操作方法について説明します。 このセクションで説明するクラスは NMAARObject 、および NMAARIconObjectです。 さらに、いくつか NMAARController のメソッドとプロパティが使用されます。

  • addObject:
  • removeObject:
  • pressObject:
  • unpressObject:
  • selectObject:
  • deselectObject
  • focusObject:
  • defocusObject
  • objectsAtPoint:
  • objectsInRect:

次のデリゲートプロトコルも一緒に使用さ NMAARControllerれます。

  • NMAARControllerDelegate
  • NMAARControllerGestureDelegate

LiveSight オブジェクトモデル

LiveSightオブジェクトには、複数の視覚的な表現があります。 表示されるリプレゼンテーションは、オブジェクトの状態に基づいて決定されます。 表示に影響を与えるオブジェクトの状態がフォーカス状態になります。 フォーカス状態については、後で詳しく説明します。

カメラ対応 の LiveSight ビューでは、オブジェクトを表示できる平面が 2 つあり、オブジェクトのリプレゼンテーションはそれぞれ異なります。 平面は、「正面」平面と「背面」平面です。 デフォルト では、 LiveSight の中心に地理的に近いオブジェクトが Front 平面に表示され、遠くにあるオブジェクトが Back 平面に表示されます。 垂直方向のパンジェスチャを使用して、オブジェクトを 1 つの平面から別の平面に移動できます。

図 1. カメラビューのアイコン
図 2. 正面および背面の表示

フロントプレーンで は、 LiveSight オブジェクトはアイコンと情報ビュー ( 情報ビュー ) の両方で表され、アイコンの側面から外に出ます。 この情報ビューは、オブジェクトの詳細情報を表示するメカニズムとして機能することを目的としています。 背面平面では、オブジェクトは最初に 1 つのアイコンで表されます。 オブジェクトをフォーカスすることで、背面に情報ビューを表示することができます。 正面( Front )平面と背面( Back )平面のアイコンは異なる場合があり、デフォルトでは、平面間の遷移がアニメーション化されます。

NMAARObject クラス

NMAARObject LiveSight に追加して表示できる他のすべてのオブジェクトのベースクラスです。 以下 の操作を可能にするすべての LiveSight オブジェクトに共通のメソッドが含まれています。

  • オブジェクトの現在の位置を設定して取得します
  • オブジェクトの前面および背面のアイコンを設定して取得します
  • オブジェクトの前面および背面のアイコンサイズを設定して取得します
  • 情報ビューのサイズ、イメージ、および拡張の状態を設定して取得します
注 :LiveSight では、一度に使用できるフロントアイコンサイズは 1 つだけです。 フロントアイコンのサイズが異なるオブジェクトを混合すると、アイコンが歪むことがあります。 フロントアイコンのサイズは setFrontPlaneIconSize: 、の方法で設定する必要 NMAARControllerがあります。

NMAARIconObject クラス

単一の子クラスですNMAARObject NMAARIconObjectNMAARIconObjectLiveSight オブジェクトモデルで説明されているオブジェクトモデルを表します。 この関数は唯一のコンクリートであるため NMAARObjectNMAARObject、そのほとんどの関数はにあります。

NMAARObject の追加と操作

LiveSightNMAARObjectを追加 するには 、NMAARController次のaddObject:方法を使用します。

NMAGeoCoordinates *objLocation =
  [NMAGeoCoordinates geoCoordinatesWithLatitude:49.276744 longitude:-123.112049];

NMAARIconObject *iconObject =
  [NMAARIconObject iconObjectWithIcon:[NMAImage imageWithUIImage:image1]
    infoImage:[NMAImage imageWithUIImage:image2]
    coordinates:objLocation];

[arController addObject:iconObject];

同様に、 NMAARObjectsremoveObject: 次のメソッドを使用して削除できます NMAARController

[arController removeObject:iconObject];

との対話を容易にする NMAARObjectsNMAARControllerGestureDelegategestureDelegateNMAARControllerために、のプロパティを使用してを登録できます。 TAP イベントが発生すると NMAARObjectarController:shouldProcessTouchUpOnObjects:atPoint: 、のメソッドを使用 NMAARControllerGestureDelegateして AT TAP ポイントを見つけることができます。 このジェスチャにカスタム処理を提供する場合は、次のようにメソッドを実装できます。


-(BOOL)arController:(NMAARController *)arController shouldProcessTouchUpAtPoint:(CGPoint)point
{
  // Get object closest to touch point if more than one
  NMAARObject* arObject =
    objects.count > 0 ? [objects objectAtIndex:0] : nil;

  if (arObject) {
    // perform some custom action such as focus on the object
  }

  return NO;
}

メソッド NMAARObject を使用して、をフォーカスでき focusObject: ます。 フォーカスが置かれている間 NMAARObject、の情報ペイン ( バックプレーンにある ) が表示されます。 NMAARObject 一度に 1 つのユーザーのみにフォーカスが置かれます。 のフォーカスを解除 NMAARObjectする focusObject:NMAARObjectには、別のに電話してください。 defocusObject メソッドを呼び出して、フォーカスを解除することも NMAARObjectできます。

イベント駆動型のNMAARObject取得に加えて、objectsAtPoint:objectsInRect:メソッドを使用してプログラムによって画面の場所にNMAARObject移動できます。

CGPoint point = {50, 50};
NSArray* objectsAtPoint = [arController objectsAtPoint:point];
CGRect viewRect = CGRectMake(50, 50, 25, 25);
NSArray* objectsInViewRect = [arController objectsInRect:viewRect);

NMAARObjects を選択しています

を取得した後 NMAARObjectselectObject:deselectObject 、メソッドおよびメソッドを呼び出して、選択および選択解除を選択できます。 オブジェクトを選択すると、オブジェクトの情報画像が折りたたまれ、裏面の画像が前面の画像と置き換えられます ( オブジェクトが前面にある場合 ) 。

注 : 単一 NMAARObject のにフォーカスを設定して同時に選択することはできません。 ただし NMAARObject 、フォーカスを合わせて別のフォーカス NMAARObject を同時に選択することは可能です。

現在のポーズを読み込み中です

NMAARController LiveSight セッションの現在の位置および方向(ポーズ)の値を取得する便利な方法を提供します。 poseReading プロパティを使用すると NMAARPoseReading 、次の値を含むインスタンスを取得できます。
  • 見出し ( ヨー )
  • ピッチ
  • ロール
  • 場所(緯度、経度、 Altitude )
  • タイムスタンプ
これら NMAARPoseReading の値はデバイスセンサーから取得されますが、 LiveSight エンジンによって補間およびスムージングされます。