Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Three.js抛出拾取数组_Javascript_Three.js - Fatal编程技术网

Javascript Three.js抛出拾取数组

Javascript Three.js抛出拾取数组,javascript,three.js,Javascript,Three.js,我正在尝试创建一个拾取光线,以查看我在three.js中的3D身体是否已被单击。目前它不起作用,我遵循了这些提示 我目前的代码是: function checkClick() { // On every click, check for body hit clickInfo.x = event.clientX; clickInfo.y = event.clientY;

我正在尝试创建一个拾取光线,以查看我在three.js中的3D身体是否已被单击。目前它不起作用,我遵循了这些提示

我目前的代码是:

function checkClick() {
                // On every click, check for body hit
                clickInfo.x = event.clientX;
                clickInfo.y = event.clientY;

                var x = ( clickInfo.x / window.innerWidth ) * 2 - 1;
                var y = -( clickInfo.y / window.innerHeight ) * 2 + 1;

                var objects = [];
                objects.push(model);
                var raycaster = projector.pickingRay(directionVector.clone(),camera);
                var intersects = raycaster.intersectObjects(scene.children);
                if (intersects.length) {
                     alert("found something");
                }
                else {
                     alert("found nothing");
                }
           }
我现在了解到,projector.pickingRay为我节省了很多工作,因为在上面的第二个链接示例中,用户以前需要单独计算所有这些。但它不起作用。我没有得到任何JS错误,只是“找不到任何东西”消息(intersects数组为空)。我在场景(模型)中有一个单独的对象,我将其添加到对象中,因为我知道raycaster.intersectObjects需要一个数组作为其参数。它仍然不起作用。然后我按照第一个链接示例中的提示使用scene.children。但它总是给出“一无所获”。为什么?我做错了什么


非常感谢您的帮助。

这里有一个链接,指向一个工作示例,当鼠标悬停在3D对象上时,它会改变颜色。也许这段代码可以根据您的需要进行修改


希望有帮助

我在前面已经找到了这个示例,但是简单地复制代码是不起作用的,它仍然使用unprojectVector等方法,这些方法与我到目前为止所学的方法相比已经过时,因为在最新版本中,您应该能够只使用projector.pickingRay(directionVector.clone(),camera);它应该会起作用。但事实并非如此!请发布一个完整代码的实例链接,以便更容易地找出问题所在。@Lee Stemkoski:我想上传一个实例,但我不能,因为我不知道有哪家免费主机允许使用.obj文件。如果你能告诉我一个,我可以上传一个活生生的例子!@李·斯特姆科斯基:我可以在那里上传body.obj,是的,但我不能在在线直播的例子中使用它。当在某个地方的freehoster上托管test.html并在加载程序代码中添加dropbox/mylink/body.obj时,出于安全原因,它不会允许我这样做。我无法在dropbox上上传完整的html代码,因为它不会让它像apache服务器一样运行。