Extensión de la funcionalidad en Vuforia Studio con código > Asignación de información geométrica con el evento userpick
  
Asignación de información geométrica con el evento userpick
Se puede utilizar el argumento eventData del evento userpick para obtener la información geométrica de un modelo 3D. Esta información se puede utilizar para crear puntos de recorrido o puntos de interés (POI).
* 
Esta función solo está disponible para modelos; no se soportan áreas de selección, objetivos tipo imagen ni imágenes 3D.
El evento userpick incluye los datos geométricos en forma de un vector de posición 3D formado por las coordenadas X, Y y Z del punto seleccionado y su vector normal a la superficie 3D; estos se denominan position y normal. Por ejemplo:
{
"position": [
100.987,
-200.654,
300.321
],
"normal": [
0.6,
-0.8,
0.0
]
}
Las coordenadas de posición y la normal a la superficie del punto de contacto (pulsación) se proporcionan en el argumento eventData como una matriz (x, y, z) para que el vigilante de eventos pueda seleccionarla:
$scope.$on('userpick', function(event, targetName, targetType, eventData)
Si la información geométrica no está disponible para un evento userpick, las matrices de posición y de la normal estarán vacías:
{
"position": [],
"normal": []
}
Ejemplo
A continuación se muestra un fragmento de código de ejemplo que se podría añadir a Home.js:
* 
Los eventos userpick solo están disponibles para coordenadas globales, no para coordenadas relativas.
Los eventos userpick solo se enviarán para el modelo.
$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]);
})