userpick 이벤트에 기하학적 정보 매핑
userpick 이벤트의 eventData 인수를 사용하여 3D 모델의 기하학적 정보를 얻을 수 있습니다. 그런 다음 이 정보를 사용하여 웨이포인트 또는 강조할 포인트(POI)를 만들 수 있습니다.
|
이 기능은 모델에만 사용할 수 있으며 영역 대상, 이미지 대상 및 3D 이미지는 지원되지 않습니다.
|
userpick 이벤트에는 선택한 지점의 x, y 및 z 좌표와 해당 3D 서피스 법선 벡터로 구성된 3D 위치 벡터 형태의 기하학적 데이터가 포함됩니다. 이를 normal 및 position이라고 합니다. 예:
{
"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]);
})