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 つの平面から別の平面に移動できます。
![]() | ![]() |
フロントプレーンで は、 LiveSight オブジェクトはアイコンと情報ビュー ( 情報ビュー ) の両方で表され、アイコンの側面から外に出ます。 この情報ビューは、オブジェクトの詳細情報を表示するメカニズムとして機能することを目的としています。 背面平面では、オブジェクトは最初に 1 つのアイコンで表されます。 オブジェクトをフォーカスすることで、背面に情報ビューを表示することができます。 正面( Front )平面と背面( Back )平面のアイコンは異なる場合があり、デフォルトでは、平面間の遷移がアニメーション化されます。
NMAARObject クラス
NMAARObject
LiveSight に追加して表示できる他のすべてのオブジェクトのベースクラスです。 以下 の操作を可能にするすべての LiveSight オブジェクトに共通のメソッドが含まれています。
- オブジェクトの現在の位置を設定して取得します
- オブジェクトの前面および背面のアイコンを設定して取得します
- オブジェクトの前面および背面のアイコンサイズを設定して取得します
- 情報ビューのサイズ、イメージ、および拡張の状態を設定して取得します
setFrontPlaneIconSize:
、の方法で設定する必要 NMAARController
があります。 NMAARIconObject クラス
単一の子クラスですNMAARObject
NMAARIconObject
。 NMAARIconObject
LiveSight オブジェクトモデルで説明されているオブジェクトモデルを表します。 この関数は唯一のコンクリートであるため NMAARObject
NMAARObject
、そのほとんどの関数はにあります。
NMAARObject の追加と操作
LiveSight にNMAARObject
を追加 するには 、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];
同様に、 NMAARObjects
は removeObject:
次のメソッドを使用して削除できます NMAARController
。
[arController removeObject:iconObject];
との対話を容易にする NMAARObjects
NMAARControllerGestureDelegate
gestureDelegate
NMAARController
ために、のプロパティを使用してを登録できます。 TAP イベントが発生すると NMAARObject
arController: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 を選択しています
を取得した後 NMAARObject
selectObject:
deselectObject
、メソッドおよびメソッドを呼び出して、選択および選択解除を選択できます。 オブジェクトを選択すると、オブジェクトの情報画像が折りたたまれ、裏面の画像が前面の画像と置き換えられます ( オブジェクトが前面にある場合 ) 。
NMAARObject
のにフォーカスを設定して同時に選択することはできません。 ただし NMAARObject
、フォーカスを合わせて別のフォーカス NMAARObject
を同時に選択することは可能です。 現在のポーズを読み込み中です
NMAARController
LiveSight セッションの現在の位置および方向(ポーズ)の値を取得する便利な方法を提供します。 poseReading
プロパティを使用すると NMAARPoseReading
、次の値を含むインスタンスを取得できます。 - 見出し ( ヨー )
- ピッチ
- ロール
- 場所(緯度、経度、 Altitude )
- タイムスタンプ
NMAARPoseReading
の値はデバイスセンサーから取得されますが、 LiveSight エンジンによって補間およびスムージングされます。