CubeCamera.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. /**
  2. * Camera for rendering cube maps
  3. * - renders scene into axis-aligned cube
  4. *
  5. * @author alteredq / http://alteredqualia.com/
  6. */
  7. THREE.CubeCamera = function ( near, far, cubeResolution ) {
  8. THREE.Object3D.call( this );
  9. this.type = 'CubeCamera';
  10. var fov = 90, aspect = 1;
  11. var cameraPX = new THREE.PerspectiveCamera( fov, aspect, near, far );
  12. cameraPX.up.set( 0, - 1, 0 );
  13. cameraPX.lookAt( new THREE.Vector3( 1, 0, 0 ) );
  14. this.add( cameraPX );
  15. var cameraNX = new THREE.PerspectiveCamera( fov, aspect, near, far );
  16. cameraNX.up.set( 0, - 1, 0 );
  17. cameraNX.lookAt( new THREE.Vector3( - 1, 0, 0 ) );
  18. this.add( cameraNX );
  19. var cameraPY = new THREE.PerspectiveCamera( fov, aspect, near, far );
  20. cameraPY.up.set( 0, 0, 1 );
  21. cameraPY.lookAt( new THREE.Vector3( 0, 1, 0 ) );
  22. this.add( cameraPY );
  23. var cameraNY = new THREE.PerspectiveCamera( fov, aspect, near, far );
  24. cameraNY.up.set( 0, 0, - 1 );
  25. cameraNY.lookAt( new THREE.Vector3( 0, - 1, 0 ) );
  26. this.add( cameraNY );
  27. var cameraPZ = new THREE.PerspectiveCamera( fov, aspect, near, far );
  28. cameraPZ.up.set( 0, - 1, 0 );
  29. cameraPZ.lookAt( new THREE.Vector3( 0, 0, 1 ) );
  30. this.add( cameraPZ );
  31. var cameraNZ = new THREE.PerspectiveCamera( fov, aspect, near, far );
  32. cameraNZ.up.set( 0, - 1, 0 );
  33. cameraNZ.lookAt( new THREE.Vector3( 0, 0, - 1 ) );
  34. this.add( cameraNZ );
  35. this.renderTarget = new THREE.WebGLRenderTargetCube( cubeResolution, cubeResolution, { format: THREE.RGBFormat, magFilter: THREE.LinearFilter, minFilter: THREE.LinearFilter } );
  36. this.updateCubeMap = function ( renderer, scene ) {
  37. var renderTarget = this.renderTarget;
  38. var generateMipmaps = renderTarget.generateMipmaps;
  39. renderTarget.generateMipmaps = false;
  40. renderTarget.activeCubeFace = 0;
  41. renderer.render( scene, cameraPX, renderTarget );
  42. renderTarget.activeCubeFace = 1;
  43. renderer.render( scene, cameraNX, renderTarget );
  44. renderTarget.activeCubeFace = 2;
  45. renderer.render( scene, cameraPY, renderTarget );
  46. renderTarget.activeCubeFace = 3;
  47. renderer.render( scene, cameraNY, renderTarget );
  48. renderTarget.activeCubeFace = 4;
  49. renderer.render( scene, cameraPZ, renderTarget );
  50. renderTarget.generateMipmaps = generateMipmaps;
  51. renderTarget.activeCubeFace = 5;
  52. renderer.render( scene, cameraNZ, renderTarget );
  53. };
  54. };
  55. THREE.CubeCamera.prototype = Object.create( THREE.Object3D.prototype );
  56. THREE.CubeCamera.prototype.constructor = THREE.CubeCamera;
粤ICP备19079148号