js Raycaster没有与我的自定义网格相交

Three.js Raycaster not intersecting my custom mesh

本文关键字:自定义 网格 我的 Raycaster js      更新时间:2023-09-26

我是Three.js的新手。Raycaster可以找到导入的对象,但当我创建自定义网格时,它不起作用,如下所示:

        var geom = new THREE.Geometry(); 
        var v1 = new THREE.Vector3(0,0,0);
        var v2 = new THREE.Vector3(0,500,0);
        var v3 = new THREE.Vector3(-400,-500,50);
        geom.vertices.push(v1);
        geom.vertices.push(v2);
        geom.vertices.push(v3);
        geom.faces.push( new THREE.Face3( 0, 1, 2 ) );
        geom.computeFaceNormals();
        meshFrame = new THREE.Mesh( geom, new THREE.MeshNormalMaterial() );
        meshFrame.position.z = 20;
        meshFrame.rotation.y = 0;
        meshFrame.verticesNeedUpdate = true;
        scene.add(meshFrame);   

你认为问题可能是什么?射线在三角形中经过,但仍然相交对象返回空。这里,我的光线投射代码:

        var ever = bver.clone();
        ever.setComponent(2,ever.z+150);
        var geometryF = new THREE.Geometry();
        geometryF.vertices.push(
            bver,
            ever
        );
        var bray = new THREE.Ray(bver, new THREE.Vector3(0 ,0, 0));
        bray.lookAt(ever);
        var raycaster = new THREE.Raycaster();
        raycaster.set( bray.origin, bray.direction);            
        var intersects = raycaster.intersectObjects( [meshFrame] );
        var x = [scene.getObjectByName( "meshFrame" )];
        print(meshFrame.geometry.vertices);
        console.log(intersects);
        var lineF = new THREE.Line( geometryF, materialF );
        scene.add( lineF ); 

非常感谢您的帮助

好的,我解决了这个问题。显然是脸的朝向出了问题。当我把它倒过来的时候,它开始工作了