Doodle3D-Slicer/three.js-master/examples/js/controls/VRControls.js
2017-06-22 13:21:07 +02:00

79 lines
1.3 KiB
JavaScript
Executable File

/**
* @author dmarcos / https://github.com/dmarcos
* @author mrdoob / http://mrdoob.com
*/
THREE.VRControls = function ( object, callback ) {
var scope = this;
var vrInput;
var onVRDevices = function ( devices ) {
for ( var i = 0; i < devices.length; i ++ ) {
var device = devices[ i ];
if ( device instanceof PositionSensorVRDevice ) {
vrInput = devices[ i ];
return; // We keep the first we encounter
}
}
if ( callback !== undefined ) {
callback( 'HMD not available' );
}
};
if ( navigator.getVRDevices !== undefined ) {
navigator.getVRDevices().then( onVRDevices );
} else if ( callback !== undefined ) {
callback( 'Your browser is not VR Ready' );
}
// the Rift SDK returns the position in meters
// this scale factor allows the user to define how meters
// are converted to scene units.
this.scale = 1;
this.update = function () {
if ( vrInput === undefined ) return;
var state = vrInput.getState();
if ( state.orientation !== null ) {
object.quaternion.copy( state.orientation );
}
if ( state.position !== null ) {
object.position.copy( state.position ).multiplyScalar( scope.scale );
}
};
this.zeroSensor = function () {
if ( vrInput === undefined ) return;
vrInput.zeroSensor();
};
};