📄 threejs/Addons/Webxr/OculusHandPointerModel

File: OculusHandPointerModel.md | Updated: 11/15/2025


title: OculusHandPointerModel category: Addons layout: docs

OculusHandPointerModel

Represents an Oculus hand pointer model.

Import

OculusHandPointerModel is an addon, and must be imported explicitly, see Installation#Addons.

import { OculusHandPointerModel } from 'three/addons/webxr/OculusHandPointerModel.js';

Constructor

new OculusHandPointerModel( hand : Group, controller : Group )

Constructs a new Oculus hand model.

hand | The hand controller.
---|---
controller | The WebXR controller in target ray space.

Properties

.attached : boolean

Whether the model is attached or not.

Default is false.

.controller : Group

The WebXR controller in target ray space.

.cursorObject : Mesh

The cursor object.

Default is null.

.hand : Group

The hand controller.

.pinched : boolean

Whether the model is pinched or not.

Default is false.

.pointerGeometry : BufferGeometry

The pointer geometry.

Default is null.

.pointerMesh : Mesh

The pointer mesh.

Default is null.

.pointerObject : Object3D

The pointer object that holds the pointer mesh.

Default is null.

.raycaster : Raycaster

The internal raycaster used for detecting intersections.

Default is null.

Methods

.checkIntersections( objects : Array.<Object3D>, recursive : boolean )

Checks for intersections between the model's raycaster and the given objects. The method updates the cursor object to the intersection point.

objects | The 3D objects to check for intersection with the ray.
---|---
recursive | If set to true, it also checks all descendants. Otherwise it only checks intersection with the object. Default is false.

.createPointer()

Creates a pointer mesh and adds it to this model.

.dispose()

Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app.

.intersectObject( object : Object3D, recursive : boolean ) : Array.<Raycaster~Intersection>

Performs an intersection test with the model's raycaster and the given object.

object | The 3D object to check for intersection with the ray.
---|---
recursive | If set to true, it also checks all descendants. Otherwise it only checks intersection with the object. Default is true.

Returns: An array holding the intersection points.

.intersectObjects( objects : Array.<Object3D>, recursive : boolean ) : Array.<Raycaster~Intersection>

Performs an intersection test with the model's raycaster and the given objects.

objects | The 3D objects to check for intersection with the ray.
---|---
recursive | If set to true, it also checks all descendants. Otherwise it only checks intersection with the object. Default is true.

Returns: An array holding the intersection points.

.isAttached() : boolean

Returns true is the model is attached.

Returns: Whether the model is attached or not.

.isPinched() : boolean

Returns true is the model is pinched.

Returns: Whether the model is pinched or not.

.setAttached( attached : boolean )

Sets the attached state.

attached | Whether the model is attached or not.
---|---

.setCursor( distance : number )

Sets the cursor to the given distance.

distance | The distance to set the cursor to.
---|---

.updateMatrixWorld( force : boolean )

Overwritten with a custom implementation. Makes sure the internal pointer and raycaster are updated.

force | When set to true, a recomputation of world matrices is forced even when Object3D#matrixWorldAutoUpdate is set to false. Default is false.
---|---

Overrides: Object3D#updateMatrixWorld

Source

examples/jsm/webxr/OculusHandPointerModel.js