Zuordnung geometrischer Informationen zum userpick-Ereignis
Sie können das eventData-Argument des userpick-Ereignisses verwenden, um geometrische Informationen für ein 3D-Modell abzurufen. Diese Informationen können dann zum Erstellen von Wegpunkten oder Punkten von Interesse (POIs) verwendet werden.
|
Diese Funktion ist nur für Modelle verfügbar. Bereichsziele, Bildziele und 3D-Bilder werden nicht unterstützt.
|
Das userpick-Ereignis enthält die geometrischen Daten in Form eines 3D-Positionsvektors, der aus den x-, y- und z-Koordinaten des ausgewählten Punkts sowie dessen 3D-Oberflächen-Normalenvektors besteht, genannt position und normal. Beispiel:
{
"position": [
100.987,
-200.654,
300.321
],
"normal": [
0.6,
-0.8,
0.0
]
}
Die Positionskoordinaten und die Oberflächen-Normale des Kontaktpunkts werden im eventData-Argument als Array (x, y, z) angegeben, das vom Ereignis-Listener abgerufen werden kann:
$scope.$on('userpick', function(event, targetName, targetType, eventData)
Sind keine geometrischen Informationen für ein userpick-Ereignis verfügbar sind, so sind die Arrays für position und normal leer:
{
"position": [],
"normal": []
}
Beispiel
Nachfolgend finden Sie einen Beispiel-Codeausschnitt, der zu Home.js hinzugefügt werden könnte:
|
• userpick-Ereignisse sind nur für Weltkoordinaten verfügbar, nicht für relative Koordinaten.
• userpick-Ereignisse werden nur für das Modell gesendet.
|
$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]);
})