|
@@ -8,12 +8,16 @@ THREE.StereoEffect = function ( renderer ) {
|
|
// API
|
|
// API
|
|
|
|
|
|
this.separation = 6;
|
|
this.separation = 6;
|
|
- this.targetDistance = 100;
|
|
|
|
|
|
+ this.targetDistance = 500;
|
|
|
|
|
|
// internals
|
|
// internals
|
|
|
|
|
|
var _width, _height;
|
|
var _width, _height;
|
|
|
|
|
|
|
|
+ var _position = new THREE.Vector3();
|
|
|
|
+ var _quaternion = new THREE.Quaternion();
|
|
|
|
+ var _scale = new THREE.Vector3();
|
|
|
|
+
|
|
var _cameraL = new THREE.PerspectiveCamera();
|
|
var _cameraL = new THREE.PerspectiveCamera();
|
|
var _cameraR = new THREE.PerspectiveCamera();
|
|
var _cameraR = new THREE.PerspectiveCamera();
|
|
var _target = new THREE.Vector3();
|
|
var _target = new THREE.Vector3();
|
|
@@ -33,9 +37,15 @@ THREE.StereoEffect = function ( renderer ) {
|
|
|
|
|
|
this.render = function ( scene, camera ) {
|
|
this.render = function ( scene, camera ) {
|
|
|
|
|
|
|
|
+ scene.updateMatrixWorld();
|
|
|
|
+
|
|
|
|
+ if ( camera.parent === undefined ) camera.updateMatrixWorld();
|
|
|
|
+
|
|
|
|
+ camera.matrixWorld.decompose( _position, _quaternion, _scale );
|
|
|
|
+
|
|
_target.set( 0, 0, - this.targetDistance );
|
|
_target.set( 0, 0, - this.targetDistance );
|
|
- _target.applyQuaternion( camera.quaternion );
|
|
|
|
- _target.add( camera.position );
|
|
|
|
|
|
+ _target.applyQuaternion( _quaternion );
|
|
|
|
+ _target.add( _position );
|
|
|
|
|
|
// left
|
|
// left
|
|
|
|
|
|
@@ -46,7 +56,7 @@ THREE.StereoEffect = function ( renderer ) {
|
|
_cameraL.near = camera.near;
|
|
_cameraL.near = camera.near;
|
|
_cameraL.far = camera.far;
|
|
_cameraL.far = camera.far;
|
|
|
|
|
|
- _cameraL.position.copy( camera.position );
|
|
|
|
|
|
+ _cameraL.position.copy( _position );
|
|
_cameraL.translateX( - this.separation );
|
|
_cameraL.translateX( - this.separation );
|
|
_cameraL.lookAt( _target );
|
|
_cameraL.lookAt( _target );
|
|
|
|
|
|
@@ -57,7 +67,7 @@ THREE.StereoEffect = function ( renderer ) {
|
|
_cameraR.near = camera.near;
|
|
_cameraR.near = camera.near;
|
|
_cameraR.far = camera.far;
|
|
_cameraR.far = camera.far;
|
|
|
|
|
|
- _cameraR.position.copy( camera.position );
|
|
|
|
|
|
+ _cameraR.position.copy( _position );
|
|
_cameraR.translateX( this.separation );
|
|
_cameraR.translateX( this.separation );
|
|
_cameraR.lookAt( _target );
|
|
_cameraR.lookAt( _target );
|
|
|
|
|
|
@@ -70,7 +80,7 @@ THREE.StereoEffect = function ( renderer ) {
|
|
renderer.render( scene, _cameraL );
|
|
renderer.render( scene, _cameraL );
|
|
|
|
|
|
renderer.setViewport( _width, 0, _width, _height );
|
|
renderer.setViewport( _width, 0, _width, _height );
|
|
- renderer.render( scene, _cameraR, false );
|
|
|
|
|
|
+ renderer.render( scene, _cameraR );
|
|
|
|
|
|
};
|
|
};
|
|
|
|
|