mcpField
T
threejs-controls

threejs-controls

github.com/full-stack-skills開発10376 回インストール4 週間前に更新
リポジトリ

threejs-controls について

three.js のコントロールを扱うエージェント向けのリファレンススキルです。公式アドオンの使い方やライフサイクル、操作時の注意点を説明します。

主な機能

  1. 01Orbit、Map、Fly によるカメラ操作
  2. 02Transform、Drag、PointerLock コントロール
  3. 03減衰更新と操作制約
  4. 04Transform と Orbit の操作調整
  5. 05終了時のコントロール破棄

活用シーン

  1. 01減衰付き OrbitControls の設定
  2. 02カメラ距離と極角の制限
  3. 03オブジェクト変形時の OrbitControls 停止
  4. 04PointerLock による一人称移動の実装

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/full-stack-skills/threejs-skills --skill threejs-controls

インストール後、Claude Code で/threejs-controlsを入力して読み込まれたか確認します。

同梱ファイルagents/openai.yamlexamples/workflow-orbit-damping.md

詳細

このスキルを使用するタイミング

ユーザーが次の内容に言及した場合は、必ずこのスキルを使用してください。

  • 対象の周囲を回転/パン/ドリーする操作、慣性/減衰、距離や極角の最小値/最大値
  • マップのようなパン操作(MapControls)や飛行(FlyControls)
  • TransformControls を使った変換ギズモによる移動/回転/スケール変更
  • 平面上でのオブジェクトのドラッグ(DragControls)、ポインターロックによる FPS 操作(PointerLockControls)

重要:controls と webxr の使い分け

コンテキストスキル
デスクトップ/ブラウザーでのカメラ操作threejs-controls
XR コントローラーのポーズthreejs-webxr

トリガーとなるフレーズの例:

  • 「OrbitControls」、「TransformControls」、「MapControls」、「PointerLockControls」
  • 「軌道」、「変換コントローラー」、「ウォークスルー」

このスキルの使用方法

  1. インポート:アドオンのパス(threejs-dev-setup)からインポートします。
  2. 構築:(camera, domElement) を使って構築します。TransformControls の場合は、レンダラーのイベントにもアタッチします。
  3. アニメーションループ:enableDamping が有効な場合は、フレームごとに controls.update() を呼び出します。
  4. TransformControls:dragging-changed を接続して、操作中は Orbit を一時的に無効にします。選択状態は threejs-objects と同期させます。
  5. 制約:視点の反転や地下からの表示を防ぐため、距離や角度の最小値/最大値を設定します。
  6. 破棄:終了処理の際に controls.dispose() を呼び出します。

examples/workflow-orbit-damping.md を参照してください。

ドキュメントマップ(公式)

ドキュメントのセクション代表的なリンク
Controlshttps://threejs.org/docs/OrbitControls.html
Controlshttps://threejs.org/docs/TransformControls.html
Controlshttps://threejs.org/docs/MapControls.html
Controls(インデックス)https://threejs.org/docs/#Controls

対象範囲

  • 対象範囲内: 公式アドオンの controls の使用パターン。
  • 対象範囲外: 完全な物理ベースのキャラクター移動機構、モバイル向けジェスチャーフレームワーク。

よくある落とし穴とベストプラクティス

  • 減衰が有効な状態で update() を呼び忘れると、ドリフトがいつまでも収まりません。
  • TransformControls と Orbit が干渉する場合は、使用中の一方を一時停止します。
  • ポインターロックには、ユーザー操作による開始と解除の処理が必要です。

ドキュメントとバージョン

Controls は three.js docs の Controls(Addons)にあります。API の詳細(enableDamping、イベント)は変更されるため、ユーザーが使用している three.js のバージョンに対応する OrbitControls/TransformControls のページへリンクしてください。

エージェントの回答チェックリスト

このスキルに基づいて回答する場合は、次の点を優先してください。

  1. ドキュメント内の該当する controls クラスにリンクします。
  2. 減衰が有効な場合は、フレームごとに controls.update() を呼び出すことを明記します。
  3. TransformControls を、選択状態/threejs-objects のレイキャスティングと連携させます。
  4. デスクトップでのナビゲーションと threejs-webxr の移動を区別します。
  5. キャンバスのアンマウント時に controls の dispose() を呼び出します。

参考資料

キーワード

英語: orbitcontrols、transformcontrols、mapcontrols、減衰、カメラコントロール、three.js

中国語: OrbitControls、軌道、TransformControls、変換コントローラー、減衰、three.js

コメント