ARCore - рендеринг объектов на расстоянии 200 м от камеры - PullRequest
0 голосов
/ 28 февраля 2019

Я работаю над проектом Android AR, используя ARCore и Sceneform.Мне нужно поместить объекты на расстоянии от 30 до 200 метров от камеры пользователя и столкнуться с проблемой отбраковки фрустума в ArCore, описанной ЗДЕСЬ .

Я пытаюсь установить матрицу проекции , чтобы увеличить параметр far, используя этот метод

public void getProjectionMatrix (float[] dest, 
                                 int offset, 
                                 float near, 
                                 float far);

Но я не могу найти возможность установить матрицу проекции рендеринга.

Вот мой код:

arFragment.arSceneView.apply {
    scene.addOnUpdateListener {
        // Some code to return from this callback if arFrame is not initialised yet
        if (!objectsAdded) {
            placeObject(Pose.makeTranslation(0f, 100f, 100f), this)
            objectsAdded = true
            scene.camera.projectionMatrix = Matrix(computeProjectionMatrix(frame.camera))
            // P.S. frame.camera is ArCore's camera, scene.camera is Sceneform's one.
            // So, I'm not sure that using them in such way is consistent  
        }
    }
}

setProjectionMatrix Метод содержит аннотацию VisibleForTesting.Поэтому я не уверен, стоит ли мне его использовать, и есть гарантия, что он будет работать.

Пожалуйста, посоветуйте, могу ли я сделать это каким-то другим способом?Если нет, какой лучший способ сделать удаленные объекты видимыми для пользователя?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Используя Sceneform, вы можете установить дальнюю плоскость отсечения следующим образом: arFragment.getArSceneView().getScene().getCamera().setFarClipPlane(…);

0 голосов
/ 03 марта 2019

После тщательного расследования я обнаружил, что на данный момент (март 2019 г.) нет способа настроить far clipping plane и near clipping plane.

ARCamera. Давайте подождемкакое-то время, когда Google разрешает это разработчикам ARCore .

...