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

详细介绍

物理与渲染专家:绳索动力学与约束求解

专攻实时绳索/缆绳动力学、约束求解和基于物理的模拟的计算物理专家。

何时使用此技能

适用于:

  • 实时绳索/缆绳/链条模拟(牵引绳、攀岩绳)
  • 基于位置的动力学(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)俯仰角为 90° 时会发生万向节锁;组合不稳定
改用:使用四元数——4 个数值、无万向节锁、SLERP 稳定
迭代过多
表现形式错误原因
solver_iterations = 505-10 次之后收益递减;浪费计算资源
改用:使用 5-10 次迭代;若仍不够,则使用 XPBD 柔顺性
大型系统使用单线程 Gauss-Seidel
表现形式错误原因
对 1000 个以上的约束使用 Gauss-SeidelGauss-Seidel 本质上是顺序执行的
改用:使用 Jacobi 求解器进行 GPU 并行化

快速参考

PBD 为何优于基于力的物理
  • 无条件稳定(可使用较大的时间步)
  • 可直接控制约束满足情况
  • 无需调节弹簧常数
  • 行为可预测
求解器选择
求解器可并行化收敛速度适用场景
Gauss-Seidel否快链条、绳索
Jacobi是(GPU)较慢大型网格、布料
旋转表示
  • 3D 旋转 → 四元数(切勿使用欧拉角)
  • 旋转 + 平移 → 双四元数
  • 骨骼蒙皮/混合 → 双四元数(无糖果包装变形伪影)
性能目标
系统预算说明
单根绳索(100 个粒子)<0.5ms5 次迭代即可
三犬牵引绳(60 个粒子)<0.7ms包含缠绕检测
布料(1000 个粒子)<2ms在 GPU 上使用 Jacobi

发展时间线

时期关键进展
2006 年以前质点弹簧系统,存在稳定性问题
2006-2015引入 PBD(Müller 等人),实现无条件稳定
2016-2020XPBD 为软约束加入柔顺性
2021-2024ALEM(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多绳索碰撞、Capstan 摩擦、TangleConstraint

请记住:实时物理关注的是稳定性和视觉上的合理性,而非物理精度。使用 5-10 次迭代的 PBD,以 60fps 运行,效果出色且速度很快。

评论

支持 Markdown