相关疑难解决方法(0)

通过添加div,THREE.js Ray Intersect失败

当页面上只有一个目标div(包含renderer.domElement)时,我的Three.js脚本运行正常.只要我在目标div上方添加另一个固定高度和宽度的div,ray.intersectObjects就会返回null.我怀疑我为光线创建的矢量是否会导致问题.这是代码.

var vector = new THREE.Vector3( ( event.clientX / divWidth ) * 2 - 1, -( event.clientY / divHeight ) * 2 + 1, 0.5 );

projector.unprojectVector( vector, camera );

var ray = new THREE.Ray( camera.position, vector.subSelf( camera.position ).normalize() );

var intersects = ray.intersectObjects( myObjects, true );
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题的任何想法.

编辑:现在是THREE.Raycaster (three.js r.56)

html javascript three.js

16
推荐指数
2
解决办法
1万
查看次数

Three.js - raycaster.intersectObjects 问题

我有一个带有球体的 3D 散点图来表示点,我试图在单击时显示点的信息。基于对 SO 上几个不同问题的回答,我认为我走在正确的轨道上。这是我的 onCanvasMouseDown:

        event.preventDefault();
        mouse.x = ( (event.clientX - renderer.domElement.offsetLeft) / renderer.domElement.width ) * 2 - 1;
        mouse.y = - ( (event.clientY - renderer.domElement.offsetTop) / renderer.domElement.height ) * 2 + 1;
        mouse.z = 0.5;

        projector.unprojectVector( mouse, camera);
        raycaster.setFromCamera( mouse, camera);

        var intersects = raycaster.intersectObjects( scene.children );

        if( intersects.length > 0 ) {
            intersects.map(function(d) {
                if(d.object.name === "sphere") {
                           //etc...
                }
            })

        }
Run Code Online (Sandbox Code Playgroud)

但相交不断返回空。我感觉问题与我设置鼠标坐标的方式有关,但我不确定如何解决该问题。

编辑:如果我旋转绘图以便我从上方查看它,我似乎能够找到一个球体(但无论旋转如何,我都需要能够检测到它)。这是否表明任何具体的事情?

javascript three.js

2
推荐指数
1
解决办法
6877
查看次数

标签 统计

javascript ×2

three.js ×2

html ×1