物理引擎#
Genesis 将多个物理 solver 集成到统一的框架中,支持多种物理现象的仿真,包括刚体、软体、流体及其相互作用。
架构概览#
Scene
└── Simulator
├── Solvers (物理计算)
│ ├── RigidSolver - 刚体动力学
│ ├── MPMSolver - Material Point Method
│ ├── FEMSolver - Finite Element Method
│ ├── PBDSolver - Position Based Dynamics
│ ├── SPHSolver - Smoothed Particle Hydrodynamics
│ ├── SFSolver - String/Fiber 动力学
│ └── ToolSolver - 运动学约束
│
└── Couplers (物理交互)
├── LegacyCoupler - 基于脉冲的耦合
├── SAPCoupler - 空间加速
└── IPCCoupler - Incremental Potential Contact
仿真循环#
典型的仿真步包括:
Pre-step: 准备 solver 状态
Solver steps: 每个 solver 推进其物理计算
Coupling: 处理不同物理类型之间的交互
Post-step: 更新渲染状态、传感器
import genesis as gs
gs.init()
scene = gs.Scene(
sim_options=gs.options.SimOptions(
dt=0.01, # 时间步长
substeps=4, # 每步的物理子步数
gravity=(0, 0, -9.81),
),
)
# 添加 entities...
scene.build()
# 每个 step() 执行完整的仿真循环
for i in range(1000):
scene.step()
Solver 选择#
Solvers 根据 entity 类型和 materials 自动选择:
Entity/Material |
Solver |
|---|---|
|
RigidSolver |
|
MPMSolver |
|
FEMSolver |
|
PBDSolver |
|
SPHSolver |
String/fiber materials |
SFSolver |
Solver 配置#
每个 solver 有专用的配置选项:
scene = gs.Scene(
sim_options=gs.options.SimOptions(
dt=0.01,
substeps=4,
),
rigid_options=gs.options.RigidOptions(
enable_collision=True,
enable_joint_limit=True,
),
mpm_options=gs.options.MPMOptions(
lower_bound=(-1, -1, 0),
upper_bound=(1, 1, 2),
),
)
组件#
另请参阅#
仿真器、耦合器与求解器选项 - Solver 配置
Entity - 每种 solver 对应的 Entity 类型