Beispiel #1
0
	renderDashedCircle ( radius, color ) {

		if ( color == undefined )
			color = new THREE.Color('rgba(255, 255, 255, 0.75)');

		var circleGeometry = new THREE.Geometry();
		var verticesArray = circleGeometry.vertices;
		var segments = 128;
		var angle = 2 * Math.PI / segments;

		for( var i = 0; i <= segments; i++ ) {
	    var x = radius * Math.cos(angle * i);
	    var y = radius * Math.sin(angle * i);

	    verticesArray.push( new THREE.Vector3(x, y, 0) );
		}

		// see: http://soledadpenades.com/articles/three-js-tutorials/drawing-the-coordinate-axes/
		var circleMaterial = new THREE.LineDashedMaterial({ 
			color: 0x00FF00, 
			transparent: true,
			opacity: 0.1,
			dashSize: this.utils.AU / 1000, 
			gapSize: this.utils.AU / 1000
		});

		circleGeometry.computeLineDistances();

		var circleLine = new THREE.Line(circleGeometry, circleMaterial, THREE.LinePieces);
				circleLine.position.set(0, 0, 0);
				circleLine.rotation.set( -90 * Math.PI / 180, 0, 0 );

		return circleLine;
	}
Beispiel #2
0
World.prototype.setupEnvironment = function () {
  this.renderer = new THREE.WebGLRenderer({
      antialias: true,
      alpha: false
  });
  this.width = window.innerWidth;
  this.height = window.innerHeight;

  this.renderer.setSize(this.width, this.height);
  this.renderer.setClearColor(0xffffff, 0);
  this.renderer.domElement.id = "canvas";
  this.renderer.context.getProgramInfoLog = function () {
      return ''
  }; // muzzle

  this.effect1 = new THREE.ParallaxBarrierEffect(this.renderer);
  this.effect2 = new THREE.AnaglyphEffect(this.renderer);
  this.effect1.setSize(this.width, this.height);
  this.effect2.setSize(this.width, this.height);
  this.useEffect = 0;


  this.clock = new THREE.Clock();

  document.body.appendChild(this.renderer.domElement);

  this.camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 3000);
  this.camera.position.set(0, 0, 700);
  this.scene = new THREE.Scene();

  this.container = new THREE.Object3D();
  this.scene.add(this.container);

  var scene = this.scene;

  var particleCount = users.length;

  var uniforms = {
      texture: {
          type: 't',
          value: THREE.ImageUtils.loadTexture('images/unicorns2.jpg')
      }
  };

  var attributes = {
      texIndex: {
          type: 'f',
          value: []
      }
  };

  this.attributes = attributes;

  var material = new THREE.ShaderMaterial({
      uniforms: uniforms,
      attributes: attributes,
      vertexShader: document.getElementById('vertexShader').textContent,
      fragmentShader: document.getElementById('fragmentShader').textContent,
      transparent: true
  });


  var pointMaterial = new THREE.PointCloudMaterial({
    color: 0x09A7F7,
    size: 20,
    map: THREE.ImageUtils.loadTexture('images/disc.png'),
    transparent: true
  })


  var geometry = new THREE.Geometry();

  var zPos = -1000;

  var inc = 1500 / particleCount;

  var points = [];

  var x, y, z, r = 750;

  for (var i = 0; i < particleCount; i++) {
    do {
      x = (Math.random() - 0.5) * r*2;
      y = (Math.random() - 0.5) * r*2;
      z = (Math.random() - 0.5) * r*2;
    } while (((x*x) + (y*y) + (z*z)) > r*r)

    var pt = [x, y, z];

    var vt = new THREE.Vector3(x, y, z);

    points.push(pt);
    geometry.vertices.push(vt);
    attributes.texIndex.value.push(i);
    zPos += inc;
  }

  var tris = dt(points);

  var a, b, c, f;
  for (var i = 0; i < tris.length; i+= 5) {
    f = new THREE.Face3(tris[i][0], tris[i][1] , tris[i][2]);
    geometry.faces.push(f);
  }

  geometry.computeBoundingSphere();

  var meshMaterial = new THREE.MeshBasicMaterial({
    wireframe: true,
    color: 0xFF0044,
    transparent: true,
    opacity: 0.2
  });

  this.meshGeom = geometry.clone();

  var mesh = new THREE.Mesh(this.meshGeom, meshMaterial);

  this.container.add(mesh);

  // make a grid
  // for (var i = 0; i < particleCount; i++) {
  //   var row = Math.floor(i/32);
  //   var col = i % 32;
  //   var pos = new THREE.Vector3(
  //     -(500) + col * 32,
  //     -(500) + row * 32,
  //     -800
  //     );
  //   geometry.vertices.push(pos)
  //   attributes.texIndex.value.push(i);
  // }


  var particles = new THREE.PointCloud(geometry, pointMaterial);
  // var particles = new THREE.PointCloud(geometry, material);
  particles.sortParticles = true;
  this.particlesGeom = geometry;
  this.container.add(particles);
};