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 )の配列では機能しますが、 では機能THREE.ParticleしませんparticleSystem

での使用例については、この例CanvasRendererを参照してください。

WebGLRenderer`THREE.Particle. はサポートしていません。

また、Raycaster.jsそれがどのように機能するかを理解するために見てください。

three.js r.54

于 2013-01-09T16:51:15.643 に答える