#hittest #spark-ar-studio
#hittest #spark-ar-studio
Вопрос:
В Spark AR я пытаюсь поместить объект в точку на плоском трекере, которая равна центру нижней части экрана. В псевдокоде:
tracker.hitTest(screenBottomCenter)
Проблема в том, что, как указано в документах, функция hitTest принимает объект Point2d, который не совпадает с Point2dSignal. Если я попытаюсь создать значение screenCenter с помощью
Reactive.point2d(x,y)
Я получаю эту ошибку:
expected to get a subclass of point2d ; got Point2dSignal
Дело в том, что вы просто «должны» указывать местоположение касания в тесте попадания, и, похоже, Spark не учитывал другие типы значений.
Итак, какие-либо решения или обходные пути? На самом деле просто хочу разместить свой объект, поэтому, если мне нужен пользовательский тест попадания, пусть будет так. Но было бы неплохо использовать встроенную функцию.
Ответ №1:
Я нашел решение. Я публикую полный код здесь:’
// Subscribe to tap gestures. Set placedObject at the bottom
//of the screen onto tracked plane
TouchGestures.onTap().subscribeWithSnapshot( {
previewX: CameraInfo.previewSize.x,
previewY: CameraInfo.previewSize.y,
}, function (gesture, snapshot) {
var screen = gesture.location;
// Because we can't manually create a Point2D object we use the
// gesture location object and change the values ourselves
screen.x = snapshot.previewX / 2;
screen.y = snapshot.previewY;
tracker.performHitTest(screen).then((result) => {
Diagnostics.log(result.x);
placedObject.transform.position = R.pack3(result.x, result.y, result.z);
});
});
Ответ №2:
Метод performHitTest имеет несколько подписей. Вы можете просто использовать:
tracker.performHitTest(snapshot.previewX / 2, snapshot.previewY).then(...)