提交 a3e8db4c 编写于 作者: M Mr.doob

Editor: Updated WebVR code.

上级 f8ac3ca2
......@@ -85,8 +85,6 @@
<script src="js/Player.js"></script>
<script src="js/Script.js"></script>
<script src="../examples/js/effects/VREffect.js"></script>
<script src="../examples/js/controls/VRControls.js"></script>
<script src="../examples/js/vr/WebVR.js"></script>
<script src="js/Storage.js"></script>
......@@ -392,51 +390,6 @@
}, false );
*/
// VR
var groupVR;
// TODO: Use editor.signals.enteredVR (WebVR 1.0)
editor.signals.enterVR.add( function () {
if ( groupVR === undefined ) {
groupVR = new THREE.HTMLGroup( viewport.dom );
editor.sceneHelpers.add( groupVR );
var mesh = new THREE.HTMLMesh( sidebar.dom );
mesh.position.set( 15, 0, 15 );
mesh.rotation.y = - 0.5;
groupVR.add( mesh );
var signals = editor.signals;
function updateTexture() {
mesh.material.map.update();
}
signals.objectSelected.add( updateTexture );
signals.objectAdded.add( updateTexture );
signals.objectChanged.add( updateTexture );
signals.objectRemoved.add( updateTexture );
signals.sceneGraphChanged.add( updateTexture );
signals.historyChanged.add( updateTexture );
}
groupVR.visible = true;
} );
editor.signals.exitedVR.add( function () {
if ( groupVR !== undefined ) groupVR.visible = false;
} );
</script>
</body>
</html>
......@@ -22,13 +22,6 @@ var Editor = function () {
startPlayer: new Signal(),
stopPlayer: new Signal(),
// vr
enterVR: new Signal(),
enteredVR: new Signal(),
exitedVR: new Signal(),
// actions
showModal: new Signal(),
......
......@@ -273,8 +273,6 @@ Menubar.File = function ( editor ) {
if ( vr ) {
includes.push( '<script src="js/VRControls.js"></script>' );
includes.push( '<script src="js/VREffect.js"></script>' );
includes.push( '<script src="js/WebVR.js"></script>' );
}
......@@ -297,19 +295,7 @@ Menubar.File = function ( editor ) {
if ( vr ) {
loader.load( '../examples/js/controls/VRControls.js', function ( content ) {
zip.file( 'js/VRControls.js', content );
} );
loader.load( '../examples/js/effects/VREffect.js', function ( content ) {
zip.file( 'js/VREffect.js', content );
} );
loader.load( '../examples/js/WebVR.js', function ( content ) {
loader.load( '../examples/js/vr/WebVR.js', function ( content ) {
zip.file( 'js/WebVR.js', content );
......
......@@ -22,18 +22,6 @@ var Viewport = function ( editor ) {
var objects = [];
//
var vrEffect, vrControls;
if ( WEBVR.isAvailable() === true ) {
var vrCamera = new THREE.PerspectiveCamera();
vrCamera.projectionMatrix = camera.projectionMatrix;
camera.add( vrCamera );
}
// helpers
var grid = new THREE.GridHelper( 60, 60 );
......@@ -283,12 +271,6 @@ var Viewport = function ( editor ) {
} );
signals.enterVR.add( function () {
vrEffect.isPresenting ? vrEffect.exitPresent() : vrEffect.requestPresent();
} );
signals.themeChanged.add( function ( value ) {
switch ( value ) {
......@@ -345,19 +327,6 @@ var Viewport = function ( editor ) {
container.dom.appendChild( renderer.domElement );
if ( WEBVR.isAvailable() === true ) {
vrControls = new THREE.VRControls( vrCamera );
vrEffect = new THREE.VREffect( renderer );
window.addEventListener( 'vrdisplaypresentchange', function ( event ) {
effect.isPresenting ? signals.enteredVR.dispatch() : signals.exitedVR.dispatch();
}, false );
}
render();
} );
......@@ -557,49 +526,21 @@ var Viewport = function ( editor ) {
//
function animate() {
requestAnimationFrame( animate );
if ( vrEffect && vrEffect.isPresenting ) {
render();
}
}
function render() {
sceneHelpers.updateMatrixWorld();
scene.updateMatrixWorld();
if ( vrEffect && vrEffect.isPresenting ) {
renderer.render( scene, camera );
vrControls.update();
if ( renderer instanceof THREE.RaytracingRenderer === false ) {
camera.updateMatrixWorld();
vrEffect.render( scene, vrCamera );
vrEffect.render( sceneHelpers, vrCamera );
} else {
renderer.render( scene, camera );
if ( renderer instanceof THREE.RaytracingRenderer === false ) {
renderer.render( sceneHelpers, camera );
}
renderer.render( sceneHelpers, camera );
}
}
requestAnimationFrame( animate );
return container;
};
......@@ -9,19 +9,17 @@ var APP = {
var loader = new THREE.ObjectLoader();
var camera, scene, renderer;
var controls, effect, cameraVR, isVR;
var events = {};
this.dom = document.createElement( 'div' );
var dom = document.createElement( 'div' );
this.dom = dom;
this.width = 500;
this.height = 500;
this.load = function ( json ) {
isVR = json.project.vr;
renderer = new THREE.WebGLRenderer( { antialias: true } );
renderer.setClearColor( 0x000000 );
renderer.setPixelRatio( window.devicePixelRatio );
......@@ -36,7 +34,13 @@ var APP = {
}
this.dom.appendChild( renderer.domElement );
if ( json.project.vr ) {
renderer.vr.enabled = true;
}
dom.appendChild( renderer.domElement );
this.setScene( loader.parse( json.scene ) );
this.setCamera( loader.parse( json.camera ) );
......@@ -116,26 +120,20 @@ var APP = {
camera.aspect = this.width / this.height;
camera.updateProjectionMatrix();
if ( isVR === true ) {
if ( renderer.vr.enabled ) {
cameraVR = new THREE.PerspectiveCamera();
cameraVR.projectionMatrix = camera.projectionMatrix;
camera.add( cameraVR );
WEBVR.checkAvailability().catch( function( message ) {
controls = new THREE.VRControls( cameraVR );
effect = new THREE.VREffect( renderer );
dom.appendChild( WEBVR.getMessageContainer( message ) );
if ( WEBVR.isAvailable() === true ) {
} );
this.dom.appendChild( WEBVR.getButton( effect ) );
}
WEBVR.getVRDisplay( function ( device ) {
if ( WEBVR.isLatestAvailable() === false ) {
renderer.vr.setDevice( device );
dom.appendChild( WEBVR.getButton( device, renderer.domElement ) );
this.dom.appendChild( WEBVR.getMessage() );
}
} );
}
......@@ -193,18 +191,7 @@ var APP = {
}
if ( isVR === true ) {
camera.updateMatrixWorld();
controls.update();
effect.render( scene, cameraVR );
} else {
renderer.render( scene, camera );
}
renderer.render( scene, camera );
prevTime = time;
......@@ -247,9 +234,9 @@ var APP = {
this.dispose = function () {
while ( this.dom.children.length ) {
while ( dom.children.length ) {
this.dom.removeChild( this.dom.firstChild );
dom.removeChild( dom.firstChild );
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册