Android ARCore открытый мир для отображения координат

#android #opengl-es #arcore

Вопрос:

В проекте расширенного отслеживания лиц мне нужно получить координаты экрана для конкретной точки лица, имеющей вершины сетки, нормали сетки. Я знаю решение с помощью sdk sceneform, но я не хочу его использовать, так как в нем есть ошибка на Samsung Galaxy S9 (лицо обнаружено с отклонением влево и вверх). Я пытаюсь получить координаты экрана точки дополненного лица таким образом, но получаю неправильные результаты

         val x1 = face.meshVertices.get(FACE_UPPER_CENTRAL_POINT * 3)
        val y1 = face.meshVertices.get(FACE_UPPER_CENTRAL_POINT * 3   1)
        val z1 = face.meshVertices.get(FACE_UPPER_CENTRAL_POINT * 3   2)
        val x2 = face.meshVertices.get(FACE_LOWER_CENTRAL_POINT * 3)
        val y2 = face.meshVertices.get(FACE_LOWER_CENTRAL_POINT * 3   1)
        val z2 = face.meshVertices.get(FACE_LOWER_CENTRAL_POINT * 3   2)

        val point1 = getScreenCoordinates(Vector3(x1, y1, z1), viewMatrix, projectionMatrix)
        val point2 = getScreenCoordinates(Vector3(x2, y2, z2), viewMatrix, projectionMatrix)
 

забавные координаты getScreenCoordinates(координаты: Вектор3, матрица просмотра: FloatArray, матрица проекции: FloatArray): Вектор2 {

 val view = IntArray(4)
view[0] = 0
view[1] = 0
view[2] = App.helper.getDisplayWidth()
view[3] = App.helper.getDisplayHeight()
val pos = FloatArray(4)
GLU.gluProject(coord.x, coord.y, coord.z, viewMatrix, 0, projectionMatrix, 0, view, 0 , pos, 0)


return Vector2(pos[0], pos[1])
 

}

Любая помощь очень ценится!