Three.js raycaster仅与指定的形状部分相交

时间:2014-10-11 13:26:17

标签: javascript three.js

我需要使用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");}       

1 个答案:

答案 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