我需要得到一个交叉口,使用雷射,只有一个几何顶点,而不是所有的几何形状。我编写了这段代码,但是如果我单击设置的vertice,什么都不会发生。
function onDocumentMouseClick(event) {
event.preventDefault();
mouse2D.x = (event.clientX / window.innerWidth) * 2 - 1;
mouse2D.y = -(event.clientY / window.innerHeight) * 2 + 1;
raycaster = projector.pickingRay(mouse2D.clone(), camera);
var intersects = raycaster.intersectObjects(objects[0].geometry.vertices[0]);// I want intersection only with vertices
if (intersects.length > 0) {
console.log("ok");}
发布于 2014-10-20 00:31:37
首先,您需要将一个对象数组传递给raycaster.intersectObjects
,正如pixelmike
所建议的那样
var intersects = raycaster.intersectObjects([objects[0]])
不能获得交集本身的顶点,但可以获得每个交点的face
:
for ( var i = 0; i < intersects.length; i++ ) {
if ( intersect.face == myTargetFace ) {
console.log( "ok" );
}
}
如果确实希望特定对象只检查与特定人脸子集的交叉点,则可以重写该对象的raycast
方法( la https://github.com/mrdoob/three.js/blob/master/src/objects/Mesh.js#L56-L340 ),以仅搜索这些面。
three.js r68
https://stackoverflow.com/questions/26315184
复制相似问题