userpick イベントを使用したジオメトリ情報マッピング
userpick イベントの eventData 引数を使用して、3D モデルのジオメトリ情報を取得できます。この情報は、ウェイポイントまたは注目ポイント (POI) の作成に使用できます。
|
この機能はモデルでのみ使用できます。エリアターゲット、イメージターゲット、3D イメージではサポートされていません。
|
userpick イベントには、選択した点の x、y、z 座標とその 3D サーフェス法線ベクトルから構成される 3D 位置ベクトルの形式のジオメトリデータが含まれます。これらは position および normal と呼ばれます。たとえば、次のようになります。
{
"position": [
100.987,
-200.654,
300.321
],
"normal": [
0.6,
-0.8,
0.0
]
}
接触 (タップ) 点の位置座標とサーフェス法線は、eventData 引数で配列 (x, y, z) として報告され、イベントリスナーが取得できるようになります。
$scope.$on('userpick', function(event, targetName, targetType, eventData)
userpick イベントにジオメトリ情報が使用できない場合、position 配列と normal 配列は空になります。
{
"position": [],
"normal": []
}
例
Home.js に追加できるコードスニペットの例を次に示します。
|
• userpick イベントはワールド座標系でのみ使用でき、相対座標では使用できません。
• userpick イベントはモデルに対してのみ送信されます。
|
$scope.$on('userpick', function (event, targetName, targetType, eventData) {
// event data will be empty for 3D images
//
if (eventData == []) {
console.error('Pick on unsupported object: No event data')
return
}
// the pick event gives us the item id, position and normal
//
let position = JSON.parse(eventData).position
// geometric information will not be available
// for unsupported objects
if (position.length != 3) {
console.error('Pick on unsupported object: No position data')
return
}
// put a "ball" at the point the user just touched
//
$scope.setWidgetProp("ball", "x", position[0]);
$scope.setWidgetProp("ball", "y", position[1]);
$scope.setWidgetProp("ball", "z", position[2]);
})