3

我试图检测鼠标何时悬停在我的粒子系统中的粒子上。我正在做的检测是这样的,并且在每一帧上运行:

function check_intersections() {
    var vect = new THREE.Vector3(
         mouse.x,
         mouse.y,
        0.5
    );
    projectr.unprojectVector( vect, camera );

     var raycaster = new THREE.Ray( camera.position, vect.subSelf( camera.position ).normalize() );
     var intersects = raycaster.intersectObjects( particleSystem ); 

    if ( intersects.length > 0 ) {

        //intersects[ 0 ].object.materials[ 0 ].color.setHex( Math.random() * 0xffffff );
        noticeDiv.text('Intersection');

    }
}`

varparticleSystem 是我的粒子系统,其中包含数千个粒子,鼠标在移动时定义为:

function onDocumentMouseMove( event ) {  
    // update the mouse variable
    mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
    mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
}

我看过几个例子,但似乎无法正确理解这一点。

4

1 回答 1

3

Raycaster.intersectObjects( objects )适用于 s 的数组THREE.Particle,但不适用于 a particleSystem

有关它在 中的使用示例CanvasRenderer,请参见此示例

WebGLRenderer不支持`THREE.Particle。

另外,请看一下,Raycaster.js以便您了解它是如何工作的。

三.js r.54

于 2013-01-09T16:51:15.643 回答