anchor.diff:          camera.lookAt( target );
   
           raycaster = projector.pickingRay( mouse2D.clone(), camera );
  -
           renderer.render( scene, camera );
  -
         }
   
       </script>
  
positive.code:         var $container = $(container).attr('id', 'canvas-container');
          document.body.appendChild( container );
  
          var info = document.createElement( 'div' );
          info.style.position = 'absolute';
          info.style.top = '10px';
          info.style.width = '100%';
          info.style.textAlign = 'center';
          info.innerHTML = '<a href="http://threejs.org" target="_blank">three.js</a> - voxel painter<br><strong>click</strong>: add voxel, <strong>control + click</strong>: remove voxel, <strong>shift</strong>: rotate, <a href="javascript:save()">save .png</a>';
          container.appendChild( info );
  
          camera = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 1, 10000 );
          camera.position.y = 800;
  
          scene = new THREE.Scene();
  
          // Grid
  
          var size = 500, step = 50;
  
          var geometry = new THREE.Geometry();
  
          for ( var i = - size; i <= size; i += step ) {
  
            geometry.vertices.push( new THREE.Vector3( - size, 0, i ) );
            geometry.vertices.push( new THREE.Vector3(   size, 0, i ) );
  
            geometry.vertices.push( new THREE.Vector3( i, 0, - size ) );
            geometry.vertices.push( new THREE.Vector3( i, 0,   size ) );
  
          }
  
          var material = new THREE.LineBasicMaterial( { color: 0x000000, opacity: 0.2 } );
  
          var line = new THREE.Line( geometry, material );
          line.type = THREE.LinePieces;
          scene.add( line );
  
          //
  
          projector = new THREE.Projector();
  
  
negative.code:         var intersects = raycaster.intersectObjects( scene.children );
  
          if ( intersects.length > 0 ) {
            if ( ROLLOVERED ) ROLLOVERED.color.setHex( 0x00ff80 );
            ROLLOVERED = intersects[ 0 ].face;
            ROLLOVERED.color.setHex( 0xff8000 )
          }
        }
  
        function onDocumentMouseDown( event ) {
          event.preventDefault();
          var intersects = raycaster.intersectObjects( scene.children );
  
          if ( intersects.length > 0 ) {
            var intersect = intersects[ 0 ];
            if ( isCtrlDown ) {
              if ( intersect.object != plane ) {
                scene.remove( intersect.object );
              }
            } 
            else {
              normalMatrix.getNormalMatrix( intersect.object.matrixWorld );
  
              var normal = intersect.face.normal.clone();
  