Skip to main content

Class: XRDeviceCamera

Defined in: src/camera/XRDeviceCamera.ts:34

Handles video capture from a device camera, manages the device list, and reports its state using VideoStream's event model.

Extends

Constructors

Constructor

new XRDeviceCamera(options): XRDeviceCamera

Defined in: src/camera/XRDeviceCamera.ts:53

Parameters

options

DeviceCameraOptions

The configuration options.

Returns

XRDeviceCamera

Overrides

VideoStream.constructor

Properties

aspectRatio?

optional aspectRatio: number

Defined in: src/video/VideoStream.ts:86

Inherited from

VideoStream.aspectRatio


height?

optional height: number

Defined in: src/video/VideoStream.ts:85

Inherited from

VideoStream.height


isXRScript

isXRScript: boolean = true

Defined in: src/core/Script.ts:99

Inherited from

VideoStream.isXRScript


loaded

loaded: boolean = false

Defined in: src/video/VideoStream.ts:83

Inherited from

VideoStream.loaded


rgbToDepthParams

rgbToDepthParams: RgbToDepthParams

Defined in: src/camera/XRDeviceCamera.ts:38


simulatorCamera?

optional simulatorCamera: SimulatorCameraSource

Defined in: src/camera/XRDeviceCamera.ts:37


state

state: StreamState = StreamState.IDLE

Defined in: src/video/VideoStream.ts:88

Inherited from

VideoStream.state


stream_

protected stream_: MediaStream | null = null

Defined in: src/video/VideoStream.ts:90

Inherited from

VideoStream.stream_


texture

texture: Texture

Defined in: src/video/VideoStream.ts:87

Inherited from

VideoStream.texture


video_

protected video_: HTMLVideoElement

Defined in: src/video/VideoStream.ts:91

Inherited from

VideoStream.video_


videoConstraints_

protected videoConstraints_: MediaTrackConstraints

Defined in: src/camera/XRDeviceCamera.ts:39


width?

optional width: number

Defined in: src/video/VideoStream.ts:84

Inherited from

VideoStream.width


xb?

optional xb: XBObjectOptions

Defined in: src/interaction/InteractionTypes.ts:32

Inherited from

VideoStream.xb

Accessors

isUsingXRCameraAccess

Get Signature

get isUsingXRCameraAccess(): boolean

Defined in: src/camera/XRDeviceCamera.ts:331

Whether the camera is using the WebXR Raw Camera Access API fallback.

Returns

boolean


video

Get Signature

get video(): HTMLVideoElement

Defined in: src/video/VideoStream.ts:92

Returns

HTMLVideoElement

Inherited from

VideoStream.video

Methods

dispose()

dispose(): void

Defined in: src/camera/XRDeviceCamera.ts:404

Disposes of all resources used by this stream.

Returns

void

Overrides

VideoStream.dispose


getAvailableDevices()

getAvailableDevices(): MediaOrSimulatorMediaDeviceInfo[]

Defined in: src/camera/XRDeviceCamera.ts:300

Gets the list of enumerated video devices.

Returns

MediaOrSimulatorMediaDeviceInfo[]


getAvailableVideoDevices()

getAvailableVideoDevices(): Promise<MediaOrSimulatorMediaDeviceInfo[]>

Defined in: src/camera/XRDeviceCamera.ts:67

Retrieves the list of available video input devices.

Returns

Promise<MediaOrSimulatorMediaDeviceInfo[]>

A promise that resolves with an array of video devices.


getCurrentDevice()

getCurrentDevice(): MediaOrSimulatorMediaDeviceInfo | undefined

Defined in: src/camera/XRDeviceCamera.ts:307

Gets the currently active device info, if available.

Returns

MediaOrSimulatorMediaDeviceInfo | undefined


getCurrentDeviceIndex()

getCurrentDeviceIndex(): number

Defined in: src/camera/XRDeviceCamera.ts:324

Gets the index of the currently active device.

Returns

number


getCurrentTrackSettings()

getCurrentTrackSettings(): MediaTrackSettings | undefined

Defined in: src/camera/XRDeviceCamera.ts:317

Gets the settings of the currently active video track.

Returns

MediaTrackSettings | undefined


getDeviceIdFromLabel()

protected getDeviceIdFromLabel(label): string | null

Defined in: src/camera/XRDeviceCamera.ts:126

Parameters

label

string

Returns

string | null


getSnapshot()

Call Signature

getSnapshot(options): ImageData

Defined in: src/video/VideoStream.ts:187

Captures the current video frame.

Parameters
options

VideoStreamGetSnapshotImageDataOptions

The options for the snapshot.

Returns

ImageData

The captured data.

Inherited from

VideoStream.getSnapshot

Call Signature

getSnapshot(options): Promise<string | null>

Defined in: src/video/VideoStream.ts:188

Captures the current video frame.

Parameters
options

VideoStreamGetSnapshotBase64Options

The options for the snapshot.

Returns

Promise<string | null>

The captured data.

Inherited from

VideoStream.getSnapshot

Call Signature

getSnapshot(options): Texture

Defined in: src/video/VideoStream.ts:191

Captures the current video frame.

Parameters
options

VideoStreamGetSnapshotTextureOptions

The options for the snapshot.

Returns

Texture

The captured data.

Inherited from

VideoStream.getSnapshot

Call Signature

getSnapshot(options): Promise<Blob | null>

Defined in: src/video/VideoStream.ts:192

Captures the current video frame.

Parameters
options

VideoStreamGetSnapshotBlobOptions

The options for the snapshot.

Returns

Promise<Blob | null>

The captured data.

Inherited from

VideoStream.getSnapshot


handleVideoStreamLoadedMetadata()

protected handleVideoStreamLoadedMetadata(resolve, reject, allowRetry): void

Defined in: src/video/VideoStream.ts:153

Processes video metadata, sets dimensions, and resolves a promise.

Parameters

resolve

() => void

The resolve function of the wrapping Promise.

reject

(_) => void

The reject function of the wrapping Promise.

allowRetry

boolean = false

Whether to allow a retry attempt on failure.

Returns

void

Inherited from

VideoStream.handleVideoStreamLoadedMetadata


init()

init(): Promise<void>

Defined in: src/camera/XRDeviceCamera.ts:94

Initializes the camera based on the initial constraints.

Returns

Promise<void>

Overrides

VideoStream.init


initPhysics()

initPhysics(_physics): void | Promise<void>

Defined in: src/core/Script.ts:118

Enables depth-aware interactions with physics. See /samples/advanced/ballpit

Parameters

_physics

Physics

Returns

void | Promise<void>

Inherited from

VideoStream.initPhysics


initStream_()

protected initStream_(): Promise<void>

Defined in: src/camera/XRDeviceCamera.ts:137

Initializes the media stream from the user's camera. After the stream starts, it updates the current device index based on the stream's active track.

Returns

Promise<void>


onHoverEnter()

onHoverEnter(_event): void

Defined in: src/core/Script.ts:215

Called when a source starts hovering over this object.

Parameters

_event

HoverEvent

The hover source, target, surface, and intersection. Call event.stopPropagation() to stop bubbling to ancestor Scripts.

Returns

void

Inherited from

VideoStream.onHoverEnter


onHoverExit()

onHoverExit(_event): void

Defined in: src/core/Script.ts:221

Called when a source stops hovering over this object.

Parameters

_event

HoverEvent

The hover source, target, surface, and intersection. Call event.stopPropagation() to stop bubbling to ancestor Scripts.

Returns

void

Inherited from

VideoStream.onHoverExit


onHovering()

onHovering(_event): void

Defined in: src/core/Script.ts:227

Called while a source hovers over this object.

Parameters

_event

HoverEvent

The hover source, target, surface, and intersection. Call event.stopPropagation() to stop bubbling to ancestor Scripts.

Returns

void

Inherited from

VideoStream.onHovering


onKeyDown()

onKeyDown(_event): void

Defined in: src/core/Script.ts:158

Called on keyboard keypress.

Parameters

_event

KeyEvent

Event containing .code to read the keyboard key.

Returns

void

Inherited from

VideoStream.onKeyDown


onKeyUp()

onKeyUp(_event): void

Defined in: src/core/Script.ts:159

Parameters

_event

KeyEvent

Returns

void

Inherited from

VideoStream.onKeyUp


onLongSelect()

onLongSelect(_event): void

Defined in: src/core/Script.ts:152

Called when an object selection reaches the long-select delay.

Parameters

_event

LongSelectEvent

Returns

void

Inherited from

VideoStream.onLongSelect


onObjectGrabbing()

onObjectGrabbing(_event): void

Defined in: src/core/Script.ts:253

Called every frame a hand is grabbing this object.

Parameters

_event

ObjectGrabEvent

Returns

void

Inherited from

VideoStream.onObjectGrabbing


onObjectGrabEnd()

onObjectGrabEnd(_event): void

Defined in: src/core/Script.ts:258

Called when a hand stops grabbing this object. This ends built-in direct-touch manipulation without ending contact.

Parameters

_event

ObjectGrabEvent

Returns

void

Inherited from

VideoStream.onObjectGrabEnd


onObjectGrabStart()

onObjectGrabStart(_event): void

Defined in: src/core/Script.ts:249

Called when a hand starts grabbing this object (touching + pinching). A grab starts built-in direct-touch manipulation when enabled.

Parameters

_event

ObjectGrabEvent

Returns

void

Inherited from

VideoStream.onObjectGrabStart


onObjectLongSelect()

onObjectLongSelect(_event): void

Defined in: src/core/Script.ts:203

Called once when a captured selection is held for the long-select delay. Manipulation captures do not emit this callback.

Parameters

_event

LongSelectEvent

The controller and completed hold duration. Call event.stopPropagation() to stop bubbling to ancestor Scripts.

Returns

void

Inherited from

VideoStream.onObjectLongSelect


onObjectManipulate()

onObjectManipulate(_event): void

Defined in: src/core/Script.ts:209

Called for each phase of an automatic object manipulation. Call event.stopPropagation() to stop bubbling. Calling preventDefault() on a start event suppresses the automatic action.

Parameters

_event

ManipulationEvent

Returns

void

Inherited from

VideoStream.onObjectManipulate


onObjectSelectEnd()

onObjectSelectEnd(_event): void

Defined in: src/core/Script.ts:196

Called when a source stops selecting the object this Script represents.

Parameters

_event

SelectEndEvent

The completed state and end reason. Call event.stopPropagation() to stop bubbling to ancestor Scripts.

Returns

void

Inherited from

VideoStream.onObjectSelectEnd


onObjectSelectStart()

onObjectSelectStart(_event): void

Defined in: src/core/Script.ts:190

Called when a source starts selecting the object this Script represents.

Parameters

_event

SelectEvent

event.target is the logical object and event.source.controller identifies the controller. Call event.stopPropagation() to stop bubbling to ancestor Scripts.

Returns

void

Inherited from

VideoStream.onObjectSelectStart


onObjectTouchEnd()

onObjectTouchEnd(_event): void

Defined in: src/core/Script.ts:244

Called when a hand's index finger stops touching this object. This ends the default selection lifecycle after the touch callback.

Parameters

_event

ObjectTouchEvent

Returns

void

Inherited from

VideoStream.onObjectTouchEnd


onObjectTouching()

onObjectTouching(_event): void

Defined in: src/core/Script.ts:239

Called every frame that a hand's index finger is touching this object. The object remains selected during these frames unless touch selection was prevented when contact started.

Parameters

_event

ObjectTouchEvent

Returns

void

Inherited from

VideoStream.onObjectTouching


onObjectTouchStart()

onObjectTouchStart(_event): void

Defined in: src/core/Script.ts:233

Called when a hand's index finger starts touching this object. Direct touch starts the object's selection lifecycle by default. Call event.preventDefault() to handle contact without selecting.

Parameters

_event

ObjectTouchStartEvent

Returns

void

Inherited from

VideoStream.onObjectTouchStart


onSelect()

onSelect(_event): void

Defined in: src/core/Script.ts:144

Called whenever pinch / mouse click successfully completes, globally.

Parameters

_event

SelectEvent

The interaction source and completed target.

Returns

void

Inherited from

VideoStream.onSelect


onSelectEnd()

onSelectEnd(_event): void

Defined in: src/core/Script.ts:138

Called whenever pinch / mouse click discontinues, globally.

Parameters

_event

SelectEndEvent

The completed state and end reason.

Returns

void

Inherited from

VideoStream.onSelectEnd


onSelecting()

onSelecting(_event): void

Defined in: src/core/Script.ts:149

Called whenever pinch / mouse click is happening, globally.

Parameters

_event

SelectEvent

Returns

void

Inherited from

VideoStream.onSelecting


onSelectStart()

onSelectStart(_event): void

Defined in: src/core/Script.ts:132

Called whenever pinch / mouse click starts, globally.

Parameters

_event

SelectEvent

The interaction source and optional captured target.

Returns

void

Inherited from

VideoStream.onSelectStart


onSimulatorStarted()

onSimulatorStarted(): void

Defined in: src/core/Script.ts:124

Returns

void

Inherited from

VideoStream.onSimulatorStarted


onSqueeze()

onSqueeze(_event): void

Defined in: src/core/Script.ts:181

Called whenever gamepad trigger successfully completes, globally.

Parameters

_event

SelectEvent

event.source.controller identifies the controller.

Returns

void

Inherited from

VideoStream.onSqueeze


onSqueezeEnd()

onSqueezeEnd(_event): void

Defined in: src/core/Script.ts:170

Called whenever gamepad trigger stops, globally.

Parameters

_event

SelectEvent

event.source.controller identifies the controller.

Returns

void

Inherited from

VideoStream.onSqueezeEnd


onSqueezeStart()

onSqueezeStart(_event): void

Defined in: src/core/Script.ts:165

Called whenever gamepad trigger starts, globally.

Parameters

_event

SelectEvent

event.source.controller identifies the controller.

Returns

void

Inherited from

VideoStream.onSqueezeStart


onSqueezing()

onSqueezing(_event): void

Defined in: src/core/Script.ts:175

Called whenever gamepad is being triggered, globally.

Parameters

_event

SelectEvent

Returns

void

Inherited from

VideoStream.onSqueezing


onXRSessionEnded()

onXRSessionEnded(): void

Defined in: src/core/Script.ts:122

Returns

void

Inherited from

VideoStream.onXRSessionEnded


onXRSessionStarted()

onXRSessionStarted(_session?): void

Defined in: src/core/Script.ts:121

Parameters

_session?

XRSession

Returns

void

Inherited from

VideoStream.onXRSessionStarted


physicsStep()

physicsStep(): void

Defined in: src/core/Script.ts:119

Returns

void

Inherited from

VideoStream.physicsStep


registerSimulatorCamera()

registerSimulatorCamera(simulatorCamera?): void

Defined in: src/camera/XRDeviceCamera.ts:400

Parameters

simulatorCamera?

SimulatorCameraSource

Returns

void


setDeviceId()

setDeviceId(deviceId): Promise<void>

Defined in: src/camera/XRDeviceCamera.ts:270

Sets the active camera by its device ID. Removes potentially conflicting constraints such as facingMode.

Parameters

deviceId

string

Device ID

Returns

Promise<void>


setFacingMode()

setFacingMode(facingMode): Promise<void>

Defined in: src/camera/XRDeviceCamera.ts:290

Sets the active camera by its facing mode ('user' or 'environment').

Parameters

facingMode

VideoFacingModeEnum

facing mode

Returns

Promise<void>


setRenderer()

setRenderer(renderer): void

Defined in: src/camera/XRDeviceCamera.ts:87

Sets the renderer reference, needed for WebXR camera access fallback.

Parameters

renderer

WebGLRenderer

Returns

void


setState_()

protected setState_(state, details): void

Defined in: src/video/VideoStream.ts:134

Sets the stream's state and dispatches a 'statechange' event.

Parameters

state

StreamState

The new state.

details

Additional data for the event payload.

VideoStreamDetails | XRDeviceCameraDetails

Returns

void

Inherited from

VideoStream.setState_


stop_()

protected stop_(): void

Defined in: src/video/VideoStream.ts:267

Stops the current video stream tracks.

Returns

void

Inherited from

VideoStream.stop_


update()

update(_time?, _frame?): void

Defined in: src/core/Script.ts:113

Runs per frame.

Parameters

_time?

number

_frame?

XRFrame

Returns

void

Inherited from

VideoStream.update


updateXRCamera()

updateXRCamera(frame): void

Defined in: src/camera/XRDeviceCamera.ts:339

Updates the camera texture from the WebXR Raw Camera Access API. Must be called each frame from the render loop when in XR camera mode.

Parameters

frame

XRFrame

Returns

void