function wall()
{
    this.start_time = 0;
    this.end_time = 0;

	  this.angularSpeed = 0.2; 
    this.angle = 0.5;
    this.objWall, this.objChamfer=[];
    this.renderer, this.scene, this.camera;
    this.angleChange, this.light, this.light1;
    this.objCounter;
    
    this.geometry;
    this.counter;

    this.aBloomFactor = 0.4, this.aBloomStrength = 1.5; // Adjust parameters as you want
    this.aEffectCopy;
    this.aEffectBloom;
    this.aRenderModel;
    

    this.init = function(renderer, camera)
    {      
    
      this.renderer = renderer;
            
      this.camera = camera;
      this.scene = new THREE.Scene();
      this.objWall = new THREE.Object3D();
      
      // Add ChamferBox to scenegraph
      // Create Cubemap -------------------------------------------------------------------------------------------
      var path = "assets/cube/";
			var format = '.jpg';
			var urls = [
					path + 'posx_1' + format, path + 'negx_1' + format,
					path + 'posy_1' + format, path + 'negy_1' + format,
					path + 'posz_1' + format, path + 'negz_1' + format
				];

			var reflectionCube = THREE.ImageUtils.loadTextureCube( urls );
			reflectionCube.format = THREE.RGBFormat;

      var cubeMaterial = new THREE.MeshLambertMaterial( { color: 0xffffff, ambient: 0x000000 , specular: 0xffffff, envMap: reflectionCube, combine: THREE.MixOperation, reflectivity: 0.1 } );

      var i=0;
      var xg = 25, yg = 15;
      
      for (var x = 0; x<xg; x++)
        for (var y = 0; y<yg; y++)
          {
            this.objChamfer[i] = create_chamfer_0();
            this.objChamfer[i].material = cubeMaterial;
          
            this.objChamfer[i].position.set( -100+x*20, -120+y*20 , 0);
            this.objWall.add( this.objChamfer[i] ); 
            i++;   
          }      
        
      this.objCounter = i;        
      this.scene.add(this.objWall);
      //this.objChamfer.position.set( 0, 0, 0 );

      //mesh.scale.set( 3, 3, 3 );

      
      // Add Maiin light to scenegraph
      this.light = new THREE.AmbientLight( 0xffffff );
      //this.light.castShadow = true;
      this.scene.add(this.light);
      
      this.light1 = new THREE.SpotLight( 0xff3333, 0.4 );
      this.light1.position.set(-50, 0, 20);
      this.light1.target.position.set( 0, 0, 0);
      //this.light.castShadow = true;
      this.scene.add(this.light1);
      
      // Init the Bloom postprocessing ---------------------------------------------------
      this.aEffectBloom = new THREE.BloomPass(this.aBloomStrength, this.aBloomFactor * 25.0, this.aBloomFactor * 4.0, 512 );
     
      // Create the post-effect system
      this.aEffectCopy = new THREE.ShaderPass(THREE.CopyShader);
      this.aEffectCopy.renderToScreen = true;    
      this.aRenderModel = new THREE.RenderPass(this.scene, this.camera);               
     
      // Create the rendering pass
      this.composer = new THREE.EffectComposer(this.renderer);
      this.composer.addPass(this.aRenderModel);
      this.composer.addPass(this.aEffectBloom);
      this.composer.addPass(this.aEffectCopy);   

    };

    this.setupRenderer = function(){
    
      this.renderer.setClearColor( 0x222222, 1.0 );

      this.renderer.autoClear  = false;   
      this.camera.fov = 70;
      this.camera.updateProjectionMatrix();
      this.camera.position.z = 120;
      this.camera.position.y = 40;

           
      key('w', function(){ alert("-");this.angle -=0.1 });
      key('x', function(){ this.angle +=0.1 });    
    }


    this.render = function(demoFrame)
    {
        
    	  this.angleChange = this.angularSpeed * demoFrame * 2 * Math.PI / 1000;

        this.light1.position.x = 200.0*Math.cos(demoFrame);
        this.light1.position.y = 200.0*Math.sin(demoFrame);

        for (var x = 0; x<this.objCounter; x++)
        {
          this.objWall.children[x].position.x -= 1; 
          
          if(this.objWall.children[x].position.x < -159 )
            this.objWall.children[x].position.x = 340;
        }
        this.camera.position.y = 40;
        this.camera.rotation.z = 37;
        this.objWall.rotation.y = 0.25;
        
        //this.renderer.render(this.scene, this.camera);
        this.composer.render();
    }

}