es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Método del punto del proyecto: convirtiendo rawFeaturePoint a Espacio de Pantalla.

Hola a todos, estoy tratando de entender los valores que se me devuelven cuando uso la función projectPoint de ARKit.

Mi objetivo es tomar un punto, p = (x, y, z), donde todos los valores de la tupla están en el rango [-1, 1] y convertirlo en p' = (x', y'), donde todos los valores del par están en el rango [0,1], es decir, proyectar desde el espacio mundial al espacio de pantalla/imagen.

Sé que arframe.camera.imageResolution = (1920.0, 1440.0),
y sé que el tamaño de mi pantalla es (390.0, 844.0).

Entonces, cuando uso la función, escribo: arframe.camera.projectPoint(point: p, orientation: .portrait, viewportSize: arframe.camera.imageResolution)

Esto devuelve (x, y), pero sucede que a veces x > 1440.0 y y > 1920.0.
Además, a veces x e y son valores negativos.

Estoy confundido acerca de cómo la función devuelve valores que son mayores que el tamaño de la ventana gráfica que le dimos. También estoy confundido acerca de por qué los valores mismos son negativos.

La documentación proporcionada por Apple indica que la función “devuelve la proyección de un punto desde el espacio tridimensional detectado por ARKit al espacio bidimensional de una vista que representa la escena”.

¿Qué significa más explícitamente “espacio bidimensional de una vista que representa la escena”?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Entendiendo la función projectPoint de ARKit

    Como experto en IT especializado en Swift, SceneKit y ARKit, puedes ayudar a aclarar los valores confusos devueltos por la función projectPoint en ARKit.

    El objetivo

    El objetivo de la función projectPoint es proyectar un punto p = (x, y, z) del espacio mundial al espacio de pantalla/imágen, resultando en p' = (x', y') donde ambos valores en el par están en el rango [0, 1].

    Los parámetros

    La función toma tres parámetros:

    • point – el punto que se va a proyectar
    • orientation – la orientación de la pantalla del dispositivo
    • viewportSize – el tamaño del viewport en el que se renderiza la pantalla

    En el ejemplo proporcionado, arframe.camera.imageResolution = (1920.0, 1440.0) y el tamaño de la pantalla es (390.0, 844.0).

    Los valores devueltos

    La función devuelve los valores (x, y) para el punto proyectado. Sin embargo, puede ser el caso de que x > 1440.0 y y > 1920.0 a veces, y otras veces, x e y son valores negativos.

    La confusión

    Como experto en IT, es posible que estés confundido acerca de cómo la función devuelve valores mayores que el tamaño del viewport proporcionado, y por qué los propios valores a veces son negativos.

    Entendiendo el “espacio 2D de una vista que renderiza la escena”

    Según la documentación proporcionada por Apple, la función projectPoint “devuelve la proyección de un punto desde el espacio 3D del mundo detectado por ARKit hacia el espacio 2D de una vista que renderiza la escena”.

    El “espacio 2D de una vista que renderiza la escena” se refiere al espacio 2D de la vista en la que se renderiza tu escena ARKit. Esto podría ser una UIView, SKView u otro tipo de vista en la que se muestra la escena.

    En otras palabras, la función proyecta el punto 3D en un plano 2D dentro de la vista en la que se dibuja la escena. Este plano puede ser más grande que el tamaño del viewport proporcionado y los valores devueltos pueden ser negativos si el punto proyectado está fuera de la pantalla.

Comments are closed.