threejs-math について
threejs-mathは、three.jsの数学型と空間クエリに関する回答を支援するエージェント向けスキルです。基本数学、ピッキング、アニメーションの扱いを区別し、関連ドキュメントや実践方法を案内します。
主な機能
- 01ベクトル、行列、四元数の案内
- 02境界ボリュームと交差判定
- 03レイ、平面、フラスタムのクエリ案内
- 04アドオンの数学構造への案内
活用シーン
- 01ローカルとワールド変換の検討
- 02オブジェクトの境界と包含確認
- 03レイとジオメトリの交差テスト
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ full-stack-skills/ threejs-skills --skill threejs-mathインストール後、Claude Code で/threejs-mathを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yamlexamples/workflow-ray-aabb.md
詳細
このスキルを使用するタイミング
ユーザーが次の内容に言及した場合は、必ずこのスキルを使用してください:
- ベクトル/行列の演算順序、
applyQuaternion、lookAt、ワールド変換とローカル変換の違い - 境界ボリューム
Box3/Sphere、包含判定/交差判定 - (ピッキング処理全体を伴わない)
RayとPlaneとFrustumの判定
重要:数学とオブジェクトとアニメーションの違い
| 必要なもの | スキル |
|---|---|
| 数学の基本型 | threejs-math |
Raycaster とレイヤーを使ったピッキング | threejs-objects |
| QuaternionKeyframeTrack の再生 | threejs-animation |
トリガーとなる語句:
- 「Vector3」、「Matrix4」、「Quaternion」、「Box3」、「Ray」、「Frustum」
- 「ベクトル」、「行列」、「クォータニオン」、「境界ボックス」
このスキルの使用方法
- 規約:three.js の例に従い、ベクトルには左から行列を乗算します。ワールド空間でクエリを行う前に
updateMatrixWorldを呼び出してください(threejs-objects)。 - 境界:大まかな境界には
Box3().setFromObject(object)を使用し、必要に応じて詳細化します。 - 衝突に関する判定:ドキュメントに従い、
ray.intersectBox、sphere.containsPointなどを使用します。 - アドオンの構造体:ゲームでは
Octree/OBBを使用します。アドオンのページを参照し、ここに API の表全体をコピーするのは避けてください。 - 色:
Colorの変換はマテリアル/テクスチャに関連するため、相互にリンクしてください。 - ランダムサンプリング:メッシュ上に点を分布させるには
MeshSurfaceSamplerを使用します。
examples/workflow-ray-aabb.md を参照してください。
ドキュメントマップ(公式)
| ドキュメントのセクション | 代表的なリンク |
|---|---|
| 数学 | https://threejs.org/docs/Vector3.html |
| 数学 | https://threejs.org/docs/Matrix4.html |
| 数学 | https://threejs.org/docs/Quaternion.html |
| 数学 | https://threejs.org/docs/Ray.html |
対象範囲
- 対象範囲内: コアの数学型。アドオンの数学関連項目は参照先として扱います。
- 対象範囲外: 型の参照を超えるキーフレームトラックの評価(アニメーションスキル)。
よくある落とし穴とベストプラクティス
- オイラー角のジンバルロック:任意の回転にはクォータニオンを優先してください。
- 一時的なベクトルを再利用すると、頻繁に実行されるループでの GC の負荷を軽減できます。
- フラスタムカリングのヘルパーは実装によって異なります。使用中の three のバージョンで確認してください。
ドキュメントとバージョン
コアの数学型は Math に記載されています。アドオンのユーティリティ(Octree、OBB、…)は three.js のドキュメント の Addons → Math にあります。Global には、マテリアルと併せて必要になることがある定数(例:ラッピング、ブレンディング)も記載されています。
エージェントの回答チェックリスト
このスキルを使用して回答する際は、次の点を優先してください:
- ドキュメントから具体的な型(
Vector3、Matrix4、Quaternion、…)へのリンクを記載します。 - 時間サンプルに基づく
AnimationMixer/トラックの数学処理は threejs-animation に案内します。 - インタラクションが目的の場合、
Raycasterを使ったピッキングの流れは threejs-objects に案内します。 - 比較が重要な箇所では、数値安定性(イプシロン)に触れます。
- ユーザーが空間アクセラレーションを必要としている場合、ゲーム向けの構造体について Addons → Math を案内します。
参考資料
- https://threejs.org/docs/#Math
- https://threejs.org/docs/MathUtils.html
- https://threejs.org/docs/Ray.html
キーワード
英語: ベクトル、行列、クォータニオン、オイラー角、box3、sphere、ray、frustum、three.js
中国語: ベクトル、行列、クォータニオン、オイラー角、境界ボックス、レイ、three.js
コメント
Markdown 対応