我尝试在应用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 );
答案 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);