使用 userpick 事件映射几何信息
可以使用 userpick 事件的 eventData 自变量来获取 3D 模型的几何信息。此信息随后可用于创建路标或关注点 (POI)。
|
此功能仅适用于模型,不支持区域目标、图像目标和 3D 图像。
|
userpick 事件包含 3D 位置向量形式的几何数据,该向量由拾取点的 x、y、z 坐标及其 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": []
}
示例
以下是可添加到 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]);
})