Skip to main content

Class: Options

Defined in: src/core/Options.ts:53

A central configuration class for the entire XR Blocks system. It aggregates all settings and provides chainable methods for enabling common features.

Constructors

Constructor

new Options(options?): Options

Defined in: src/core/Options.ts:115

Constructs the Options object by merging default values with provided custom options.

Parameters

options?

A custom options object to override the defaults.

ai?

{ enabled?: boolean; gemini?: { apiKey?: string; config?: { }; enabled?: boolean; keyValid?: boolean; live?: { audioConfig?: { autoGainControl?: ... | ... | ...; channelCount?: ... | ...; echoCancellation?: ... | ... | ...; noiseSuppression?: ... | ... | ...; sampleRate?: ... | ...; }; enabled?: boolean; endOfSpeechSensitivity?: "LOW" | "HIGH"; model?: string; screenshotInterval?: number; startOfSpeechSensitivity?: "LOW" | "HIGH"; voiceName?: string; }; model?: string; urlParam?: string; }; globalUrlParams?: { key?: string; }; model?: AIModel; openai?: { apiKey?: string; enabled?: boolean; model?: string; urlParam?: string; }; } = ...

ai.enabled?

boolean = false

ai.gemini?

{ apiKey?: string; config?: { }; enabled?: boolean; keyValid?: boolean; live?: { audioConfig?: { autoGainControl?: ... | ... | ...; channelCount?: ... | ...; echoCancellation?: ... | ... | ...; noiseSuppression?: ... | ... | ...; sampleRate?: ... | ...; }; enabled?: boolean; endOfSpeechSensitivity?: "LOW" | "HIGH"; model?: string; screenshotInterval?: number; startOfSpeechSensitivity?: "LOW" | "HIGH"; voiceName?: string; }; model?: string; urlParam?: string; } = ...

ai.gemini.apiKey?

string = ''

ai.gemini.config?

{ } = {}

ai.gemini.enabled?

boolean = false

ai.gemini.keyValid?

boolean = false

ai.gemini.live?

{ audioConfig?: { autoGainControl?: ... | ... | ...; channelCount?: ... | ...; echoCancellation?: ... | ... | ...; noiseSuppression?: ... | ... | ...; sampleRate?: ... | ...; }; enabled?: boolean; endOfSpeechSensitivity?: "LOW" | "HIGH"; model?: string; screenshotInterval?: number; startOfSpeechSensitivity?: "LOW" | "HIGH"; voiceName?: string; } = ...

ai.gemini.live.audioConfig?

{ autoGainControl?: ... | ... | ...; channelCount?: ... | ...; echoCancellation?: ... | ... | ...; noiseSuppression?: ... | ... | ...; sampleRate?: ... | ...; }

ai.gemini.live.audioConfig.autoGainControl?

... | ... | ...

ai.gemini.live.audioConfig.channelCount?

... | ...

ai.gemini.live.audioConfig.echoCancellation?

... | ... | ...

ai.gemini.live.audioConfig.noiseSuppression?

... | ... | ...

ai.gemini.live.audioConfig.sampleRate?

... | ...

ai.gemini.live.enabled?

boolean

ai.gemini.live.endOfSpeechSensitivity?

"LOW" | "HIGH"

ai.gemini.live.model?

string

ai.gemini.live.screenshotInterval?

number

ai.gemini.live.startOfSpeechSensitivity?

"LOW" | "HIGH"

ai.gemini.live.voiceName?

string

ai.gemini.model?

string = 'gemini-2.0-flash'

ai.gemini.urlParam?

string = 'geminiKey'

ai.globalUrlParams?

{ key?: string; } = ...

ai.globalUrlParams.key?

string = 'key'

ai.model?

AIModel = 'gemini'

ai.openai?

{ apiKey?: string; enabled?: boolean; model?: string; urlParam?: string; } = ...

ai.openai.apiKey?

string = ''

ai.openai.enabled?

boolean = false

ai.openai.model?

string = 'gpt-4.1'

ai.openai.urlParam?

string = 'openaiKey'

antialias?

boolean = true

Whether to use antialiasing.

camera?

{ far?: number; near?: number; } = ...

camera.far?

number = 500

camera.near?

number = 0.01

controllers?

{ debug?: boolean; enabled?: boolean; enabledMouse?: boolean; visualization?: boolean; visualizeRays?: boolean; } = ...

controllers.debug?

boolean = false

Whether to enable debugging features for controllers.

controllers.enabled?

boolean = true

Whether controller input is enabled.

controllers.enabledMouse?

boolean = true

Whether mouse input should act as a controller on desktop.

controllers.visualization?

boolean = false

Whether to show controller models.

controllers.visualizeRays?

boolean = false

Whether to show the ray lines extending from the controllers.

debugging?

boolean = false

Global flag for enabling various debugging features.

depth?

{ debugging?: boolean; depthMesh?: { colliderUpdateFps?: number; enabled?: boolean; opacity?: number; patchHoles?: boolean; patchHolesUpper?: boolean; renderShadow?: boolean; shadowOpacity?: number; showDebugTexture?: boolean; updateFullResolutionGeometry?: boolean; updateVertexNormals?: boolean; useDepthTexture?: boolean; useDownsampledGeometry?: boolean; useDualCollider?: boolean; }; depthTexture?: { applyGaussianBlur?: boolean; applyKawaseBlur?: boolean; constantKernel?: boolean; enabled?: boolean; }; enabled?: boolean; occlusion?: { enabled?: boolean; }; useFloat32?: boolean; } = ...

depth.debugging?

boolean = false

depth.depthMesh?

{ colliderUpdateFps?: number; enabled?: boolean; opacity?: number; patchHoles?: boolean; patchHolesUpper?: boolean; renderShadow?: boolean; shadowOpacity?: number; showDebugTexture?: boolean; updateFullResolutionGeometry?: boolean; updateVertexNormals?: boolean; useDepthTexture?: boolean; useDownsampledGeometry?: boolean; useDualCollider?: boolean; } = ...

depth.depthMesh.colliderUpdateFps?

number = 5

depth.depthMesh.enabled?

boolean = false

depth.depthMesh.opacity?

number = 1.0

depth.depthMesh.patchHoles?

boolean = false

depth.depthMesh.patchHolesUpper?

boolean = false

depth.depthMesh.renderShadow?

boolean = false

depth.depthMesh.shadowOpacity?

number = 0.25

depth.depthMesh.showDebugTexture?

boolean = false

depth.depthMesh.updateFullResolutionGeometry?

boolean = false

depth.depthMesh.updateVertexNormals?

boolean = false

depth.depthMesh.useDepthTexture?

boolean = false

depth.depthMesh.useDownsampledGeometry?

boolean = true

depth.depthMesh.useDualCollider?

boolean = false

depth.depthTexture?

{ applyGaussianBlur?: boolean; applyKawaseBlur?: boolean; constantKernel?: boolean; enabled?: boolean; } = ...

depth.depthTexture.applyGaussianBlur?

boolean = false

depth.depthTexture.applyKawaseBlur?

boolean = false

depth.depthTexture.constantKernel?

boolean = false

depth.depthTexture.enabled?

boolean = false

depth.enabled?

boolean = false

depth.occlusion?

{ enabled?: boolean; } = ...

depth.occlusion.enabled?

boolean = false

depth.useFloat32?

boolean = true

deviceCamera?

{ enabled?: boolean; videoConstraints?: { }; willCaptureFrequently?: boolean; } = ...

deviceCamera.enabled?

boolean = false

deviceCamera.videoConstraints?

{ }

Constraints for getUserMedia. This will guide the initial camera selection. *

deviceCamera.willCaptureFrequently?

boolean = false

Hint for performance optimization on frequent captures.

enableAI?

() => Options

enableCamera?

(facingMode) => Options

enableDepth?

() => Options

enableGeminiLive?

() => Options

enableHandRays?

() => Options

enableHands?

() => Options

enableObjectDetection?

() => Options

enablePlaneDetection?

() => Options

enableReticles?

() => Options

enableUI?

() => Options

enableXRTransitions?

() => Options

hands?

{ debugging?: boolean; enabled?: boolean; enableHands?: () => HandsOptions; enableHandsVisualization?: () => HandsOptions; visualization?: boolean; visualizeJoints?: boolean; visualizeMeshes?: boolean; } = ...

hands.debugging?

boolean = false

hands.enabled?

boolean = false

Whether hand tracking is enabled.

hands.enableHands?

() => HandsOptions

hands.enableHandsVisualization?

() => HandsOptions

hands.visualization?

boolean = false

Whether to show any hand visualization.

hands.visualizeJoints?

boolean = false

Whether to show the tracked hand joints.

hands.visualizeMeshes?

boolean = false

Whether to show the virtual hand meshes.

lighting?

{ castDirectionalLightShadow?: boolean; debugging?: boolean; enabled?: boolean; useAmbientSH?: boolean; useDirectionalLight?: boolean; useDynamicSoftShadow?: boolean; } = ...

lighting.castDirectionalLightShadow?

boolean = false

Cast shadows using diretional light.

lighting.debugging?

boolean = false

Enables debugging renders and logs.

lighting.enabled?

boolean = false

Enables XR lighting.

lighting.useAmbientSH?

boolean = false

Add ambient spherical harmonics to lighting.

lighting.useDirectionalLight?

boolean = false

Add main diredtional light to lighting.

lighting.useDynamicSoftShadow?

boolean = false

Adjust hardness of shadows according to relative brightness of main light.

logarithmicDepthBuffer?

boolean = false

Whether to use a logarithmic depth buffer. Useful for depth-aware occlusions.

physics?

{ fps?: number; gravity?: { x?: number; y?: number; z?: number; }; RAPIER?: { init?: () => Promise<void>; }; useEventQueue?: boolean; worldStep?: boolean; } = ...

physics.fps?

number = 45

The target frames per second for the physics simulation loop.

physics.gravity?

{ x?: number; y?: number; z?: number; } = ...

The global gravity vector applied to the physics world.

physics.gravity.x?

number = 0.0

physics.gravity.y?

number = -9.81

physics.gravity.z?

number = 0.0

physics.RAPIER?

{ init?: () => Promise<void>; }

Instance of RAPIER.

physics.RAPIER.init?

() => Promise<void>

physics.useEventQueue?

boolean = false

If true, an event queue will be created and passed to world.step(), enabling the handling of collision and contact events.

physics.worldStep?

boolean = true

If true, the Physics manager will automatically call world.step() on its fixed interval. Set to false if you want to control the simulation step manually.

reticles?

{ enabled?: boolean; } = ...

reticles.enabled?

boolean = true

simulator?

{ defaultHand?: Handedness; defaultMode?: SimulatorMode; geminilive?: boolean; handPosePanel?: { element?: string; enabled?: boolean; }; initialCameraPosition?: { x?: number; y?: number; z?: number; }; initialScenePosition?: { x?: number; y?: number; z?: number; }; instructions?: { customInstructions?: readonly (undefined | { description?: ... | ... | ...; header?: ... | ... | ...; videoSrc?: ... | ...; })[]; element?: string; enabled?: boolean; }; modeIndicator?: { element?: string; enabled?: boolean; }; renderToRenderTexture?: boolean; scenePath?: string; stereo?: { enabled?: boolean; }; } = ...

simulator.defaultHand?

Handedness = Handedness.LEFT

simulator.defaultMode?

SimulatorMode = SimulatorMode.USER

simulator.geminilive?

boolean = false

simulator.handPosePanel?

{ element?: string; enabled?: boolean; } = ...

simulator.handPosePanel.element?

string = 'xrblocks-simulator-hand-pose-panel'

simulator.handPosePanel.enabled?

boolean = true

simulator.initialCameraPosition?

{ x?: number; y?: number; z?: number; } = ...

simulator.initialCameraPosition.x?

number = 0

simulator.initialCameraPosition.y?

number = 1.5

simulator.initialCameraPosition.z?

number = 0

simulator.initialScenePosition?

{ x?: number; y?: number; z?: number; } = ...

simulator.initialScenePosition.x?

number = -1.6

simulator.initialScenePosition.y?

number = 0.3

simulator.initialScenePosition.z?

number = 0

simulator.instructions?

{ customInstructions?: readonly (undefined | { description?: ... | ... | ...; header?: ... | ... | ...; videoSrc?: ... | ...; })[]; element?: string; enabled?: boolean; } = ...

simulator.instructions.customInstructions?

readonly (undefined | { description?: ... | ... | ...; header?: ... | ... | ...; videoSrc?: ... | ...; })[] = ...

simulator.instructions.element?

string = 'xrblocks-simulator-instructions'

simulator.instructions.enabled?

boolean = true

simulator.modeIndicator?

{ element?: string; enabled?: boolean; } = ...

simulator.modeIndicator.element?

string = 'xrblocks-simulator-mode-indicator'

simulator.modeIndicator.enabled?

boolean = true

simulator.renderToRenderTexture?

boolean = true

simulator.scenePath?

string = ...

simulator.stereo?

{ enabled?: boolean; } = ...

simulator.stereo.enabled?

boolean = false

sound?

{ speechRecognizer?: { commandConfidenceThreshold?: number; commands?: readonly (undefined | string)[]; continuous?: boolean; enabled?: boolean; interimResults?: boolean; lang?: string; playSimulatorActivationSounds?: boolean; }; speechSynthesizer?: { allowInterruptions?: boolean; enabled?: boolean; }; } = ...

sound.speechRecognizer?

{ commandConfidenceThreshold?: number; commands?: readonly (undefined | string)[]; continuous?: boolean; enabled?: boolean; interimResults?: boolean; lang?: string; playSimulatorActivationSounds?: boolean; } = ...

sound.speechRecognizer.commandConfidenceThreshold?

number = 0.7

Minimum confidence (0-1) for a command.

sound.speechRecognizer.commands?

readonly (undefined | string)[] = []

Keywords to detect as commands.

sound.speechRecognizer.continuous?

boolean = false

If true, recognition continues after a pause.

sound.speechRecognizer.enabled?

boolean = true

sound.speechRecognizer.interimResults?

boolean = false

If true, provides interim results.

sound.speechRecognizer.lang?

string = 'en-US'

Recognition language (e.g., 'en-US').

sound.speechRecognizer.playSimulatorActivationSounds?

boolean = true

If true, play activation sounds in simulator.

sound.speechSynthesizer?

{ allowInterruptions?: boolean; enabled?: boolean; } = ...

sound.speechSynthesizer.allowInterruptions?

boolean = false

If true, a new call to speak() will interrupt any ongoing speech.

sound.speechSynthesizer.enabled?

boolean = false

stencil?

boolean = false

Whether to request a stencil buffer.

transition?

{ defaultBackgroundColor?: number; enabled?: boolean; transitionTime?: number; } = ...

transition.defaultBackgroundColor?

number = 0xffffff

The default background color for VR transitions.

transition.enabled?

boolean = false

Whether the transition effect is enabled.

transition.transitionTime?

number = 0.5

The duration of the transition in seconds.

usePostprocessing?

boolean = false

Whether to use post-processing effects.

world?

{ debugging?: boolean; enabled?: boolean; enableObjectDetection?: () => WorldOptions; enablePlaneDetection?: () => WorldOptions; objects?: { backendConfig?: { activeBackend?: "gemini" | "mediapipe"; gemini?: { responseSchema?: ... | ...; systemInstruction?: ... | ...; }; mediapipe?: { }; }; debugging?: boolean; enable?: () => ObjectsOptions; enabled?: boolean; objectImageMargin?: number; showDebugVisualizations?: boolean; }; planes?: { debugging?: boolean; enable?: () => PlanesOptions; enabled?: boolean; showDebugVisualizations?: boolean; }; } = ...

world.debugging?

boolean = false

world.enabled?

boolean = false

world.enableObjectDetection?

() => WorldOptions

world.enablePlaneDetection?

() => WorldOptions

world.objects?

{ backendConfig?: { activeBackend?: "gemini" | "mediapipe"; gemini?: { responseSchema?: ... | ...; systemInstruction?: ... | ...; }; mediapipe?: { }; }; debugging?: boolean; enable?: () => ObjectsOptions; enabled?: boolean; objectImageMargin?: number; showDebugVisualizations?: boolean; } = ...

world.objects.backendConfig?

{ activeBackend?: "gemini" | "mediapipe"; gemini?: { responseSchema?: ... | ...; systemInstruction?: ... | ...; }; mediapipe?: { }; } = ...

Configuration for the detection backends.

world.objects.backendConfig.activeBackend?

"gemini" | "mediapipe" = ...

The active backend to use for detection.

world.objects.backendConfig.gemini?

{ responseSchema?: ... | ...; systemInstruction?: ... | ...; } = ...

world.objects.backendConfig.gemini.responseSchema?

... | ... = ...

world.objects.backendConfig.gemini.systemInstruction?

... | ... = ...

world.objects.backendConfig.mediapipe?

{ } = {}

Placeholder for a future MediaPipe backend configuration.

world.objects.debugging?

boolean = false

world.objects.enable?

() => ObjectsOptions

world.objects.enabled?

boolean = false

world.objects.objectImageMargin?

number = 0.05

Margin to add when cropping the object image, as a percentage of image size.

world.objects.showDebugVisualizations?

boolean = false

world.planes?

{ debugging?: boolean; enable?: () => PlanesOptions; enabled?: boolean; showDebugVisualizations?: boolean; } = ...

world.planes.debugging?

boolean = false

world.planes.enable?

() => PlanesOptions

world.planes.enabled?

boolean = false

world.planes.showDebugVisualizations?

boolean = false

xrButton?

{ autostartSimulator?: boolean; autostartSimulatorOnDesktop?: boolean; enabled?: boolean; enableSimulator?: boolean; endText?: string; invalidText?: string; showSimulatorButtonOnMobile?: boolean; startSimulatorText?: string; startText?: string; } = ...

Configuration for the XR session button.

xrButton.autostartSimulator?

boolean = false

xrButton.autostartSimulatorOnDesktop?

boolean = true

xrButton.enabled?

boolean = true

xrButton.enableSimulator?

boolean = true

xrButton.endText?

string = 'Exit XR'

xrButton.invalidText?

string = 'XR Not Supported'

xrButton.showSimulatorButtonOnMobile?

boolean = false

xrButton.startSimulatorText?

string = 'Enter Simulator'

xrButton.startText?

string = 'Enter XR'

Returns

Options

Properties

ai

ai: AIOptions

Defined in: src/core/Options.ts:79


antialias

antialias: boolean = true

Defined in: src/core/Options.ts:57

Whether to use antialiasing.


camera

camera: object

Defined in: src/core/Options.ts:84

far

far: number = 500

near

near: number = 0.01


controllers

controllers: InputOptions

Defined in: src/core/Options.ts:72


debugging

debugging: boolean = false

Defined in: src/core/Options.ts:66

Global flag for enabling various debugging features.


depth

depth: DepthOptions

Defined in: src/core/Options.ts:73


deviceCamera

deviceCamera: DeviceCameraOptions

Defined in: src/core/Options.ts:75


hands

hands: HandsOptions

Defined in: src/core/Options.ts:76


lighting

lighting: LightingOptions

Defined in: src/core/Options.ts:74


logarithmicDepthBuffer

logarithmicDepthBuffer: boolean = false

Defined in: src/core/Options.ts:62

Whether to use a logarithmic depth buffer. Useful for depth-aware occlusions.


physics

physics: PhysicsOptions

Defined in: src/core/Options.ts:82


reticles

reticles: ReticleOptions

Defined in: src/core/Options.ts:77


simulator

simulator: SimulatorOptions

Defined in: src/core/Options.ts:80


sound

sound: SoundOptions

Defined in: src/core/Options.ts:78


stencil

stencil: boolean = false

Defined in: src/core/Options.ts:70

Whether to request a stencil buffer.


transition

transition: XRTransitionOptions

Defined in: src/core/Options.ts:83


usePostprocessing

usePostprocessing: boolean = false

Defined in: src/core/Options.ts:92

Whether to use post-processing effects.


world

world: WorldOptions

Defined in: src/core/Options.ts:81


xrButton

xrButton: object

Defined in: src/core/Options.ts:97

Configuration for the XR session button.

autostartSimulator

autostartSimulator: boolean = false

autostartSimulatorOnDesktop

autostartSimulatorOnDesktop: boolean = true

enabled

enabled: boolean = true

enableSimulator

enableSimulator: boolean = true

endText

endText: string = 'Exit XR'

invalidText

invalidText: string = 'XR Not Supported'

showSimulatorButtonOnMobile

showSimulatorButtonOnMobile: boolean = false

startSimulatorText

startSimulatorText: string = 'Enter Simulator'

startText

startText: string = 'Enter XR'

Methods

enableAI()

enableAI(): Options

Defined in: src/core/Options.ts:210

Enables a standard set of AI features, including Gemini Live.

Returns

Options

The instance for chaining.


enableCamera()

enableCamera(facingMode): Options

Defined in: src/core/Options.ts:172

Enables device camera (passthrough) with a specific facing mode.

Parameters

facingMode

The desired camera facing mode, either 'environment' or 'user'.

"user" | "environment"

Returns

Options

The instance for chaining.


enableDepth()

enableDepth(): Options

Defined in: src/core/Options.ts:142

Enables depth sensing in WebXR with default options.

Returns

Options

The instance for chaining.


enableGeminiLive()

enableGeminiLive(): Options

Defined in: src/core/Options.ts:201

Enables the Gemini Live feature.

Returns

Options

The instance for chaining.


enableHandRays()

enableHandRays(): Options

Defined in: src/core/Options.ts:192

Enables the visualization of rays for hand tracking.

Returns

Options

The instance for chaining.


enableHands()

enableHands(): Options

Defined in: src/core/Options.ts:183

Enables hand tracking.

Returns

Options

The instance for chaining.


enableObjectDetection()

enableObjectDetection(): Options

Defined in: src/core/Options.ts:160

Enables object detection.

Returns

Options

The instance for chaining.


enablePlaneDetection()

enablePlaneDetection(): Options

Defined in: src/core/Options.ts:151

Enables plane detection.

Returns

Options

The instance for chaining.


enableReticles()

enableReticles(): Options

Defined in: src/core/Options.ts:133

Enables reticles for visualizing targets of hand rays in WebXR.

Returns

Options

The instance for chaining.


enableUI()

enableUI(): Options

Defined in: src/core/Options.ts:123

Enables a standard set of options for a UI-focused experience.

Returns

Options

The instance for chaining.


enableXRTransitions()

enableXRTransitions(): Options

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

Enables the XR transition component for toggling VR.

Returns

Options

The instance for chaining.