JSXコンポーネントを使い、宣言的に3Dシーンを構築できるThree.js向けReactレンダラーです。
yomotsu/camera-controls
OrbitControls風の操作に滑らかな遷移などの機能を加える、three.js向けカメラ制御ライブラリ。
- スター
- 2,446
- フォーク
- 300
- 未解決の Issue
- 104
- 最終コミット
- 17 日前
これは何?
camera-controlsは、THREE.OrbitControlsと同様の操作感で、カメラのオービット回転、ドリー、トラック(パン)を制御するTypeScriptライブラリです。主な特徴はアニメーション付きの遷移です。setLookAt、fitToBox、rotateToなどを呼び出すとカメラを時間をかけて滑らかに移動でき、これらのメソッドはPromiseを返すため、awaitで遷移を連結できます。
マウスやタッチによる基本的なオービット操作にとどまらず、メッシュとの衝突検出、境界制限、焦点オフセット、一人称視点やポインターロック形式の移動、自動回転、正投影カメラ、マウスとタッチのボタン割り当て設定に対応しています。また、restやsleepなどのイベントも発行されるため、カメラの移動停止に応じてアプリケーション側で処理できます。
インスタンスを作成する前に、CameraControls.installでthree.jsのオブジェクトを渡す必要があります。また、レンダーループ内でupdateメソッドを呼び出してください。多くの機能を試せるインタラクティブなサンプルが、プロジェクトのドキュメントサイトに用意されています。
主な機能
- 01setLookAt、fitToBox、rotateToなどのメソッドで、Promiseに対応した滑らかなアニメーション遷移を実現。
- 02マウスとタッチの割り当てを設定できる、オービット、ドリー、トラック操作。
- 03メッシュとの衝突検出と、カメラのターゲットに対する境界制限。
- 04透視投影カメラと正投影カメラに対応。
- 05restやsleepなどのイベントにより、移動の停止に応じた処理が可能。
ユースケース
- 特定の視点へ移動したり、画面内にオブジェクト全体を収めたりできる、インタラクティブな3D製品ビューアの構築。
- awaitで連結できる、カメラツアーやスクリプト制御のシネマティックシーケンスの追加。
- 衝突判定を備えた、three.jsシーン内での一人称視点または三人称視点のナビゲーションの作成。
クイックスタート
- 1
camera-controls が必要とする three.js をインストールします。README にはどちらのパッケージについてもインストールコマンドが記載されていません
- 2
インスタンスを作成する前に、ライブラリをインポートし、CameraControls.install に THREE を登録します
- 3
カメラと DOM 要素を指定して CameraControls インスタンスを作成し、アニメーションループ内で update(delta) を呼び出します
使う前に知っておきたいこと
- three.js を別途インストールし、CameraControls.install で登録する必要があります。そうしないと実行時エラーが発生します。
- 衝突判定では毎フレーム raycaster を使用するため、colliderMeshes を使うとパフォーマンスが低下する場合があります。
トピック
よくある質問
- camera-controls とは?
- OrbitControls風の操作に滑らかな遷移などの機能を加える、three.js向けカメラ制御ライブラリ。 camera-controlsは、THREE.OrbitControlsと同様の操作感で、カメラのオービット回転、ドリー、トラック(パン)を制御するTypeScriptライブラリです。主な特徴はアニメーション付きの遷移です。setLookAt、fitToBox、rotateToなどを呼び出すとカメラを時間をかけて滑らかに移動でき、これらのメソッドはPromiseを返すため、awaitで遷移を連結できます。
- camera-controls は無料で使えますか?ライセンスは?
- camera-controls は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- camera-controls は今もメンテナンスされていますか?
- 活発にメンテナンス中。camera-controls の最終コミットは 2026年10月21日 です。
- camera-controls は何に使えますか?
- 特定の視点へ移動したり、画面内にオブジェクト全体を収めたりできる、インタラクティブな3D製品ビューアの構築。 awaitで連結できる、カメラツアーやスクリプト制御のシネマティックシーケンスの追加。 衝突判定を備えた、three.jsシーン内での一人称視点または三人称視点のナビゲーションの作成。
- camera-controls のインストール方法は?
- camera-controls が必要とする three.js をインストールします。README にはどちらのパッケージについてもインストールコマンドが記載されていません インスタンスを作成する前に、ライブラリをインポートし、CameraControls.install に THREE を登録します カメラと DOM 要素を指定して CameraControls インスタンスを作成し、アニメーションループ内で update(delta) を呼び出します
- camera-controls はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/yomotsu/camera-controls
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
TypeScriptとThree.jsで63種の昆虫をモデルファイルなしで手続き的に生成する、ブラウザ上のインタラクティブな3D図鑑。
シーンのブロッキング、キャラクターのポージング、カメラワークの編集を行い、AI動画モデルにショットを送れるブラウザベースのプリビズスタジオ。
three.jsを使った3D・スクロール連動Webサイトの構築、アニメーション、検証をコーディングエージェントに教える8つのスキル。
Three.jsとReactで作られた、ブラウザで遊べる3Dテトリスゲーム。
react-three-fiberで3Dシーンを構築するための、すぐに使えるReact用ヘルパーコンポーネントとフックのコレクションです。