質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Three.js

Three.jsはWebGLをサポートしているJavaScriptの3D描画用ライブラリです。

Q&A

解決済

1回答

810閲覧

threejs orbitcontrol canvas以外はマウススクロールを反応させない

cheche0830

総合スコア187

Three.js

Three.jsはWebGLをサポートしているJavaScriptの3D描画用ライブラリです。

0グッド

0クリップ

投稿2018/07/23 12:31

var width = window.innerWidth; var height = window.innerHeight; var side = Math.min(width, height) / 30; var scene; var camera; var renderer; var mesh; var controls; function init() { scene = new THREE.Scene(); camera = new THREE.PerspectiveCamera(30, width / height, 1, 1000); renderer = createRenderer(width, height); mesh = createMesh(side); camera.position.z = 70; camera.position.x = 70; camera.position.y = 70; scene.add(mesh); controls = new THREE.OrbitControls(camera); controls.autoRotate = true; update(); } function createRenderer(width, height) { var renderer = new THREE.WebGLRenderer(); renderer.setSize(width, height); document.getElementById("test").appendChild(renderer.domElement); return renderer; } function createMesh(radius) { var path = "https://hoge.com/img/"; var l1 = new THREE.TextureLoader().load(path+"texture4.png"); var l2 = new THREE.TextureLoader().load(path+"texture4.png"); var l3 = new THREE.TextureLoader().load(path+"texture3.png"); var l4 = new THREE.TextureLoader().load(path+"texture1.png"); var l5 = new THREE.TextureLoader().load(path+"texture0.png"); var l6 = new THREE.TextureLoader().load(path+"texture2.png"); var cubeGeometry = new THREE.CubeGeometry(49, 18, 38,5,5,5); var texture1 = new THREE.MeshBasicMaterial({ map: l1});//右横 var texture2 = new THREE.MeshBasicMaterial({ map: l2});//左横 var texture3 = new THREE.MeshBasicMaterial({ map: l3});//上 var texture4 = new THREE.MeshBasicMaterial({ map: l4});//下 var texture5 = new THREE.MeshBasicMaterial({ map: l5});//手前 var texture6 = new THREE.MeshBasicMaterial({ map: l6});//奥 var material = new THREE.MultiMaterial([texture1, texture2, texture3, texture4, texture5, texture6]); var mesh = new THREE.Mesh(cubeGeometry, material); return mesh; } function update() { controls.update(); requestAnimationFrame(update); renderer.render(scene, camera); } window.addEventListener('DOMContentLoaded', init);

こんな感じでボックスにテクスチャをはり回転させたりズームインアウトできたりするようにしているのですが
div=test 以外のbody領域でもマウススクロール等が反応してしまいます。
マウスカーソルがtestないだけで反応するようにするにはどうすればよいでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

同じような問題に直面していました。
公式ドキュメントを見たところ、THREE.Orbitcontrols(camera, domElement) というように引数をとるようです。
私の場合はdomElementにid="test"を持つ要素を指定したらうまくいったので、
let ele = document.getElementById("test").appendChild(renderer.domElement)
として、eleを引数に取ると良いのではないかと思います。

投稿2018/10/08 10:00

univmotokazu

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問