function CameraHelper( camera ) {

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

        var pointMap = {};

        // colors

        var hexFrustum = 0xffaa00;
        var hexCone = 0xff0000;
        var hexUp = 0x00aaff;
        var hexTarget = 0xffffff;
        var hexCross = 0x333333;

        // near

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

        // far

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

        // sides

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

        // cone

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

        // up

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

        // target

        addLine( "c", "t", hexTarget );
        addLine( "p", "c", hexCross );

        // cross

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

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

        function addLine( a, b, hex ) {

            addPoint( a, hex );
            addPoint( b, hex );

        }

        function addPoint( id, hex ) {

            geometry.vertices.push( new Vector3() );
            geometry.colors.push( new Color( hex ) );

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

                pointMap[ id ] = [];

            }

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

        }

        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/

 - 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