function CameraHelper( camera ) {

		var geometry = new BufferGeometry();
		var material = new LineBasicMaterial( { color: 0xffffff, vertexColors: FaceColors } );

		var vertices = [];
		var colors = [];

		var pointMap = {};

		// colors

		var colorFrustum = new Color( 0xffaa00 );
		var colorCone = new Color( 0xff0000 );
		var colorUp = new Color( 0x00aaff );
		var colorTarget = new Color( 0xffffff );
		var colorCross = new Color( 0x333333 );

		// near

		addLine( "n1", "n2", colorFrustum );
		addLine( "n2", "n4", colorFrustum );
		addLine( "n4", "n3", colorFrustum );
		addLine( "n3", "n1", colorFrustum );

		// far

		addLine( "f1", "f2", colorFrustum );
		addLine( "f2", "f4", colorFrustum );
		addLine( "f4", "f3", colorFrustum );
		addLine( "f3", "f1", colorFrustum );

		// sides

		addLine( "n1", "f1", colorFrustum );
		addLine( "n2", "f2", colorFrustum );
		addLine( "n3", "f3", colorFrustum );
		addLine( "n4", "f4", colorFrustum );

		// cone

		addLine( "p", "n1", colorCone );
		addLine( "p", "n2", colorCone );
		addLine( "p", "n3", colorCone );
		addLine( "p", "n4", colorCone );

		// up

		addLine( "u1", "u2", colorUp );
		addLine( "u2", "u3", colorUp );
		addLine( "u3", "u1", colorUp );

		// target

		addLine( "c", "t", colorTarget );
		addLine( "p", "c", colorCross );

		// cross

		addLine( "cn1", "cn2", colorCross );
		addLine( "cn3", "cn4", colorCross );

		addLine( "cf1", "cf2", colorCross );
		addLine( "cf3", "cf4", colorCross );

		function addLine( a, b, color ) {

			addPoint( a, color );
			addPoint( b, color );

		}

		function addPoint( id, color ) {

			vertices.push( 0, 0, 0 );
			colors.push( color.r, color.g, color.b );

			if ( pointMap[ id ] === undefined ) {

				pointMap[ id ] = [];

			}

			pointMap[ id ].push( ( vertices.length / 3 ) - 1 );

		}

		geometry.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );
		geometry.addAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );

		LineSegments.call( this, geometry, material );

		this.camera = camera;
		if ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();

		this.matrix = camera.matrixWorld;
		this.matrixAutoUpdate = false;

		this.pointMap = pointMap;

		this.update();

	}
@author alteredq / http://alteredqualia.com/
@author Mugen87 / https://github.com/Mugen87

	- shows frustum, line of sight and up of the camera
	- suitable for fast updates
	- based on frustum visualization in lightgl.js shadowmap example
		http://evanw.github.com/lightgl.js/tests/shadowmap.html