運用編碼擴充 Vuforia Studio 功能 > 具有 userpick 事件的幾何資訊對應
  
具有 userpick 事件的幾何資訊對應
您可以使用 userpick 事件的 eventData 引數以取得 3D 模型的幾何資訊。此資訊後續可用於建立定位點或參考資訊標記 (POI)。
* 
此功能僅適用於模型,不支援區域目標、圖像目標與 3D 圖像。
userpick 事件隨附了 3D 方位向量形式的幾何資料,其中包含選取點的 x、y 和 z 座標以及其 3D 表面垂直向量;稱之為 positionnormal。例如:
{
"position": [
100.987,
-200.654,
300.321
],
"normal": [
0.6,
-0.8,
0.0
]
}
方位座標和接觸 (點擊) 點表面垂直會以陣列 (x, y, z) 的形式回報於 eventData 引數中,以便由事件接聽程式進行挑選:
$scope.$on('userpick', function(event, targetName, targetType, eventData)
如果無法在 userpick 事件使用幾何資訊,方位與垂直陣列會留空:
{
"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]);
})