2012-10-08 78 views
0

我在拾取实施时遇到问题。我发现了许多不同的示例正在做我想做的事情,但我确实无法按照它应有的工作。我主要遵循this exampleThree.js拣配对于自定义几何图形无法正常工作

基本上,我在我的场景中有一些网格,并双击其中的任何一个,我想要改变所选的颜色。在场景中,总有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

ray.intersectObject(),这是由称为ray.intersectObjects(),需要面的质心。

mesh.geometry.computeCentroids(); 

这对于创建自己的自定义几何图形非常重要。

three.js r.51

+0

非常感谢,现在它的工作完美。 – aleGrazioli

+0

mesh.geometry.computeCentroids(),我应该在哪写这段代码?同时创建几何图形或投射光线? 我的锥体自定义几何体:http://jsfiddle.net/suvKg/12/请帮助我 –

+1

@webGLnoobie ...创建几何体时...但是,three.js r.54现在使用'Raycaster',并且它不再需要脸部质心。 – WestLangley

相关问题