Я использую ARToolKit для Android для создания приложения дополненной реальности. Я могу без проблем применить матрицу проекции и матрицу преобразования маркеров в OpenGL, как объяснено в примере ARSimple. Однако я не нашел способа правильно применить их к камере jPCT-AE. Вот что я сделал для камеры:
Camera cam = world.getCamera();
Matrix projMatrix = new Matrix();
projMatrix.transformToGL();
projMatrix.setDump(ARToolKit.getInstance().getProjectionMatrix());
cam.setPosition(projMatrix.getTranslation());
cam.setBack(projMatrix);
и для объекта:
Matrix objMat = new Matrix();
objMat.transformToGL();
objMat.setDump(ARToolKit.getInstance().queryMarkerTransformation(markerID));
cube.setTranslationMatrix(objMat);
cube.setRotationMatrix(objMat);
Это почти работает: я могу видеть 3D-объект, если маркер находится в центре экрана. Однако, когда я перемещаю маркер, он быстро исчезает с экрана. Кроме того, куб (и другие модели, которые я пытался загрузить), кажется, отображается каким-то «перевернутым» способом. Для того, что я прочитал в Интернете, матрицы ARToolKit относятся к мировым координатам OpenGL (в то время как jPCT-AE имеет свои собственные координаты), а также что проекционная матрица jPCT-AE построена внутри на основе fov, ближней и дальней плоскости отсечения. , положение и вращение, и тогда я не могу установить его напрямую.
Как преобразовать матрицу проекции и матрицу маркеров в механизм jPCT-AE?