0

Ciao、私はこれを達成しようとしています: シーンでどの 3D オブジェクトがダブルクリックされたかを知ることができ、カメラの位置をアニメートしてオブジェクトを画面の中央に持ってくることができます。

レイキャスターとプロジェクターを使用するインタラクティブなキューブの例を適応させようとしましたが、成功しませんでした...

http://www.gioblu.com/Gio/web/solarsystem/index_backup

ご覧のとおり、マウスの左右ボタンで空間内をナビゲートし、カメラの位置を変更できます。惑星をダブルクリックすると、最初のカメラ位置 (画面中央の地球) に戻ることができます。

4

1 に答える 1

0

例を適応させて成功しなかったのはなぜですか? どのようなエラーが発生していますか? この例のことですか?レイキャスターとプロジェクターはあなたが探している方法です。

まず、コンテナの ondblclick イベントの eventListener が必要です。イベント関数では、リンクされた例からコピーして貼り付けることができます:

1) マウス座標の保存

mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;

2) カメラを介して座標をワールド システムに投影し、光線を作成します。

var vector = new THREE.Vector3( mouse.x, mouse.y, 1 );
projector.unprojectVector( vector, camera );
raycaster.set( camera.position, vector.sub( camera.position ).normalize() );

3) ダブルクリックした要素があなたの惑星かどうかを確認します

var intersects = raycaster.intersectObject( "your_planet" );
if ( intersects.length > 0 ) {
    reset your camera
}

お役に立てれば!

于 2013-08-01T09:04:55.907 に答える