我需要使用raycaster只使用几何体的顶点而不是所有几何体形状来获得交叉点。我写了这段代码,但如果我点击顶点设置就没有任何意义。
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");}
答案 0 :(得分:2)
首先,您需要按照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