12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- /**
- * @author alteredq / http://alteredqualia.com/
- */
- THREE.CrosseyedEffect = function ( renderer ) {
- // API
- this.separation = 10;
- // internals
- var _width, _height;
- var _cameraL = new THREE.PerspectiveCamera();
- _cameraL.target = new THREE.Vector3();
- var _cameraR = new THREE.PerspectiveCamera();
- _cameraR.target = new THREE.Vector3();
- // initialization
- renderer.autoClear = false;
- this.setSize = function ( width, height ) {
- _width = width / 2;
- _height = height;
- renderer.setSize( width, height );
- };
- this.render = function ( scene, camera ) {
- // left
- _cameraL.fov = camera.fov;
- _cameraL.aspect = 0.5 * camera.aspect;
- _cameraL.near = camera.near;
- _cameraL.far = camera.far;
- _cameraL.updateProjectionMatrix();
- _cameraL.position.copy( camera.position );
- _cameraL.target.copy( camera.target );
- _cameraL.translateX( this.separation );
- _cameraL.lookAt( _cameraL.target );
- // right
- _cameraR.near = camera.near;
- _cameraR.far = camera.far;
- _cameraR.projectionMatrix = _cameraL.projectionMatrix;
- _cameraR.position.copy( camera.position );
- _cameraR.target.copy( camera.target );
- _cameraR.translateX( - this.separation );
- _cameraR.lookAt( _cameraR.target );
- //
- renderer.clear();
- renderer.setViewport( 0, 0, _width, _height );
- renderer.render( scene, _cameraL );
- renderer.setViewport( _width, 0, _width, _height );
- renderer.render( scene, _cameraR, false );
- };
- };
|