mcpField
P
physics-rendering-expert

physics-rendering-expert

github.com/curiositech開発257188 回インストール2 日前に更新
リポジトリ

physics-rendering-expert について

physics-rendering-expertは、リアルタイム物理シミュレーションを開発する人向けのスキルで、ロープの力学と拘束ソルバーを扱います。PBD、積分法、回転表現の選択や、実装時の注意点を案内します。

主な機能

  1. 01ロープ・ケーブルの力学
  2. 02PBD拘束ソルバー
  3. 03Gauss-SeidelとJacobiの選択
  4. 04Verlet積分の指針
  5. 05クォータニオンと双対クォータニオン

活用シーン

  1. 01リアルタイムのロープやチェーンの実装
  2. 02粒子システムの積分法選定
  3. 03複数ロープの絡まり検出
  4. 04布シミュレーション向け並列ソルバーの選定

インストール

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

$npx skills add https://github.com/curiositech/some_claude_skills --skill physics-rendering-expert

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

CHANGELOG.md
.claude-plugin/
plugin.json
references/
tangle-physics.md
implementations.md
knot-garden-physics.md
core-algorithms.md

詳細

物理・レンダリングの専門知識:ロープのダイナミクスと拘束ソルバー

リアルタイムのロープ/ケーブルのダイナミクス、拘束ソルバー、物理ベースのシミュレーションに関する計算物理学の専門知識です。

このスキルを使用する場面

次の用途に使用します:

  • リアルタイムのロープ/ケーブル/チェーンのシミュレーション(リード、クライミングロープ)
  • Position-Based Dynamics(PBD)の実装
  • 拘束ソルバー(Gauss-Seidel、Jacobi)
  • クォータニオン/双対クォータニオンの回転計算
  • 粒子システムのためのVerlet積分
  • 絡まりの検出(複数のロープの衝突)

次の用途には使用しないでください:

  • 流体力学 → 専用のSPH/MPMソルバーを使用します
  • 破壊シミュレーション → FEMまたはMPMが必要です
  • オフラインのシネマティック物理 → 異なる拘束が必要です
  • Unity/Unrealの物理演算 → 組み込みシステムを使用します

専門家と初心者を見分けるポイント

トピック初心者専門家
拘束のアプローチバネの力を使用する(F=ma)PBDを使用する(位置を直接操作する)
PBDを使う理由「バネで十分に機能します」バネには非常に小さなタイムステップが必要です。PBDは無条件に安定しています
ソルバーの選択「完了するまで繰り返すだけです」チェーンにはGauss-Seidel、GPUにはJacobiを使用します
反復回数20回以上5~10回が最適で、それ以降は効果が逓減します
回転オイラー角を使用するクォータニオンを使用する(ジンバルロックがありません)
積分前進オイラー法Verlet法(シンプレクティックで、エネルギーを保存します)

よくあるアンチパターン

剛性の高い拘束に力ベースのバネを使用する
例なぜ誤りなのか
force = k * (distance - rest_length)でkを大きくするkが大きいと安定性のために非常に小さなdtが必要です。kが小さいとロープが柔らかくなりすぎます
代わりに:PBDを使用し、拘束を満たすよう粒子を直接移動させます
回転にオイラー角を使用する
例なぜ誤りなのか
rotation = vec3(pitch, yaw, roll)pitchが90°のときにジンバルロックが発生し、合成も不安定になります
代わりに:クォータニオンを使用します。4つの数値で表現でき、ジンバルロックがなく、SLERPも安定します
反復しすぎる
例なぜ誤りなのか
solver_iterations = 505~10回以降は効果が逓減し、計算サイクルを無駄にします
代わりに:5~10回の反復を使用します。それ以上必要な場合はXPBDのコンプライアンスを使用します
大規模システムに単一スレッドのGauss-Seidelを使用する
例なぜ誤りなのか
1000個以上の拘束にGauss-Seidelを使用するGauss-Seidelは本質的に逐次処理です
代わりに:GPU並列化にはJacobiソルバーを使用します

クイックリファレンス

PBDが力ベースの物理演算より優れている理由
  • 無条件に安定しています(大きなタイムステップでも問題ありません)
  • 拘束の充足を直接制御できます
  • 調整が必要なバネ定数がありません
  • 挙動を予測しやすくなります
ソルバーの選択
ソルバー並列化可能収束速度用途
Gauss-Seidelいいえ高速チェーン、ロープ
Jacobiはい(GPU)低速大規模メッシュ、クロス
回転の表現
  • 3D回転 → クォータニオン(オイラー角は使用しません)
  • 回転+並進 → 双対クォータニオン
  • スキニング/ブレンディング → 双対クォータニオン(キャンディラッパー状のアーティファクトがありません)
パフォーマンス目標
システム予算備考
単一のロープ(100個の粒子)<0.5ms5回の反復で十分です
3匹の犬のリード(60個の粒子)<0.7ms絡まりの検出を含みます
クロス(1000個の粒子)<2msGPUでJacobiを使用します

発展のタイムライン

時代主な進展
2006年以前質点バネ系、安定性の問題
2006~2015年PBDの登場(Müllerら)、無条件安定性
2016~2020年XPBDで柔らかい拘束のコンプライアンスを追加
2021~2024年ALEM(2024 SIGGRAPH)、BDEM、ニューラル物理
2025年以降XPBDが標準に、CPU/GPUのハイブリッド化、学習による補正

選択の判断基準

制約ソルバーの選択:

  • 逐次構造(ロープ/チェーン)ですか? → Gauss-Seidel
  • 大規模な並列システム(布/髪)ですか? → Jacobi(GPU)
  • ソフト制約が必要ですか? → コンプライアンスを使用する XPBD

積分方法の選択:

  • 位置のみが必要ですか? → 基本的な Verlet
  • 力の計算に速度が必要ですか? → Velocity Verlet
  • 高精度が必要ですか? → RK4(ただし、通常は PBD で十分です)

連携先

  • metal-shader-expert - Jacobi ソルバー用の GPU コンピュートシェーダー
  • native-app-designer - 可視化およびデバッグ用 UI

参考ファイル

ファイル内容
references/core-algorithms.mdPBD ループ、Verlet、クォータニオン、ソルバーの実装
references/tangle-physics.md複数ロープの衝突、キャプスタン摩擦、TangleConstraint

覚えておいてください:リアルタイム物理では、物理的な正確さではなく、安定性と視覚的なもっともらしさが重要です。60fps で 5~10 回反復する PBD は見栄えがよく、高速に動作します。

コメント