ARRaycastQuery
실제 세계의 표면에서 3D 위치를 찾는 데 사용하는 수학적 광선.
개요
- 3D 벡터와 시작 위치를 제공하여 레이 캐스트 쿼리를 만듭니다
- 사용자로부터 z-방향으로 바깥쪽으로 향하는 2D 화면 위치 및 기본 벡터를 사용하여 레이 캐스트 쿼리를 만들려면,
[ARView](https://developer.apple.com/documentation/realitykit/arview)
에 있는[makeRaycastQuery(from:allowing:alignment:)](https://developer.apple.com/documentation/realitykit/arview/3255315-makeraycastquery)
혹은ARSCNView
에 있는raycastQuery(from:allowing:alignment:)
편의 함수를 사용하세요.
Raycast 쿼리 생성
-
init(origin:direction:allowing:alignment:)
-
origin:
simd_float3
- 레이의 시작점을 설명하는 3D 위치입니다.
-
direction:
simd_float3
- 레이의 방향을 설명하는 3D 벡터입니다.
-
allowing:
ARRaycastQuery.Target
- 레이캐스트를 교차할 수 있는 평면 유형입니다.
-
alignment:
ARRaycastQuery.TargetAlignment
- 레이캐스트가 교차 할 수 있도록하는 중력에 대한 대상의 정렬입니다.
simd_float3 : 32비트 단일 정밀도 값의 벡터.
-
이것은 3D 시작 장소와 벡터를 공급하여 레이캐스트 쿼리를 생성한다. 화면 점과 사용자로부터 바깥쪽을 가리키는 벡터를 사용하여 레이캐스트 쿼리를 얻으려면
ARSCNView
에서raycastQuery(from:allowing:alignment:)
를 호출하십시오.
-
target 얻기
target
: ARRaycastQuery.Target
- 레이가 마주치면 종료를 허용하는 평면 유형.
- 이용 가능한 대상 유형은 평면, 무한 평면 및 추정 평면이다.
ARRaycastQuery.Target
레이캐스트와 교차할 수 있는 평면 유형.
estimatedPlane
- 평면을 받아들이는 ARKit이 덜 확신하는 레이캐스트 대상. (?)
- 이 타겟이 있는 레이캐스트는 ARKit이 평면으로 추정 할 수있는 광선 주변의 특징점과 교차 할 수 있습니다.
ARRaycastQuery.TargetAlignment.any
와 결합하면 추정 평면 정렬은 추정 평면에 해당하는 보통의 실제 세계 표면을 기반으로 합니다.
existingPlaneGeometry
- 평면에 명확한 크기와 모양이 필요한 레이캐스트 대상.
existingPlaneInfinite
- 크기와 모양에 관계없이 탐지된 평면을 지정하는 레이캐스트 대상.
targetAlignment
: ARRaycastQuery.TargetAlignment
- 중력에 대한 대상의 정렬.
- 사용 가능한 옵션은 가로, 세로 또는 모두입니다.
ARRaycastQuery.TargetAlignment
중력에 대한 대상의 정렬을 나타내는 설명
any
- 대상이 중력과 관련하여 어떤 방식으로든 정렬될 수 있음을 나타낸다.
horizontal
- 대상이 중력에 대해 수평으로 정렬되어 있음을 표시한다.
vertical
- 대상이 중력에 대해 수직으로 정렬되어 있음을 표시한다.
레이 해석
direction
:simd_float3
- 3D 공간에서 광선의 궤적을 설명하는 벡터입니다.
origin
:simd_float3
- 광선의 시작 위치를 정의하는 3D 좌표입니다.
ARTrackedRaycast
ARKit이 연속적으로 반복하여 시간이 지남에 따라 정교한 결과를 제공하는 레이캐스트 쿼리
개요
- Tracked Ray-Casting은 연속적으로 3D 위치에 대한 쿼리를 반복함으로써 hit-testing 기술을 개선한다. ARKit은 시간이 지남에 따라 세계에 대한 이해를 새롭게 하는 새로운 위치를 제공한다.
- Tracked 레이캐스트를 시작하려면 앱의 현재 ARSession에서
trackedRaycast(_:updateHandler:)
를 호출합니다.
트래킹 중지
stopTracking()
- 레이 캐스트 쿼리 반복을 중지합니다.
- 추적 된 레이 캐스트는
stopTracking()
을 호출하여 명시 적으로 중지 할 때까지 지속적으로 업데이트됩니다. 다음과 같은 경우 레이 캐스트가 자동으로 중지됩니다.- ARKit이
sessionWasInterrupted(_:)
를 호출할 때 - 세션의 구성을 변경할 때
ARTrackedRaycast
의 할당을 해제할 때update(_:)
를 사용하여 제공 한 쿼리가 실패할 때
- ARKit이
ARRaycastResult
화면의 한 지점을 검사하여 발견한 실제 지표면에 대한 정보
개요
RealityKit
또는SceneKit
을 렌더러로 사용하는 경우ARSCNView
의raycastQuery(from:allowing:alignment:)
함수를 사용하여 스크린 포인트에서 실제 표면을 검색 할 수 있습니다.- 사용자 지정 렌더러를 사용하는 경우 다음과 함께 화면 지점을 사용하여 실제 위치를 찾을 수 있음:
ARFrame
의raycastQuery(from:allowing:alignment:)
함수ARSession
의raycast(_:)
함수
- 추적된 레이캐스팅의 경우, 앱의 현재
ARSession
에서trackedRaycast(_:updateHandler:)
로 호출하십시오.
결과 식별
worldTransform
: simd_float4x4
- 레이가 대상과 교차하는 위치, 회전 및 배율입니다.
simd_float4x4 : 단일 정밀도 값을 포함하는 4개의 열과 4개의 행의 행렬.
단정도(single precision), 배정도(double precision)이란?
anchor
- 선이 교차하는 평면의 앵커.
댓글