three.js所。应用EdgesHelper后更改网格位置

时间:2014-11-25 12:35:57

标签: javascript three.js mesh

我尝试在应用EdgesHelper后旋转或更改网格的位置,但它不起作用 - 网格停留在同一位置。 (没有EdgesHelper它工作正常)。我做错了什么?

var mesh = new THREE.Mesh( geometry, material );
var edges = new THREE.EdgesHelper( mesh, 0xcf0000 );

edges.position.z = 100;
edges.position.x = 100;

scene.add( edges );            

2 个答案:

答案 0 :(得分:1)

查看THREE.EdgesHelper的来源,似乎matrixAutoUpdate设置为false。这可以防止每次更新时计算位置和旋转。

https://github.com/mrdoob/three.js/blob/master/src/extras/helpers/EdgesHelper.js

将EdgesHelper的matrixAutoUpdate设置为true应该可以解决问题,但在设置新位置或旋转后调用.updateMatrix()函数似乎更清晰。

答案 1 :(得分:1)

我有同样的问题,正如我建议的那样:

        egh.matrixAutoUpdate = true;

边缘和立方体遵循我使用的坐标:

        var cube = new THREE.Mesh( new THREE.CubeGeometry(width,height,depth), 
                        new THREE.MeshBasicMaterial( {color: 0x00AA00, side:THREE.DoubleSide, opacity: 0.5, transparent: true } ) );
        scene.add(cube);

        var egh = new THREE.EdgesHelper(cube, 0x777777);
        egh.material.linewidth = 1;
        egh.position.x = cube.position.x;
        egh.position.y = cube.position.y;
        egh.position.z = cube.position.z;
        egh.matrixAutoUpdate = true; // this helped
        scene.add(egh);