useXRHitTestSource
useXRHitTestSource(
relativeTo
,trackableType?
):undefined
| {getWorldMatrix
: (...args
) =>boolean
;source
:XRHitTestSource
; }
Hook for creating a hit test source originating from the provided object or XRSpace. The provided object must be statically positioned in the XRSpace.
Parameters
relativeToThe XRSpace, XRReferenceSpace, or Object3D to perform hit-tests from
XRSpace
| XRReferenceSpaceType
| RefObject
<null
| Object3D
<Object3DEventMap
>>
A string, or array of strings that specify the types of surfaces to hit test against ('point', 'plane', 'mesh')
XRHitTestTrackableType
| XRHitTestTrackableType
[]
Returns
undefined
| { getWorldMatrix
: (...args
) => boolean
; source
: XRHitTestSource
; }
Example
function ManualHitTest() {
const meshRef = useRef<Mesh>(null)
const hitTestSource = useXRHitTestSource('viewer')
const [someCondition, setSomeCondition] = useState(false)
const [hitResults, setHitResults] = useState<XRHitTestResult[]>([])
useFrame((_, __, frame: XRFrame | undefined) => {
// Only perform hit testing when certain conditions are met
if (frame && hitTestSource && someCondition) {
const results = frame.getHitTestResults(hitTestSource.source)
setHitResults(results)
}
})
return (
<IfInSessionMode allow={'immersive-ar'}>
<XRDomOverlay>
<button onClick={() => setSomeCondition(true)}>Turn on hit testing</button>
</XRDomOverlay>
</IfInSessionMode>
)
}