1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- import { Object3D } from '../core/Object3D';
- import { WebGLRenderTargetCube } from '../renderers/WebGLRenderTargetCube';
- import { LinearFilter, RGBFormat } from '../constants';
- import { Vector3 } from '../math/Vector3';
- import { PerspectiveCamera } from './PerspectiveCamera';
- /**
- * Camera for rendering cube maps
- * - renders scene into axis-aligned cube
- *
- * @author alteredq / http://alteredqualia.com/
- */
- function CubeCamera( near, far, cubeResolution ) {
- Object3D.call( this );
- this.type = 'CubeCamera';
- var fov = 90, aspect = 1;
- var cameraPX = new PerspectiveCamera( fov, aspect, near, far );
- cameraPX.up.set( 0, - 1, 0 );
- cameraPX.lookAt( new Vector3( 1, 0, 0 ) );
- this.add( cameraPX );
- var cameraNX = new PerspectiveCamera( fov, aspect, near, far );
- cameraNX.up.set( 0, - 1, 0 );
- cameraNX.lookAt( new Vector3( - 1, 0, 0 ) );
- this.add( cameraNX );
- var cameraPY = new PerspectiveCamera( fov, aspect, near, far );
- cameraPY.up.set( 0, 0, 1 );
- cameraPY.lookAt( new Vector3( 0, 1, 0 ) );
- this.add( cameraPY );
- var cameraNY = new PerspectiveCamera( fov, aspect, near, far );
- cameraNY.up.set( 0, 0, - 1 );
- cameraNY.lookAt( new Vector3( 0, - 1, 0 ) );
- this.add( cameraNY );
- var cameraPZ = new PerspectiveCamera( fov, aspect, near, far );
- cameraPZ.up.set( 0, - 1, 0 );
- cameraPZ.lookAt( new Vector3( 0, 0, 1 ) );
- this.add( cameraPZ );
- var cameraNZ = new PerspectiveCamera( fov, aspect, near, far );
- cameraNZ.up.set( 0, - 1, 0 );
- cameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );
- this.add( cameraNZ );
- var options = { format: RGBFormat, magFilter: LinearFilter, minFilter: LinearFilter, name: "cubeCamera" };
- this.renderTarget = new WebGLRenderTargetCube( cubeResolution, cubeResolution, options );
- this.updateCubeMap = function ( renderer, scene ) {
- if ( this.parent === null ) this.updateMatrixWorld();
- var renderTarget = this.renderTarget;
- var generateMipmaps = renderTarget.texture.generateMipmaps;
- renderTarget.texture.generateMipmaps = false;
- renderTarget.activeCubeFace = 0;
- renderer.render( scene, cameraPX, renderTarget );
- renderTarget.activeCubeFace = 1;
- renderer.render( scene, cameraNX, renderTarget );
- renderTarget.activeCubeFace = 2;
- renderer.render( scene, cameraPY, renderTarget );
- renderTarget.activeCubeFace = 3;
- renderer.render( scene, cameraNY, renderTarget );
- renderTarget.activeCubeFace = 4;
- renderer.render( scene, cameraPZ, renderTarget );
- renderTarget.texture.generateMipmaps = generateMipmaps;
- renderTarget.activeCubeFace = 5;
- renderer.render( scene, cameraNZ, renderTarget );
- renderer.setRenderTarget( null );
- };
- }
- CubeCamera.prototype = Object.create( Object3D.prototype );
- CubeCamera.prototype.constructor = CubeCamera;
- export { CubeCamera };
|