CrosseyedEffect.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /**
  2. * @author alteredq / http://alteredqualia.com/
  3. */
  4. THREE.CrosseyedEffect = function ( renderer ) {
  5. var _width, _height;
  6. var _cameraL = new THREE.PerspectiveCamera();
  7. _cameraL.target = new THREE.Vector3();
  8. var _cameraR = new THREE.PerspectiveCamera();
  9. _cameraR.target = new THREE.Vector3();
  10. var SCREEN_WIDTH = window.innerWidth;
  11. var SCREEN_HEIGHT = window.innerHeight;
  12. var HALF_WIDTH = SCREEN_WIDTH / 2;
  13. this.separation = 10;
  14. renderer.autoClear = false;
  15. this.setSize = function ( width, height ) {
  16. _width = width / 2;
  17. _height = height;
  18. renderer.setSize( width, height );
  19. };
  20. this.render = function ( scene, camera ) {
  21. _cameraL.fov = camera.fov;
  22. _cameraL.aspect = 0.5 * camera.aspect;
  23. _cameraL.near = camera.near;
  24. _cameraL.far = camera.far;
  25. _cameraL.updateProjectionMatrix();
  26. _cameraL.position.copy( camera.position );
  27. _cameraL.target.copy( camera.target );
  28. _cameraL.translateX( this.separation );
  29. _cameraL.lookAt( _cameraL.target );
  30. _cameraR.projectionMatrix = _cameraL.projectionMatrix;
  31. _cameraR.position.copy( camera.position );
  32. _cameraR.target.copy( camera.target );
  33. _cameraR.translateX( - this.separation );
  34. _cameraR.lookAt( _cameraR.target );
  35. renderer.clear();
  36. renderer.setViewport( 0, 0, _width, _height );
  37. renderer.render( scene, _cameraL );
  38. renderer.setViewport( _width, 0, _width, _height );
  39. renderer.render( scene, _cameraR, false );
  40. };
  41. };