Почему я получаю неправильные координаты местоположения при использовании теста попадания в ARKit через RoboVM? - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь разработать тестовое приложение AR с ARKit, используя RoboVM. После настройки сеанса с помощью ARWorldTrackingConfiguration и его запуска я хотел бы определить положение на обнаруженной горизонтальной плоскости (полу), выполнив тест попадания следующим образом:

public void addTapGestureToSceneView(){
    UITapGestureRecognizer uiTapGestureRec = new UITapGestureRecognizer();
    uiTapGestureRec.addListener(new UIGestureRecognizer.OnGestureListener() {
        @Override
        public void onGesture(UIGestureRecognizer uiGestureRecognizer) {
            CGPoint tapLocation = uiGestureRecognizer.getLocationInView(arView);
            NSArray<ARHitTestResult> hitTestResults = arView.hitTest(tapLocation, ARHitTestResultType.FeaturePoint);

            if(!hitTestResults.isEmpty()) {
                VectorFloat3 vec3 = getTranslation(hitTestResults.last().getWorldTransform());
                addBox(vec3);
            }
        }
    });
    arView.addGestureRecognizer(uiTapGestureRec);
} 

(getTranslation(...) - вспомогательный метод, извлекающий третий столбец матрицы преобразования) В addBox(VectorFloat3 position) добавлен узел с геометрией ящика.

Проблема в том, что это всегда возвращает координаты теста попадания со всеми тремя компонентами, близкими к нулю (например, x * 10 ^ -35), поэтому поле добавляется почти в центре телефона, с которым я тестирую это приложение.

Что-то не так с моей реализацией или это может быть ошибка в RoboVM?


Обновление:
Проблема решена в новой версии RoboVM.
См. Запрос на выдачу: https://github.com/MobiVM/robovm/pull/339
и: https://dkimitsa.github.io/2018/12/11/vector-data-types/

1 Ответ

0 голосов
/ 11 декабря 2018

В коде компилятора robovm obj была ошибка, из-за которой векторные типы данных (SIMD) неправильно маршалировались (как общие структуры) по сравнению с ABI. Это вызывает мусор при нацеливании на ARM64 и GPF при запуске симулятора. Это уже исправлено и объединено с мастером. Также доступно в версии 2.3.6-SNAPSHOT. Проверьте этот pr для деталей https://github.com/MobiVM/robovm/pull/339

...