A component that downloads and displays the 3D model for an XR controller based on a 'profile' (i.e. the make/model of the controller) and handedness (i.e left or right handed). The models are acquired from the @webxr-input-profiles/assets package where manufacturers document the controllers for their device. In most circumstances it's not necessary to use this component directly - the XRController component will automatically load an instance of this component with the necessary profile and handedness when controllers are detected at runtime.

Note that it make take a few moments for a model to be resolved and downloaded. A promise is provided, loaded that will resolve when the model is fully ready.

google_tv_remote

three/Object3D/XRControllerModel

three/Object3D/Group/**

Hierarchy

  • Object3D
    • XRControllerModel

Accessors

  • get disposed(): boolean
  • Gets the disposed status of the entity.

    Returns boolean

    The disposed status.

  • get elementsResolved(): any[]
  • An array of the elements that this component instance exposes. In the case that this component does not expose any elements of its own, this will be an array of the elements exposed by this component's children.

    Returns any[]

  • get lockedResolved(): boolean
  • Returns true if this component, or any of its parents, are marked as locked.

    Returns boolean

Constructors

Methods

  • Adds a behavior to the component.

    Parameters

    • b: Behavior<Component<any, ConstructorProps>>

      The behavior to add.

    Returns void

  • Parameters

    • c: Component<any, ConstructorProps>

    Returns void

  • Constructs the children of this component.

    Parameters

    • children: ComponentChildren
    • OptionalcontextManager: ContextManager

    Returns void

  • Gets a behavior of a specific type from the component.

    Type Parameters

    • T extends (new (contextManager: ContextManager, instance: Component<any, ConstructorProps>, ...args: any[]) => Behavior<Component<any, ConstructorProps>>)

      The behavior type.

    Parameters

    • type: T

      The type of behavior to get.

    Returns undefined | InstanceType<T>

    The behavior of the specified type, or undefined if no such behavior exists.

  • Gets all behaviors of a specific type from the component.

    Type Parameters

    • T extends (new (contextManager: ContextManager, instance: Component<any, ConstructorProps>, ...args: any[]) => Behavior<Component<any, ConstructorProps>>)

      The behavior type.

    Parameters

    • type: T

      The type of behaviors to get.

    Returns InstanceType<T>[]

    An array of behaviors of the specified type.

  • Get the instance of the ZComponent that constructed this entity.

    If you pass the class of a ZComponent as the type parameter, this function will ensure that it returns an instance of that ZComponent. If this component or behavior was constructed by a different ZComponent class, or by a different entity altogether, the function with throw an error.

    Type Parameters

    • T extends ZComponent<any, T> = ZComponent<any>

    Parameters

    • Optionaltype: ConstructorForComponent<T>

      The ZComponent class that you are expecting to receive

    Returns T

    The instance of the ZComponent that constructed this component or behavior

  • Register a function to be called when an Event is fired, or an Observable's value changes. The function will only be bound to the underlying Event or Observable while this entity is enabled.

    Using this function, rather than attaching your handler directly to the Event or Observable, ensures your handler is automatically released when this entity is disposed.

    Type Parameters

    • Args extends any[]

    Parameters

    • evt: Event<Args>

      The Event or Observable to listen to

    • fn: ((...args: Args) => void)

      A function that will be called when the event fires, or the Observable value changes

        • (...args): void
        • Parameters

          Returns void

    • Optionalpriority: number

    Returns any

  • Type Parameters

    • Args extends any[]

    Parameters

    Returns any

  • Type Parameters

    • Type

    Parameters

    • observable: Observable<Type, never>
    • fn: ((v: Type) => void)
        • (v): void
        • Parameters

          Returns void

    • Optionalpriority: number

    Returns any

  • Type Parameters

    • Type

    Parameters

    Returns any

  • Removes this component from its parent component.

    Returns void

  • Removes a behavior from the component.

    Parameters

    • b: Behavior<Component<any, ConstructorProps>>

      The behavior to remove.

    Returns void

  • Parameters

    • c: Component<any, ConstructorProps>

    Returns void

  • Unregisters a function that was previously registered to an Event or Observable.

    Type Parameters

    • Args extends any[]

    Parameters

    • evt: Event<Args>

      The Event or Observable

    • fn: ((...args: Args) => void)

      The function that was passed in the call to register

        • (...args): void
        • Parameters

          Returns void

    Returns any

  • Type Parameters

    • Type

    Parameters

    • observable: Observable<Type, never>
    • fn: ((v: Type) => void)
        • (v): void
        • Parameters

          Returns void

    Returns any

Other

tags: Observable<string[], never>

An array of string 'tags' assocated with this component.

The getComponentsByTag(mgr, tag) function can be used to get an array of components with the supplied tag.

By default, tags are scoped to the ZComponent instance that a component is constructed by. Tags that begin with global: are scoped to the experience as a whole.

0

Properties - Appearance

castShadow: Observable<boolean, never>

Determines if this object casts shadows.

11

true

receiveShadow: Observable<boolean, never>

Determines if this object receives shadows.

11

true

visible: Observable<boolean, never>

Determines if this object and its children are rendered to the screen.

11

true

Properties - Behavior

enabled: Observable<boolean, never>

If false, this entity and its children will no longer participate in the experience.

Note - to read this value, you may wish to use enabledResolved which will be false if this entity, or any of its parents, have enabled set to false.

The precise implications of enabled being false will vary between entities, but in general disabled entities:

  • should not emit any events,
  • should not take any action, e.g. navigate the user to a different page,
  • should not perform any network communication,
  • should not make changes to other behaviors or components in the experience,
  • should minimise any runtime performance cost (e.g. detach from any frame handlers).

true

10

Properties - Other

behaviors: Behavior<Component<any, ConstructorProps>>[]

The behaviors attached to this component.

bonesByJointName: Map<string, Object3D<Event>> = ...

Models representing hands (for devices that support hand tracking) contain bones representing the positions and rotations of the fingers of the hand. Once loaded, this object contains a mapping of joint name to the three.js bone in the model. For more information on this mapping, see https://developer.mozilla.org/en-US/docs/Web/API/XRHand

children: Component<any, ConstructorProps>[]

The children of this component.

constructorProps: XRControllerModelConstructorProps
contextManager: ContextManager
element: Object3D<Event>
enabledResolved: Observable<boolean, never>

This will have value false if this entity, or any of its parents, have enabled set to false.

To change the enabled status of this entity, use the enabled property instead.

The precise implications of enabled being false will vary between entities, but in general disabled entities:

  • should not emit any events,
  • should not take any action, e.g. navigate the user to a different page,
  • should not perform any network communication,
  • should not make changes to other behaviors or components in the experience,
  • should minimise any runtime performance cost.

Disabled entities will typically remain visible (if they have a visible appearance).

loaded: Promise<void> = ...

A promise that's resolved when the model is fully ready to display.

locked?: boolean

If true, this component can't be selected at design time in the 3D preview.

lookAt: Observable<undefined | [number, number, number], never>
onClick: Event<[ThreePointerPresentEvent]>
onDispose: Event<[]>

An event that is fired as the last act of this entity being destroyed.

onIntersectionEnter: Event<[IntersectionPresentEvent]>
onIntersectionLeave: Event<[IntersectionEvent]>
onPointerDown: Event<[ThreePointerPresentEvent]>
onPointerEnter: Event<[ThreePointerPresentEvent]>
onPointerLeave: Event<[ThreePointerEvent]>
onPointerMove: Event<[ThreePointerPresentEvent]>
onPointerUp: Event<[ThreePointerPresentEvent]>
parent?: Component<any, ConstructorProps>

The parent of this component.

Properties - Transform

position: Observable<[x: number, y: number, z: number], never>

The position, in 3D space, of this node relative to its parent. The three elements of the array correspond to the x, y, and z components of position.

10

[0, 0, 0]

rotation: Observable<[x: number, y: number, z: number], never>

The rotation, in three dimensions, of this node relative to its parent. The three elements of the array correspond to Euler angles - yaw, pitch and roll.

angle-radians

10

[0, 0, 0]

scale: Observable<[x: number, y: number, z: number], never>

The scale, in three dimensions, of this node relative to its parent. The three elements of the array correspond to scales in the the x, y, and z axis.

10

[1, 1, 1]