OSDN Git Service

three.jsをThirdPartyに追加
[webglgame/webgl_framework.git] / webglFramework / Thirdparty / three.js-master / src / cameras / CubeCamera.js
diff --git a/webglFramework/Thirdparty/three.js-master/src/cameras/CubeCamera.js b/webglFramework/Thirdparty/three.js-master/src/cameras/CubeCamera.js
new file mode 100644 (file)
index 0000000..66f5b41
--- /dev/null
@@ -0,0 +1,113 @@
+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 };
+
+       this.renderTarget = new WebGLRenderTargetCube( cubeResolution, cubeResolution, options );
+       this.renderTarget.texture.name = "CubeCamera";
+
+       this.update = 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 );
+
+       };
+
+       this.clear = function ( renderer, color, depth, stencil ) {
+
+               var renderTarget = this.renderTarget;
+
+               for ( var i = 0; i < 6; i ++ ) {
+
+                       renderTarget.activeCubeFace = i;
+                       renderer.setRenderTarget( renderTarget );
+
+                       renderer.clear( color, depth, stencil );
+
+               }
+
+               renderer.setRenderTarget( null );
+
+       }
+
+}
+
+CubeCamera.prototype = Object.create( Object3D.prototype );
+CubeCamera.prototype.constructor = CubeCamera;
+
+
+export { CubeCamera };