我在选择实施时遇到问题。我发现了许多不同的例子正在做我想要的,但我真的不能让它按照它应该的方式工作。我主要关注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 );
}
答案 0 :(得分:1)
ray.intersectObject()
调用的 ray.intersectObjects()
需要面部质心。
mesh.geometry.computeCentroids();
如果要创建自己的自定义几何图形,这很重要。
three.js r.51
从r54开始,不再需要这样做。请参阅WestLangley的评论