🤳

【Three.js】オブジェクトを画面固定(カメラ固定)にする

2022/07/05に公開

概要

こんにちは、株式会社palanのxR事業部でWebAR/VRの開発などしていますdamiと申します。
この記事ではThree.jsでオブジェクトを画面固定(カメラ固定) にしたい場合の方法を書きます。
通常のThree.jsではあまり必要ないかもですが、DeviceOrientationControlsを使用するWebAR/VR空間を作る際に、常に画面に表示したいものがある場合には活用できます。

解決策

通常、オブジェクトはシーンに追加しますが、その代わりにカメラオブジェクトに追加する(カメラの子要素とする) と常に画面固定にすることができます。

// positionはカメラに対するlocal座標を入れます
this.object.position.set(0, 0, -5);
// camera.add() します
this.camera.add(this.object);

ちなみにこの方法では、カメラオブジェクトを明示的にシーンに追加する必要がありますのでご注意ください。

this.scene.add(this.camera);

これで完了。

余談 - A-Frameでの画面固定

Three.jsを継承しているライブラリ「A-Frame」でも同じように<a-entity camera>の子要素にオブジェクトを入れると画面固定にできます。

Discussion