three.jsでマウスクリックポイントの3D座標を取得します

GuRAm

私はTHREE.jsを初めて使用します。

Canvasでオブジェクト(単純なオブジェクトではない:Box、Sphere、..)をマウスでクリックしたときにポイントの3D座標を取得しようとしています。

詳細には、3Dオブジェクトビューアを使用しています-シーンにカメラ(THREE.PerspectiveCamera)、マウスコントロール(回転、ズーム、移動)、オブジェクトの追加/削除(自分のオブジェクト、THREE.jsのローダーを使用してロード)があります、..そして、クリックしたポイントの3D座標を3Dで取得する関数を追加したいと思います。

正確には、光線の終点の座標が必要です。camera_near_windowでのマウスクリックから始まり、オブジェクトの点で終わり、クリックしました。

私はそれを行うために多くの方法を試しました:

誰かが3Dでオブジェクトをクリックしたクリックポイントの3Dポイント座標を取得するデモコードを見せてもらえますか?

GuRAm

したがって、この質問は誰かに役立つと思うので、自分で答えます(解決策を書きます)。

var renderer, canvas, canvasPosition, camera, scene, rayCaster,  mousePosition;

function init() {
    renderer = new THREE.WebGLRenderer({ antialias: false });
    canvas = renderer.domElement;
    canvasPosition = $(canvas).position();
    camera = new THREE.PerspectiveCamera(20, $(canvas).width() / $(canvas).height(), 0.01, 1e10);
    scene = new THREE.Scene();
    rayCaster = new THREE.Raycaster();
    mousePosition = new THREE.Vector2();

    scene.add(camera);

    var myObjects = new THREE.Object3D();
    // myObjects.add( your object );
    // myObjects.add( your object );
    // myObjects.add( your object );
    myObjects.name = 'MyObj_s';
    scene.add(myObjects);
};

function getClicked3DPoint(evt) {
    evt.preventDefault();

    mousePosition.x = ((evt.clientX - canvasPosition.left) / canvas.width) * 2 - 1;
    mousePosition.y = -((evt.clientY - canvasPosition.top) / canvas.height) * 2 + 1;

    rayCaster.setFromCamera(mousePosition, camera);
    var intersects = rayCaster.intersectObjects(scene.getObjectByName('MyObj_s').children, true);

    if (intersects.length > 0)
        return intersects[0].point;
};

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Three.jsでのジョイスティック、ゲームパッド、または3Dマウスのサポート

分類Dev

bufferGeometryを使用して、THREE.jsポイントオブジェクトの頂点の画面座標を取得します

分類Dev

THREE.jsで3Dバウンディングボックスを描画します

分類Dev

マウスの位置を使用して3D空間でオブジェクトを選択します(THREE.js R99)

分類Dev

オブジェクト面Three.jsからテクスチャマップ座標を取得する

分類Dev

Three.jsで3Dオブジェクトをリンクする

分類Dev

THREE.jsWebGLRendererキャンバスは「クリック」マウスイベントを消費します

分類Dev

3Dベクトルから2Dピクセル位置に変換し、z座標を解釈するTHREE.js

分類Dev

ボタンクリックで3Dオブジェクトを回転Three.js

分類Dev

Three.js-アイルランドの3Dモデルを特定の場所でクリックできるようにしたい

分類Dev

Three.jsの3Dポイントから3Dサーフェスを作成するにはどうすればよいですか?

分類Dev

three.jsのライトでマウスの位置を追跡します

分類Dev

THREE.jsはMouseClickからGridHelper座標を取得します

分類Dev

THREE.jsが.mtlで.objをレンダリングしない-THREE.jsのファイルをエクスポートする

分類Dev

Three.js:マウスを使用してラインオブジェクトを選択します

分類Dev

Three.js:テクスチャの追加やマウスの移動などのいくつかの場合にのみWebGLで3Dオブジェクトを更新できますか?

分類Dev

ドラッグして、Three.jsシーンの3Dモデルオブジェクトの位置を変更します

分類Dev

(THREE.mesh)3Dオブジェクトを、すでに軸を中心に回転している別のオブジェクトの周りで回転させようとしています。ポインターはありますか?

分類Dev

Three.jsは、マウスなしでカメラ付きのオブジェクトを選択します

分類Dev

特定のバウンディングボックスthree.js内に収まるようにオブジェクトをスケーリングします

分類Dev

three.min.js:2 THREE.Object3D.add:オブジェクトはTHREE.Object3Dのインスタンスではありません

分類Dev

three.min.js:2 THREE.Object3D.add:オブジェクトはTHREE.Object3Dのインスタンスではありません

分類Dev

3D空間でヒートマップの3つのスライスを視覚化するThree.js

分類Dev

three.jsの3Dオブジェクトに透明なカラーマスクを配置するにはどうすればよいですか?

分類Dev

three.jsでオブジェクトのサイズを変更する/ Autodesk 3D Viewer(Autodesk Forge Viewer)

分類Dev

Three.jsは、直交カメラを使用して2Dを3Dにマッピングします

分類Dev

THREE.Points オブジェクトでクリックされた特定のポイントを取得するにはどうすればよいですか?

分類Dev

JavaScript-BufferGeometryを使用したObject3DのThree.js計算バウンディングボックス

分類Dev

three.jsで3X3マトリックスを使用して回転させる方法

Related 関連記事

  1. 1

    Three.jsでのジョイスティック、ゲームパッド、または3Dマウスのサポート

  2. 2

    bufferGeometryを使用して、THREE.jsポイントオブジェクトの頂点の画面座標を取得します

  3. 3

    THREE.jsで3Dバウンディングボックスを描画します

  4. 4

    マウスの位置を使用して3D空間でオブジェクトを選択します(THREE.js R99)

  5. 5

    オブジェクト面Three.jsからテクスチャマップ座標を取得する

  6. 6

    Three.jsで3Dオブジェクトをリンクする

  7. 7

    THREE.jsWebGLRendererキャンバスは「クリック」マウスイベントを消費します

  8. 8

    3Dベクトルから2Dピクセル位置に変換し、z座標を解釈するTHREE.js

  9. 9

    ボタンクリックで3Dオブジェクトを回転Three.js

  10. 10

    Three.js-アイルランドの3Dモデルを特定の場所でクリックできるようにしたい

  11. 11

    Three.jsの3Dポイントから3Dサーフェスを作成するにはどうすればよいですか?

  12. 12

    three.jsのライトでマウスの位置を追跡します

  13. 13

    THREE.jsはMouseClickからGridHelper座標を取得します

  14. 14

    THREE.jsが.mtlで.objをレンダリングしない-THREE.jsのファイルをエクスポートする

  15. 15

    Three.js:マウスを使用してラインオブジェクトを選択します

  16. 16

    Three.js:テクスチャの追加やマウスの移動などのいくつかの場合にのみWebGLで3Dオブジェクトを更新できますか?

  17. 17

    ドラッグして、Three.jsシーンの3Dモデルオブジェクトの位置を変更します

  18. 18

    (THREE.mesh)3Dオブジェクトを、すでに軸を中心に回転している別のオブジェクトの周りで回転させようとしています。ポインターはありますか?

  19. 19

    Three.jsは、マウスなしでカメラ付きのオブジェクトを選択します

  20. 20

    特定のバウンディングボックスthree.js内に収まるようにオブジェクトをスケーリングします

  21. 21

    three.min.js:2 THREE.Object3D.add:オブジェクトはTHREE.Object3Dのインスタンスではありません

  22. 22

    three.min.js:2 THREE.Object3D.add:オブジェクトはTHREE.Object3Dのインスタンスではありません

  23. 23

    3D空間でヒートマップの3つのスライスを視覚化するThree.js

  24. 24

    three.jsの3Dオブジェクトに透明なカラーマスクを配置するにはどうすればよいですか?

  25. 25

    three.jsでオブジェクトのサイズを変更する/ Autodesk 3D Viewer(Autodesk Forge Viewer)

  26. 26

    Three.jsは、直交カメラを使用して2Dを3Dにマッピングします

  27. 27

    THREE.Points オブジェクトでクリックされた特定のポイントを取得するにはどうすればよいですか?

  28. 28

    JavaScript-BufferGeometryを使用したObject3DのThree.js計算バウンディングボックス

  29. 29

    three.jsで3X3マトリックスを使用して回転させる方法

ホットタグ

アーカイブ