Alternative Creation - Adalmaer/wcrs-map GitHub Wiki

Varianten zum Erzeugen von Systemen

Points mit Sprites

function createSystems_1() {

    // create the particle variables
    var particles = new THREE.Geometry();

    // instantiate a loader
    var loader = new THREE.TextureLoader();

    //allow cross origin loading
    loader.crossOrigin = '';

    // Load Texture
    var particleTexture = loader.load("http://threejs.org/examples/textures/sprites/ball.png");
    /*var pMaterial = new THREE.PointsMaterial({
        map: particleTexture,
    transparent: true,
        size: 300,
        color: 0xCC0000
    });*/

    // Similar for quality 0 and 1
    for (i = 0; i < systemList.systems.length; i++) {
        // create a particle with position
        var pX = parseInt(systemList.systems[i].systemX) + parseInt(systemList.systems[i].quadrantX) * 1500;
        var pZ = parseInt(systemList.systems[i].systemY) + parseInt(systemList.systems[i].quadrantY) * 1500;
        var pY = 0;
        particle = new THREE.Vector3(pX, pY, pZ);

        // add it to the geometry
        particles.vertices.push(particle);

        var label = makeTextSprite(systemList.systems[i].systemName, pX, pY, pZ);
        systemGroup.add(label);
    }

    // create the particle system
    var particleSystem = new THREE.Points(
        particles,
		
		factionMaterials[systemList.systems[i].factionId]);
		
        //pMaterial);

    // add it to the scene
    systemGroup.add(particleSystem);
}

Merged Meshes

function createSystems_2() {
   
    var total = new THREE.Geometry();

    // Uses sphere geometry
    var radius = 50;
    var segments = 24;
    var rings = segments;
    // create the sphere's material
    var sphereMaterial = new THREE.MeshLambertMaterial({
        color: 0xCC0000
    });

    // Create system spheres
    for (i = 0; i < systemList.systems.length; i++) {
        // create a new mesh with
        // sphere geometry - we will cover
        // the sphereMaterial next!
        var sphere = new THREE.Mesh(

            new THREE.SphereGeometry(
                radius,
                segments,
                rings),

            sphereMaterial);
	
        var pX = (parseInt(systemList.systems[i].systemX) + parseInt(systemList.systems[i].quadrantX-1)*30) * 50;
        var pZ = (parseInt(systemList.systems[i].systemY) + parseInt(systemList.systems[i].quadrantY-1)*30) * 50;
        var pY = 0;

        sphere.position.x = pX;
        sphere.position.z = pZ;
        sphere.position.y = pY;

        // add the sphere to the scene
        sphere.updateMatrix();
        total.merge(sphere.geometry, sphere.matrix);

        var label = makeTextSprite(systemList.systems[i].systemName, pX, pY + 75, pZ,{spritescale:200});
        systemGroup.add(label);
    }

    var mesh = new THREE.Mesh(total, new THREE.MeshLambertMaterial({
        color: 0xCC0000
    }))
    systemGroup.add(mesh);
}

Vollständig mit einzelnen Sphären

function createSystems_3() {
    var group = new THREE.Object3D(); //create an empty container

    // Uses sphere geometry
    var radius = 50;
    var segments = 24;
    var rings = segments;
    // create the sphere's material
    var sphereMaterial = new THREE.MeshLambertMaterial({
        color: 0xCC0000
    });

    // Create system spheres
    for (i = 0; i < systemList.systems.length; i++) {
        // create a new mesh with
        // sphere geometry - we will cover
        // the sphereMaterial next!
        var sphere = new THREE.Mesh(

            new THREE.SphereGeometry(
                radius,
                segments,
                rings),

            sphereMaterial);

       var pX = (parseInt(systemList.systems[i].systemX) + parseInt(systemList.systems[i].quadrantX-1)*30) * 50;
        var pZ = (parseInt(systemList.systems[i].systemY) + parseInt(systemList.systems[i].quadrantY-1)*30) * 50;
        var pY = 0;

        sphere.position.x = pX;
        sphere.position.z = pZ;
        sphere.position.y = pY;

        // add the sphere to the scene
        systemGroup.add(sphere);

        var label = makeTextSprite(systemList.systems[i].systemName, pX, pY + 75, pZ,{spritescale:200});
        systemGroup.add(label);
    }
    //scene.add(group);
}