简体   繁体   中英

Three.js Mesh position not changing on set

I am trying to map lat/long data to a sphere. I am able to get vectors with different positions and set the position of the cube mesh to those. After I merge and display it appears that there is only one cube. I am assuming that all the cubes are in the same position. Wondering where I am going wrong here. (latLongToSphere returns a vector);

// simple function that converts the data to the markers on screen
function renderData() {

    // the geometry that will contain all the cubes
    var geom = new THREE.Geometry();

    // add non reflective material to cube
    var cubeMat = new THREE.MeshLambertMaterial({color: 0xffffff,opacity:0.6, emissive:0xffffff});

    for (var i = quakes.length - 1; i >= 0; i--) {

        var objectCache = quakes[i]["geometry"]["coordinates"];

        // calculate the position where we need to start the cube
        var position = latLongToSphere(objectCache[0], objectCache[1], 600);

        // create the cube
        var cubeGeom = new THREE.BoxGeometry(2,2,2000,1,1,1),
            cube = new THREE.Mesh(cubeGeom, cubeMat);

        // position the cube correctly
        cube.position.set(position.x, position.y, position.z);
        cube.lookAt( new THREE.Vector3(0,0,0) );

        // merge with main model
        geom.merge(cube.geometry, cube.matrix);
    }

    // create a new mesh, containing all the other meshes.
    var combined = new THREE.Mesh(geom, cubeMat);

    // and add the total mesh to the scene
    scene.add(combined);
}

You have to update the mesh matrix before merging its geometry:

cube.updateMatrix();
geom.merge(cube.geometry, cube.matrix);

jsfiddle: http://jsfiddle.net/L0rdzbej/222/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM