API Reference

Class List

XrHitTest

Extends: EventHandler

Hit Test provides ability to get position and rotation of ray intersecting point with representation of real world geometry by underlying AR system.

Summary

Properties

sources

List of active XrHitTestSource.

supported

True if AR Hit Test is supported.

Methods

start

Attempts to start hit test with provided reference space.

Events

add

Fired when new XrHitTestSource is added to the list.

error

Fired when failed create hit test source.

remove

Fired when XrHitTestSource is removed to the list.

result

Fired when hit test source receives new results.

Inherited

Methods

fire

Fire an event, all additional arguments are passed on to the event listener.

hasEvent

Test if there are any handlers bound to an event name.

off

Detach an event handler from an event.

on

Attach an event handler to an event.

once

Attach an event handler to an event.

Details

Properties

XrHitTestSource[]sources

List of active XrHitTestSource.

booleansupported

True if AR Hit Test is supported.

Methods

start([options])

Attempts to start hit test with provided reference space.

app.xr.hitTest.start({
    spaceType: pc.XRSPACE_VIEWER,
    callback: function (err, hitTestSource) {
        if (err) return;
        hitTestSource.on('result', function (position, rotation) {
            // position and rotation of hit test result
            // based on Ray facing forward from the Viewer reference space
        });
    }
});
const ray = new pc.Ray(new pc.Vec3(0, 0, 0), new pc.Vec3(0, -1, 0));
app.xr.hitTest.start({
    spaceType: pc.XRSPACE_LOCAL,
    offsetRay: ray,
    callback: function (err, hitTestSource) {
        // hit test source that will sample real world geometry straight down
        // from the position where AR session started
    }
});
app.xr.hitTest.start({
    profile: 'generic-touchscreen',
    callback: function (err, hitTestSource) {
        if (err) return;
        hitTestSource.on('result', function (position, rotation, inputSource) {
            // position and rotation of hit test result
            // that will be created from touch on mobile devices
        });
    }
});

Parameters

optionsobject

Optional object for passing arguments.

options.spaceTypestring

Reference space type. Defaults to XRSPACE_VIEWER. Can be one of the following:

  • XRSPACE_VIEWER: Viewer - hit test will be facing relative to viewers space.
  • XRSPACE_LOCAL: Local - represents a tracking space with a native origin near the viewer at the time of creation.
  • XRSPACE_LOCALFLOOR: Local Floor - represents a tracking space with a native origin at the floor in a safe position for the user to stand. The y axis equals 0 at floor level. Floor level value might be estimated by the underlying platform.
  • XRSPACE_BOUNDEDFLOOR: Bounded Floor - represents a tracking space with its native origin at the floor, where the user is expected to move within a pre-established boundary.
  • XRSPACE_UNBOUNDED: Unbounded - represents a tracking space where the user is expected to move freely around their environment, potentially long distances from their starting point.
options.profilestring

if hit test source meant to match input source instead of reference space, then name of profile of the XrInputSource should be provided.

options.entityTypesstring[]

Optional list of underlying entity types against which hit tests will be performed. Defaults to [ XRTRACKABLE_PLANE ]. Can be any combination of the following:

  • XRTRACKABLE_POINT: Point - indicates that the hit test results will be computed based on the feature points detected by the underlying Augmented Reality system.
  • XRTRACKABLE_PLANE: Plane - indicates that the hit test results will be computed based on the planes detected by the underlying Augmented Reality system.
  • XRTRACKABLE_MESH: Mesh - indicates that the hit test results will be computed based on the meshes detected by the underlying Augmented Reality system.
options.offsetRayRay

Optional ray by which hit test ray can be offset.

options.callbackXrHitTestStartCallback

Optional callback function called once hit test source is created or failed.

Events

add

Fired when new XrHitTestSource is added to the list.

app.xr.hitTest.on('add', function (hitTestSource) {
    // new hit test source is added
});

Parameters

hitTestSourceXrHitTestSource

Hit test source that has been added.

error

Fired when failed create hit test source.

Parameters

errorError

Error object related to failure of creating hit test source.

remove

Fired when XrHitTestSource is removed to the list.

app.xr.hitTest.on('remove', function (hitTestSource) {
    // hit test source is removed
});

Parameters

hitTestSourceXrHitTestSource

Hit test source that has been removed.

result

Fired when hit test source receives new results. It provides transform information that tries to match real world picked geometry.

app.xr.hitTest.on('result', function (hitTestSource, position, rotation, inputSource) {
    target.setPosition(position);
    target.setRotation(rotation);
});

Parameters

hitTestSourceXrHitTestSource

Hit test source that produced the hit result.

positionVec3

Position of hit test.

rotationQuat

Rotation of hit test.

inputSourceXrInputSource, null

If is transient hit test source, then it will provide related input source.

Inherited

Methods

fire(name, [arg1], [arg2], [arg3], [arg4], [arg5], [arg6], [arg7], [arg8])

Fire an event, all additional arguments are passed on to the event listener.

obj.fire('test', 'This is the message');

Parameters

namestring

Name of event to fire.

arg1*

First argument that is passed to the event handler.

arg2*

Second argument that is passed to the event handler.

arg3*

Third argument that is passed to the event handler.

arg4*

Fourth argument that is passed to the event handler.

arg5*

Fifth argument that is passed to the event handler.

arg6*

Sixth argument that is passed to the event handler.

arg7*

Seventh argument that is passed to the event handler.

arg8*

Eighth argument that is passed to the event handler.

Returns

EventHandler

Self for chaining.

hasEvent(name)

Test if there are any handlers bound to an event name.

obj.on('test', function () { }); // bind an event to 'test'
obj.hasEvent('test'); // returns true
obj.hasEvent('hello'); // returns false

Parameters

namestring

The name of the event to test.

Returns

boolean

True if the object has handlers bound to the specified event name.

off([name], [callback], [scope])

Detach an event handler from an event. If callback is not provided then all callbacks are unbound from the event, if scope is not provided then all events with the callback will be unbound.

const handler = function () {
};
obj.on('test', handler);

obj.off(); // Removes all events
obj.off('test'); // Removes all events called 'test'
obj.off('test', handler); // Removes all handler functions, called 'test'
obj.off('test', handler, this); // Removes all handler functions, called 'test' with scope this

Parameters

namestring

Name of the event to unbind.

callbackHandleEventCallback

Function to be unbound.

scopeobject

Scope that was used as the this when the event is fired.

Returns

EventHandler

Self for chaining.

on(name, callback, [scope])

Attach an event handler to an event.

obj.on('test', function (a, b) {
    console.log(a + b);
});
obj.fire('test', 1, 2); // prints 3 to the console
const evt = obj.on('test', function (a, b) {
    console.log(a + b);
});
// some time later
evt.off();

Parameters

namestring

Name of the event to bind the callback to.

callbackHandleEventCallback

Function that is called when event is fired. Note the callback is limited to 8 arguments.

scopeobject

Object to use as 'this' when the event is fired, defaults to current this.

Returns

EventHandle

Can be used for removing event in the future.

once(name, callback, [scope])

Attach an event handler to an event. This handler will be removed after being fired once.

obj.once('test', function (a, b) {
    console.log(a + b);
});
obj.fire('test', 1, 2); // prints 3 to the console
obj.fire('test', 1, 2); // not going to get handled

Parameters

namestring

Name of the event to bind the callback to.

callbackHandleEventCallback

Function that is called when event is fired. Note the callback is limited to 8 arguments.

scopeobject

Object to use as 'this' when the event is fired, defaults to current this.

Returns

EventHandle
  • can be used for removing event in the future.