Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

547
Views
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.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

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()
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!