npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

react-vr-controller-raycaster

v1.1.1

Published

3dof and 6dof controller raycaster for React VR applications

Downloads

10

Readme

3dof / 6dof Controller Raycaster for React VR

This package allows you to connect external controllers to your React VR application. Controllers that track position (like Oculus Touch) or orientation (like the Gear VR Controller) are both supported, and will give your users more precise control when viewing your scene in VR.

Adding to your application

To use the raycaster in your project, install it by adding the npm package to your app:

yarn add react-vr-controller-raycaster

# OR

npm install --save react-vr-controller-raycaster

One the package has been installed, you need to use it at initialization time, in the code found at vr/client.js.

React VR raycasters act as a cascade: the app walks through the list until it encounters a raycaster that returns a value. This package is designed with this in mind; it only activates when a controller is connected. That way, it can be used alongside other raycasters like the default Mouse / Touchscreen input used by new React VR applications. This cascade is implemented as an array of different raycasters, passed to a raycasters key in the initializer:

import * as OVRUI from 'ovrui';
import ControllerRayCaster from 'react-vr-controller-raycaster';

function init(bundle, parent, options) {
  const scene = new THREE.Scene(); // Create a Scene object, more on this below

  const vr = new VRInstance(bundle, 'StarterProject', parent, {
    // specify your list of raycasters
    raycasters: [
      new ControllerRayCaster({scene, color: '#ff0000'}),
      new OVRUI.MouseRayCaster(),
    ],

    scene: scene,
    cursorVisibility: 'visible',
    ...options,
  });

  // ....

The constructor for ControllerRayCaster takes an object with a number of initialization options: hand, scene, and color are currently supported, and are described in detail below.

scene option

In order to render the controller visualization, it needs access to the Three.js Scene used by your React VR application. The best way to do this is to construct a single scene and pass it to both the raycaster and your React VR application, as demonstrated in the example code above.

hand option

By default, the raycaster will attach to the first gamepad that has any position or orientation tracking. However, some systems like Oculus Touch come in pairs, and you may want to explicitly attach to a specific controller. If you pass a hand option to the constructor, the raycasters will ONLY attach to gamepads that expose a hand equal to the one you specified. Currently the only supported values are "left" and "right".

color option

The beam cast by the controller is white by default. You can color it by passing a string containing a hex color to the constructor. In the example above, the beam will be colored bright red because the value has been set to "#ff0000".

Additionally, you can dynamically change the color of the beam by calling .setColor(color) on your ControllerRayCaster instance. This can be combined with other events to create interesting effects.