Integración de jPCT con Vuforia / SDK de QCAR
Tengo problema usar Vuforia con jPCT.
He pasado con éxito el modelViewMatrix
del código nativo de Vuforia
- Shader para Android OpenGL ES
- Problemas con la cámara OpenGL ES 2.0
- OpenGL en Android: ¿Algún conflicto al llamar a funciones de OpenGL en Java y C ++?
- Opengl ES OES vs EXT?
- Cómo dibujar una imagen de fondo grande con libgdx - las mejores prácticas?
QCAR::Matrix44F modelViewMatrix = QCAR::Tool::convertPose2GLMatrix(imageResult->getPose())
A Java
Y entonces intento fijar la matriz de la cámara de jPCT.
public void setCameraMatrix(float[] modelViewMatrixFromVuforia) { float x = modelViewMatrixFromVuforia[12]; float y = modelViewMatrixFromVuforia[13]; float z = modelViewMatrixFromVuforia[14]; modelViewMatrixFromVuforia[12] = 0; modelViewMatrixFromVuforia[13] = 0; modelViewMatrixFromVuforia[14] = 0; Matrix cameraMatrix = new Matrix(); cameraMatrix.setDump(modelViewMatrixFromVuforia); cameraMatrix = cameraMatrix.invert(); camera.setBack(cameraMatrix); camera.setPosition(x, y, z); }
Pero el Objeto 3D no está siendo rastreado correctamente. ¿Qué he extrañado?
- Mapeando una textura en un cuadrado: ¿Por qué se rota la imagen?
- Evitar los puestos al subir texturas en Android
- ¿Qué tipo de efectos secundarios tiene libgdx numSamples?
- Rajawali cámara giratoria con Sensor.TYPE_ROTATION_VECTOR comportamiento extraño
- Ayuda para rectificar escalas de línea en Android OpenGL 2.0 con RQAR
- Buscando un método multiplataforma para gráficos básicos 2D / 3D para iOS y Android
- ¿Cómo puedo recursivamente dibujar un mapa hexadecimal en opengl?
- Decodificación y reproducción de vídeo en Android
Estoy usando esto y funciona perfectamente:
private Matrix mMatrix = new Matrix(); ... mMatrix.setDump(modelViewMatrixFromVuforia); // float[16] sent from native code mCamera.setBack(mMatrix);
Pero hay que girar la matriz 180 grados alrededor del eje X antes de enviarla a Java para que coincida con el sistema de coordenadas de Vuforia a jPCT.
Hacer la rotación en los códigos nativos de la siguiente manera:
SampleUtils::rotatePoseMatrix(180.0f, 1.0f, 0, 0, &modelViewMatrix.data[0]);