我们可以通过点击删除Arrow Helper对象吗?

时间:2013-10-11 10:09:57

标签: three.js

我知道我们可以通过scene.__removeObject()移除任何对象 所以我使用raycaster删除屏幕中的任何对象。当我点击某个对象时intersects.length变为> 0并且scene.__removeObject(SELECTED)被执行。但是,如果点击Arrowhelper对象(比如ARROWintersects.length仍然为零。

所以我如何从GUI中删除Arrow助手。在代码中我知道scene.__removeObject(ARROW)有效

function onDocumentMouseDown( event ) {

        event.preventDefault();

        var vector = new THREE.Vector3( mouse.x, mouse.y, 0.5 );
        projector.unprojectVector( vector, camera );

        var raycaster = new THREE.Raycaster( camera.position, vector.sub( camera.position ).normalize() );

        var intersects = raycaster.intersectObjects( objects );

        if ( intersects.length > 0 ) {

            controls.enabled = false;

            SELECTED = intersects[ 0 ].object;
           scene.__removeObject(SELECTED)
           // scene.__removeObject(ARROW)


        }

    }

1 个答案:

答案 0 :(得分:0)

你的问题实际上是关于交叉点,对吗?

ArrowHelper由两个网格.cone.line组成,所以它应该像其他对象一样可以交叉。

请记住,Raycaster只会与objects变量中的对象相交。

我为您的问题找到两种解决方案:

  • 确保objects变量包含帮助者的.cone.line或两者。
  • objectsobjects.push(ARROW))中添加整个帮助者,但您必须致电intersectObjects recursively

    raycaster.intersectObjects(objects,true);