Arcore - Sesión, Marco, la cámara y plantean

khanate:

Estoy estudiando las Arcore referencias , Desarrollar , hacer el curso de Coursera , y de leer, comprender y aprender de las muestras .

Pero todavía falta alguna definición con algunos ejemplos reales de uso.

¿Qué es una sesión? Cada vez que necesito un uso Arcore necesito una sesión? Sesión siempre tiene una cámara de conexión para que pueda ver y dibujar / procesador de mis modelos en 3D en la pantalla? ¿Puedo hacer esto sin una sesión?

Cámara tiene un getPose y marco tiene un GetPose, ¿cuáles son las Diferencias entre ellos?

Pensé en hacer esta división preguntas, pero de alguna manera sé que todos ellos están conectados. Sesiones, CameraAr, Marco y pose.

Andy:

sobre ArSession

ArSessiones el elemento más crucial en la AR rompecabezas . Sesión administra el estado de sistema de RA y maneja el ciclo de vida de la sesión. Clase de sesión es el principal punto de entrada a la API de Arcore. Esta clase permite al usuario crear una sesión, configura, iniciar o detener y, lo más importante, recibirArFramesque permiten el acceso a laARCameraimagen y el dispositivo de Pose .

Para utilizar Arcore se necesita una ArSession. Arcore no hace que los modelos 3D ( Renderables). Este trabajo es para Sceneformmarco .

introducir descripción de la imagen aquí

El ejemplo de código:

private Session mSession;
Config config = new Config(mSession);

if (!mSession.isSupported(config)) {
    showSnackbarMessage("This phone doesn't support AR", true);
}
mSession.configure(config);

También la configuración de la sesión puede incluir clases anidadas:

  • Config.AugmentedFaceMode (selecciona el comportamiento del Augmented Facessubsistema)
  • Config.CloudAnchorMode (El modo de anclaje nube en Config)
  • Config.FocusMode (selecciona el comportamiento deseado del camera focussubsistema)
  • Config.LightEstimationMode (Seleccione el comportamiento del lighting estimationsubsistema)
  • Config.PlaneFindingMode (Seleccione el comportamiento del plane detectionsubsistema)
  • Config.UpdateMode (selecciona el comportamiento de los update())

sobre Pose

Poserepresenta una transformación rígida inmutable de un espacio de coordenadas a otro. Tal como se establece a partir de todas las API Arcore, plantea siempre describen la transformación del espacio de coordenadas local del objeto al espacio de coordenadas mundo. La transformación se define utilizando una rotación de cuaternión sobre el origen, seguido de una traducción.

El ejemplo de código:

float[] position = { 0, 0, -2.2 };          //  { x, y, z } position 
float[] rotation = { 0, 0, 0, 1 };          //  { x, y, z, w } quaternion rotation

Session session = arFragment.getArSceneView().getSession();
Anchor myAnchor = session.createAnchor(new Pose(position, rotation));

sobre ARCamera

ARCamerarepresenta una cámara virtual, que determina la perspectiva a través de la cual se ve la escena. Si la cámara es parte de una ArSceneView, entonces la cámara sigue automáticamente el Pose cámara de Arcore. ARCamera es un objeto vivido largo y las propiedades de la cámara se actualiza cada vez que Session.update()se llama. Cameraclase proporciona información sobre la cámara que se utiliza para capturar imágenes e información adicional dentro de cada uno ArFrame.

El ejemplo de código:

// Shared camera access with ARCore

sharedSession = new Session(this, EnumSet.of(Session.Feature.SHARED_CAMERA))
sharedCamera = sharedSession.getSharedCamera();
cameraId = sharedSession.getCameraConfig().getCameraId();

sobre ArFrame

Cuando la comprensión de Arcore de los cambios en el entorno, se ajusta su modelo del mundo para mantener la coherencia. Cuando esto sucede, la ubicación numérica (coordenadas) de la ARCameray ARAnchorspuede cambiar significativamente para mantener las posiciones relativas apropiadas de las ubicaciones físicas que represent.These cambios significa que cada ArFramedebe ser considerado para estar en una completamente único mundo espacio de coordenadas . Las coordenadas numéricas de ARAnchorsy el ARCameranunca debe ser usado fuera del marco de la prestación durante los cuales fueron recuperados.

Cada ArFrameconserva la siguiente información acerca del estado de Arcore ::

  • imagen RGB en sí
  • estado de seguimiento
  • La pose de la cámara con respecto al mundo
  • parámetros de iluminación estimados
  • La información sobre cambios a los objetos (como nubes de puntos)

El ejemplo de código:

private void onUpdateFrame(FrameTime frameTime) {

    Frame frame = arFragment.getArSceneView().getArFrame();

    // .............
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=179998&siteId=1
Recomendado
Clasificación