Three.js で始めるマウスでグリグリ

Three.js で描画された3D空間を、マウスでグリグリ操作するための記事です。

これで、自由に3D空間を見渡す事ができますよ。

なんと!
そんな機能はすでにThree.js の方で用意されているのだ。

OrbitControls というもので、
カメラから生成しておくだけで、もう充分使えるようになっている。

Three.js の便利コントローラ

カメラ操作のような視点を変えるのだけじゃなく、
3Dオブジェクトを選択して、自由にドラッグしたりするコントローラも用意されている。

以下のようなものが用意されている。

  • TrackballControls (トラックボールでの操作)
  • OrthographicTrackballControls
  • FlyControls (カーソルキーによる浮遊した操作ができる)
  • OrbitControls (マウスドラッグに追従する)
  • PointerLockControls (マウスを非表示にして、マウス動きに追従する)
  • FirstPersonControls (FPS視点でポインタしたところに向く)
  • DragControls (オブジェクトをマウスドラッグする)
  • TransformControls (オブジェクトを平行移動、回転、スケールする)

インポートして使うだけ

今回使いたかったのは、OrbitControlsというもの。

new THREE.OrbitControls(camera) とするだけでよい。

…と思ってたけど、TypeScriptを使っているせいか、
インポートがうまくできない。涙
(余計なところでつまづいた。)

THREE.OrbitControls is not a constructor

THREE is not defined

そもそも、import, from, export とか、TypeScriptの動作をよくわかっていない。
ちゃんと勉強しなくては。。。

こうしたらうまくいった。

three.js の exsamples にorbitcontrolsが同梱されているんだが、
うまくインポートする事が出来なかった。

結局、npm で three-orbitcontrols というパッケージになっているのをインストールする。

npm install --save three-orbitcontrols

import文もうまくいかなかったので、結局require文を使って取り込んだ。

// three.js のインポート
let THREE = require("three");

// OrbitControls用のインポート
let OrbitControls = require("three-orbitcontrols");


// カメラからコントローラを生成するだけ。
let controls = new OrbitControls(camera);

これだけで、マウス操作によってカメラが自由に操作できる。

ふぅ〜

1件のコメント

コメントを残す