7

我使用 OBJLoader 加载了模型,这里是加载 obj 文件的代码:

        var loader = new THREE.OBJLoader();
        loader.load('obj/teeth/teeth4_5.obj', function(object) {
            model = object;
            scene.add( model );
            objects.push( model );
        });

我正在尝试使用 raycaster 来找到交叉点。我在three.js 中实现了canvas_interactive_cubes 示例(http://mrdoob.github.io/three.js/examples/canvas_interactive_cubes.html)中的代码。这是找到交点的代码:

    function onDocumentMouseDown( event ){
        event.preventDefault();
        var mouseX = (event.clientX / window.innerWidth)*2-1;
        var mouseY = -(event.clientY /window.innerHeight)*2+1;
        var vector = new THREE.Vector3( mouseX, mouseY, 0.5 );
        projector.unprojectVector( vector, camera );
        var raycaster = new THREE.Raycaster( camera.position, vector.sub( camera.position ).normalize() );
        var intersects = raycaster.intersectObjects( scene.children );
        console.log( intersects[0].point);
    }

不幸的是,我无法获得交叉点的 x、y、z 坐标,无论我在哪里点击,它总是显示“TypeError:intersects[0] is undefined”。

我被困在这里好几天了。有人能告诉我一种在加载的 obj 文件上获取交集的方法吗?我感谢您的帮助。

4

1 回答 1

10

尝试像这样添加递归标志:

var intersects = raycaster.intersectObjects( objects, true );

三.js r.58

于 2013-04-23T03:32:27.943 回答