Попадание в центр тестирования внизу экрана на плоском трекере в Spark AR

#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(...)