• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

485
Vistas
ARKit: emisión de rayos usando un rayo mundial en lugar de un punto de pantalla

Quiero lograr algo similar al método raycast de ARCore que toma un rayo arbitrario en las coordenadas del espacio mundial en lugar de un punto del espacio de la pantalla:

 List<HitResult> hitTest (float[] origin3, int originOffset, float[] direction3, int directionOffset)

Veo que ARKit en sí mismo no tiene ese método, pero de todos modos, ¡quizás alguien tenga una idea!

Gracias.

about 3 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

En los marcos Apple RealityKit y ARKit, puede encontrar tres tipos principales de métodos Raycast : ARView Raycast , ARSession Raycast y Scene Raycast (o World Raycast). Todos los métodos escritos en Swift:


ARView.raycast(de:permitir:alineación:)

Este método de instancia realiza una proyección de rayos, donde se proyecta un rayo en la escena desde el centro de la cámara a través de un punto en la vista, y los resultados se devuelven inmediatamente. Puede usar este tipo de raycast en ARKit.

 func raycast(from point: CGPoint, allowing target: ARRaycastQuery.Target, alignment: ARRaycastQuery.TargetAlignment) -> [ARRaycastResult]


ARView.scene.raycast(origen:dirección:consulta:máscara:relativoa:)

MUNDO RAYCAST

Este método de instancia realiza un lanzamiento de rayos convexos contra toda la geometría de la escena para un rayo de un origen, dirección y longitud determinados.

 func raycast(origin: SIMD3<Float>, direction: SIMD3<Float>, query: CollisionCastQueryType, mask: CollisionGroup, relativeTo: Entity) -> [CollisionCastHit]


ARView.session.trackedRaycast(_:updateHandler:)

Este método de instancia repite una consulta de emisión de rayos a lo largo del tiempo para notificarle sobre superficies actualizadas en el entorno físico. Puede usar este tipo de raycast en ARKit 3.5.

 func trackedRaycast(_ query: ARRaycastQuery, updateHandler: @escaping ([ARRaycastResult]) -> Void) -> ARTrackedRaycast?


ARView.trackedRaycast(de:permitiendo:alineación:updateHandler:)

Este método de instancia de RealityKit también realiza un lanzamiento de rayos rastreados, pero aquí se proyecta un rayo en la escena desde el centro de la cámara a través de un punto en la vista.

 func trackedRaycast(from point: CGPoint, allowing target: ARRaycastQuery.Target, alignment: ARRaycastQuery.TargetAlignment, updateHandler: @escaping ([ARRaycastResult]) -> Void) -> ARTrackedRaycast?


Fragmento de código 01:

 import RealityKit let startPosition: SIMD3<Float> = [3,-2,0] let endPosition: SIMD3<Float> = [10,7,-5] let query: CollisionCastQueryType = .all let mask: CollisionGroup = .all let raycasts: [CollisionCastHit] = arView.scene.raycast(from: startPosition, to: endPosition, query: query, mask: mask, relativeTo: nil) guard let rayCast: CollisionCastHit = raycasts.first else { return }

Fragmento de código 02:

 import ARKit let query = arView.raycastQuery(from: screenCenter, allowing: .estimatedPlane, alignment: .any) let raycast = session.trackedRaycast(query) { results in if let result = results.first { object.transform = result.transform } } raycast.stop()
about 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda