使用自定义几何体时,Three.js拾取无法正常工作

时间:2012-10-08 09:24:19

标签: three.js picking

我在选择实施时遇到问题。我发现了许多不同的例子正在做我想要的,但我真的不能让它按照它应该的方式工作。我主要关注this example

基本上,我的场景中有一些网格,双击其中任何一个,我想改变所选网格的颜色。在场景中有3个小立方体总是被选中,而一些更复杂的网格通常不是。我想知道是否有人可以帮我弄清楚为什么,如果可以选择立方体,其他人往往不能。

我用来检测点击网格的代码是:

var projector = new THREE.Projector();

var vector = new THREE.Vector3( ( event.clientX / window.innerWidth ) * 2 - 1, - ( event.clientY / window.innerHeight ) * 2 + 1, 0.5 );

projector.unprojectVector( vector, camera );

var ray = new THREE.Ray( camera.position, vector.subSelf( camera.position ).normalize() );

var intersects = ray.intersectObjects( scene.children, true );

if ( intersects.length > 0 ) 
{
    intersects[ 0 ].object.material.color.setHex( Math.random() * 0xffffff );
}

1 个答案:

答案 0 :(得分:1)

ray.intersectObject()调用的

ray.intersectObjects()需要面部质心。

mesh.geometry.computeCentroids();

如果要创建自己的自定义几何图形,这很重要。

three.js r.51

从r54开始,不再需要这样做。请参阅WestLangley的评论