|
@@ -11,16 +11,10 @@ THREE.CameraHelper = function ( camera ) {
|
|
|
|
|
|
THREE.Line.call( this );
|
|
|
|
|
|
- var scope = this;
|
|
|
+ var geometry = new THREE.Geometry();
|
|
|
+ var material = new THREE.LineBasicMaterial( { color: 0xffffff, vertexColors: THREE.FaceColors } );
|
|
|
|
|
|
- this.geometry = new THREE.Geometry();
|
|
|
- this.material = new THREE.LineBasicMaterial( { color: 0xffffff, vertexColors: THREE.FaceColors } );
|
|
|
- this.type = THREE.LinePieces;
|
|
|
-
|
|
|
- this.matrixWorld = camera.matrixWorld;
|
|
|
- this.matrixAutoUpdate = false;
|
|
|
-
|
|
|
- this.pointMap = {};
|
|
|
+ var pointMap = {};
|
|
|
|
|
|
// colors
|
|
|
|
|
@@ -77,8 +71,6 @@ THREE.CameraHelper = function ( camera ) {
|
|
|
addLine( "cf1", "cf2", hexCross );
|
|
|
addLine( "cf3", "cf4", hexCross );
|
|
|
|
|
|
- this.camera = camera;
|
|
|
-
|
|
|
function addLine( a, b, hex ) {
|
|
|
|
|
|
addPoint( a, hex );
|
|
@@ -88,16 +80,26 @@ THREE.CameraHelper = function ( camera ) {
|
|
|
|
|
|
function addPoint( id, hex ) {
|
|
|
|
|
|
- scope.geometry.vertices.push( new THREE.Vector3() );
|
|
|
- scope.geometry.colors.push( new THREE.Color( hex ) );
|
|
|
+ geometry.vertices.push( new THREE.Vector3() );
|
|
|
+ geometry.colors.push( new THREE.Color( hex ) );
|
|
|
|
|
|
- if ( scope.pointMap[ id ] === undefined ) scope.pointMap[ id ] = [];
|
|
|
+ if ( pointMap[ id ] === undefined ) {
|
|
|
|
|
|
- scope.pointMap[ id ].push( scope.geometry.vertices.length - 1 );
|
|
|
+ pointMap[ id ] = [];
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ pointMap[ id ].push( geometry.vertices.length - 1 );
|
|
|
|
|
|
}
|
|
|
|
|
|
- this.update( camera );
|
|
|
+ THREE.Line.call( this, geometry, material, THREE.LinePieces );
|
|
|
+
|
|
|
+ this.camera = camera;
|
|
|
+ this.matrixWorld = camera.matrixWorld;
|
|
|
+ this.matrixAutoUpdate = false;
|
|
|
+
|
|
|
+ this.pointMap = pointMap;
|
|
|
|
|
|
};
|
|
|
|
|
@@ -105,76 +107,79 @@ THREE.CameraHelper.prototype = Object.create( THREE.Line.prototype );
|
|
|
|
|
|
THREE.CameraHelper.prototype.update = function () {
|
|
|
|
|
|
- var scope = this;
|
|
|
+ var vector = new THREE.Vector3();
|
|
|
+ var camera = new THREE.Camera();
|
|
|
+ var projector = new THREE.Projector();
|
|
|
|
|
|
- var w = 1, h = 1;
|
|
|
+ return function () {
|
|
|
|
|
|
- // we need just camera projection matrix
|
|
|
- // world matrix must be identity
|
|
|
+ var scope = this;
|
|
|
|
|
|
- THREE.CameraHelper.__c.projectionMatrix.copy( this.camera.projectionMatrix );
|
|
|
+ var w = 1, h = 1;
|
|
|
|
|
|
- // center / target
|
|
|
+ // we need just camera projection matrix
|
|
|
+ // world matrix must be identity
|
|
|
|
|
|
- setPoint( "c", 0, 0, -1 );
|
|
|
- setPoint( "t", 0, 0, 1 );
|
|
|
+ camera.projectionMatrix.copy( this.camera.projectionMatrix );
|
|
|
|
|
|
- // near
|
|
|
+ // center / target
|
|
|
|
|
|
- setPoint( "n1", -w, -h, -1 );
|
|
|
- setPoint( "n2", w, -h, -1 );
|
|
|
- setPoint( "n3", -w, h, -1 );
|
|
|
- setPoint( "n4", w, h, -1 );
|
|
|
+ setPoint( "c", 0, 0, -1 );
|
|
|
+ setPoint( "t", 0, 0, 1 );
|
|
|
|
|
|
- // far
|
|
|
+ // near
|
|
|
|
|
|
- setPoint( "f1", -w, -h, 1 );
|
|
|
- setPoint( "f2", w, -h, 1 );
|
|
|
- setPoint( "f3", -w, h, 1 );
|
|
|
- setPoint( "f4", w, h, 1 );
|
|
|
+ setPoint( "n1", -w, -h, -1 );
|
|
|
+ setPoint( "n2", w, -h, -1 );
|
|
|
+ setPoint( "n3", -w, h, -1 );
|
|
|
+ setPoint( "n4", w, h, -1 );
|
|
|
|
|
|
- // up
|
|
|
+ // far
|
|
|
|
|
|
- setPoint( "u1", w * 0.7, h * 1.1, -1 );
|
|
|
- setPoint( "u2", -w * 0.7, h * 1.1, -1 );
|
|
|
- setPoint( "u3", 0, h * 2, -1 );
|
|
|
+ setPoint( "f1", -w, -h, 1 );
|
|
|
+ setPoint( "f2", w, -h, 1 );
|
|
|
+ setPoint( "f3", -w, h, 1 );
|
|
|
+ setPoint( "f4", w, h, 1 );
|
|
|
|
|
|
- // cross
|
|
|
+ // up
|
|
|
|
|
|
- setPoint( "cf1", -w, 0, 1 );
|
|
|
- setPoint( "cf2", w, 0, 1 );
|
|
|
- setPoint( "cf3", 0, -h, 1 );
|
|
|
- setPoint( "cf4", 0, h, 1 );
|
|
|
+ setPoint( "u1", w * 0.7, h * 1.1, -1 );
|
|
|
+ setPoint( "u2", -w * 0.7, h * 1.1, -1 );
|
|
|
+ setPoint( "u3", 0, h * 2, -1 );
|
|
|
|
|
|
- setPoint( "cn1", -w, 0, -1 );
|
|
|
- setPoint( "cn2", w, 0, -1 );
|
|
|
- setPoint( "cn3", 0, -h, -1 );
|
|
|
- setPoint( "cn4", 0, h, -1 );
|
|
|
+ // cross
|
|
|
|
|
|
- function setPoint( point, x, y, z ) {
|
|
|
+ setPoint( "cf1", -w, 0, 1 );
|
|
|
+ setPoint( "cf2", w, 0, 1 );
|
|
|
+ setPoint( "cf3", 0, -h, 1 );
|
|
|
+ setPoint( "cf4", 0, h, 1 );
|
|
|
|
|
|
- THREE.CameraHelper.__v.set( x, y, z );
|
|
|
- THREE.CameraHelper.__projector.unprojectVector( THREE.CameraHelper.__v, THREE.CameraHelper.__c );
|
|
|
+ setPoint( "cn1", -w, 0, -1 );
|
|
|
+ setPoint( "cn2", w, 0, -1 );
|
|
|
+ setPoint( "cn3", 0, -h, -1 );
|
|
|
+ setPoint( "cn4", 0, h, -1 );
|
|
|
|
|
|
- var points = scope.pointMap[ point ];
|
|
|
+ function setPoint( point, x, y, z ) {
|
|
|
|
|
|
- if ( points !== undefined ) {
|
|
|
+ vector.set( x, y, z );
|
|
|
+ projector.unprojectVector( vector, camera );
|
|
|
|
|
|
- for ( var i = 0, il = points.length; i < il; i ++ ) {
|
|
|
+ var points = scope.pointMap[ point ];
|
|
|
|
|
|
- scope.geometry.vertices[ points[ i ] ].copy( THREE.CameraHelper.__v );
|
|
|
+ if ( points !== undefined ) {
|
|
|
|
|
|
- }
|
|
|
+ for ( var i = 0, il = points.length; i < il; i ++ ) {
|
|
|
|
|
|
- }
|
|
|
+ scope.geometry.vertices[ points[ i ] ].copy( vector );
|
|
|
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
- this.geometry.verticesNeedUpdate = true;
|
|
|
+ }
|
|
|
|
|
|
-};
|
|
|
+ this.geometry.verticesNeedUpdate = true;
|
|
|
|
|
|
-THREE.CameraHelper.__projector = new THREE.Projector();
|
|
|
-THREE.CameraHelper.__v = new THREE.Vector3();
|
|
|
-THREE.CameraHelper.__c = new THREE.Camera();
|
|
|
+ };
|
|
|
|
|
|
+}();
|