16-SOFA_仿真背后的力学(总结)

发布时间:2026/8/24 13:44:10

16-SOFA_仿真背后的力学(总结)
1.AnimationLoop回顾 SOFA 一个完整仿真需要哪些东西首先需要 AnimationLoop。它负责决定一个时间步里面各个计算步骤按照什么顺序执行也就是当前时间 t↓AnimationLoop组织各项计算↓完成一个仿真时间步↓进入 t dt即使不写也存在默认 AnimationLoopNode nameroot dt0.01 gravity0 0 0 DefaultAnimationLoop / DefaultVisualManagerLoop / Node namemyObject ... /Node /Node默认情况下 SOFA 会提供一个 DefaultAnimationLoop。但仍然建议最好在场景里面明确写出来你要用哪个 AnimationLoop。主要有两类DefaultAnimationLoop 和 FreeMotionAnimationLoop2.DefaultAnimationLoop 和 FreeMotionAnimationLoop2.1.DefaultAnimationLoopDefaultAnimationLoopCollision detection碰撞检测主要对应 penalty response↓Physics resolution求解物理运动↓AnimateVisitor Update更新状态2.2.FreeMotionAnimationLoop先计算 free physics↓碰撞检测↓求解约束↓综合物理 约束/碰撞↓修正运动FreeMotionAnimationLoop 的 Scene Graph 通常要更复杂原因是它还需要 Constraint Solver 去真正求解约束。在碰撞问题里它可以进一步求 接触力contact forcesDefaultAnimationLoop→ 普通物理仿真流程FreeMotionAnimationLoop→ 自由运动 约束/接触求解3.MechanicalObject 的 template一定要注意 MechanicalObject 的 template。因为 template 决定这个 MechanicalObject 中的自由度是什么类型例如MechanicalObject templateRigid3d namemyParticle position0 0 0 0 0 0 1 /这里 Rigid3d 意味着它描述的是一个三维刚体自由度。所以position不只是三个坐标还包括刚体姿态。4.单个刚体不会形变接着把问题缩小到 Single rigid body单个刚体。这里暂时不考虑铰接系统、多刚体、复杂角运动只考虑一个刚体。牛顿方程可以写其中外力内力但对于的这个理想单刚体不讨论使物体内部发生形变的内部自由度。所以重点是外力刚体整体移动但刚体不形变即 Rigid no internal force no deformation可以用刚体的质心来描述它的整体平移运动。于是可以写其中是质心的位置。4.1.牛顿记号点记号是牛顿记号点记号专门用来对时间 t 求导x x(t)位置关于时间的函数ẋ dx/dt一阶导速度 vẍ d²x/dt²二阶导加速度 a所以等式直接等价 ∑F mẍ ⇔ ∑F ma5.积分方案integration schemeMechanicalObject templateRigid3d namemyParticle position0 0 0 0 0 0 1 / UniformMass totalMass1/ ConstantForceField totalForce1 0 0 0 0 0 /我们已经有MechanicalObject Mass Force从物理方程来看似乎已经足够但当时点 Animate物体还是不会动。因为当时缺了Integration scheme Linear solver其中最先缺的是积分方案integration scheme因为还需要告诉计算机怎么从当前时间的状态算到。Integration scheme 的作用就是完成这就是我们为什么一直需要 EulerImplicitSolver 之类的 ODE Solver它告诉我们怎样从当前仿真状态进入下一状态。6.积分方案分显式和隐式计算这个力的时候应该使用哪个时间点的6.1.Explicit——显式积分显式方法使用已经知道的状态。例如,或者它们的某种组合。只要使用 过去状态 或 当前状态 这些已经知道的值就是显式方法。Explicit用已知状态计算力优点简单、计算效率高缺点通常要求很小的比如那么为了模拟就需要个时间步。所以单步虽然简单但如果时间步必须特别小整个仿真仍然可能很慢。6.2.Implicit——隐式积分另一种策略是也就是用下一时间步的位置计算力。问题在于现在还不知道。因此求解就变得更复杂。Implicit力依赖尚未求出的未来状态优点可以使用更大的时间步。缺点每一步要求解的数学系统更复杂。方法优点缺点Explicitsimple, efficientrequires a smallImplicitallows largermore complex system to solve7.积分方案最终会产生线性系统不论使用显式还是隐式问题最终归结成注意这里的 x 不是前面 MechanicalObject 的位置 x 本身这里是线性代数里待求未知量。这里用显式 Euler 举例。显式方法是在当前状态计算力。7.1. 加速度写成速度变化定义于是代回得到两边乘SOFA 中这里求的通常不是 acceleration而是 velocity increment。即不是直接把作为未知量而是求于是刚才的线性系统对应这个简单显式例子,,8.区分 Integration Scheme 和 Linear SolverIntegration Scheme例如EulerExplicitSolver、EulerImplicitSolver负责把动力学方程整理成线性系统。也就是决定是什么是什么以及未知量是什么。但是它不负责真正把解出来。Linear Solver真正负责求解的是 Linear Solver 比如前面使用的 CGLinearSolver 。ODE / Integration Solver↓建立 Ax b↓Linear Solver↓真正求 x9.Linear Solver 分两类线性求解器大致有两类。9.1.Direct Solver——直接求解器思想接近也就是直接求精确解。可以理解为试图对矩阵做直接处理。特点精度高 / 求解直接但可能计算成本高9.2.Iterative Solver——迭代求解器比如CG Conjugate Gradient 共轭梯度法它不是一次就得到答案而是先猜一个解算误差修正再算误差继续修正...残差其中是当前第次迭代的解。目标就是也就是不断减小的误差。所以 CGLinearSolver 本质上就是通过迭代不断逼近 Axb 的解。10.MeshLoader是被动组件MeshLoader 是 passive component被动组件。它自己不会计算物理它做的只是读取 mesh 文件↓读取点、边、三角形、四面体等信息↓把这些信息提供给场景通常再连接 TopologyContainer 或其他 Mesh Topology 组件。因此MeshLoader ≠ 物理模型它只是数据加载器。11.仿真模型需要哪些东西总结物理部分前面加入过 MassUniformMass、MeshMatrixMassExternal ForceConstantForceFieldMechanical Constitutive Law例如之前肝脏里的线弹性模型也就是MechanicalObjectMassForce / ForceFieldConstitutive Model构成基本机械模型。假设已经有 MechanicalObject、Mass、Force 甚至已经有材料模型但没有 Integration Scheme Linear Solver物体还是不会真正从推进到Physics ≠ 完整可运行仿真还需要数值求解部分EulerImplicitSolver CGLinearSolver12.Mapping 把 representation 连起来当从刚体例子进入之前的 Deformable Liver场景开始增加其他 representationMechanical Model、Rendering Model、Collision Model如果三种 representation 使用不同 MeshMechanical Mesh、Visual Mesh、Collision Mesh就需要 Mapping 连接它们。

相关新闻

32位浮点数解析永远对不上?四种字节序快速校准与工程化转换方案

32位浮点数解析永远对不上?四种字节序快速校准与工程化转换方案

2026/8/24 13:44:10

对接工业仪表、PLC、Modbus设备时,32位浮点数解析错乱是最高频的坑点:明明抓到的字节没错,试了大端小端两种格式,转出来的数值要么离谱、要么完全对不上。很多人反复调换字节顺序瞎试,效率极低。 本质原因非常简单:32位浮点数不是只有「大端/小端」两种字节序,而是「字…

2026年7月濮阳市新房价格深度分析报告

2026年7月濮阳市新房价格深度分析报告

2026/8/24 13:34:10

一、报告背景与数据说明本报告基于2026年7月濮阳市新房市场实际成交案例,结合成交价格、成交面积、成交区位等维度,对当前濮阳新房价格水平、价格结构及未来走势进行深度分析。报告数据来源于濮阳市房地产管理部门备案信息、主要楼盘案场成交记录及第三方…

AI Agent 最大的安全风险:拿着权限做错事

AI Agent 最大的安全风险:拿着权限做错事

2026/8/24 13:34:10

文章目录1 -> 引言2 -> 建立 Agent 威胁模型资产输入来源危险出口安全不变量3 -> 提示注入为什么难以彻底识别4 -> 最小权限必须细到任务5 -> 把数据与指令分开6 -> 外送控制比“是否读到”更重要7 -> 工具调用需要确定性边界8 -> 多 Agent 会引入“借…

通义千问本地部署只需4步:用 FlashAI 免费离线跑通大模型

通义千问本地部署只需4步:用 FlashAI 免费离线跑通大模型

2026/8/24 15:14:14

通义千问本地部署只需4步:用 FlashAI 免费离线跑通大模型 【免费下载链接】通义千问 FlashAI一键本地部署通义千问大模型整合包 项目地址: https://ai.gitcode.com/FlashAI/qwen 想在本地电脑上跑起通义千问,又怕折腾环境、担心数据外传&#xff…

HandheldCompanion 完整上手指南:给 Windows 掌机加上体感控制与性能快调

HandheldCompanion 完整上手指南:给 Windows 掌机加上体感控制与性能快调

2026/8/24 15:14:14

HandheldCompanion 完整上手指南:给 Windows 掌机加上体感控制与性能快调 【免费下载链接】HandheldCompanion A touch optimized GUI to increase your handheld gaming computer experience. 项目地址: https://gitcode.com/gh_mirrors/ha/HandheldCompanion …

Stretchly 自定义休息界面:3 个 HTML 文件、4 个 CSS 文件改出你的提示屏

Stretchly 自定义休息界面:3 个 HTML 文件、4 个 CSS 文件改出你的提示屏

2026/8/24 15:14:14

Stretchly 自定义休息界面:3 个 HTML 文件、4 个 CSS 文件改出你的提示屏 【免费下载链接】stretchly The break time reminder app 项目地址: https://gitcode.com/gh_mirrors/st/stretchly Stretchly 是一个开源的休息提醒应用,它把迷你休息和长…

Video2X 视频超分辨率与帧插值完整指南:一条命令把老视频升级到 4K

Video2X 视频超分辨率与帧插值完整指南:一条命令把老视频升级到 4K

2026/8/24 15:14:14

Video2X 视频超分辨率与帧插值完整指南:一条命令把老视频升级到 4K 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trend…

你的异常信息为何一出 except 就“失忆”?——Python sys.exc_info() 的上下文陷阱与完美捕获术

你的异常信息为何一出 except 就“失忆”?——Python sys.exc_info() 的上下文陷阱与完美捕获术

2026/8/24 15:14:14

你的异常信息为何一出 except 就“失忆”?——Python sys.exc_info() 的上下文陷阱与完美捕获术在 Python 中,sys.exc_info() 是获取当前正在处理的异常信息的最直接工具。它返回一个三元组 (异常类型, 异常实例, traceback对象),看似简单&am…

一个真正可用的水电数字孪生,应该长什么样?

一个真正可用的水电数字孪生,应该长什么样?

2026/8/24 15:04:14

真正的水电站数字孪生平台,不只是场景样貌还原,而是把场站、设备、水流和运维闭环放在同一个可计算现场。水电站数字孪生系统:大坝、库区、厂房、输电通道与运行数据统一呈现。很多水电站做数字孪生,第一步都很相似:先…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/23 0:02:09

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/23 0:02:09

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/23 0:02:09

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

OpenModScan:免费跨平台 Modbus 主站调试工具,让现场通讯验证一键搞定

OpenModScan:免费跨平台 Modbus 主站调试工具,让现场通讯验证一键搞定

2026/8/24 0:03:28

OpenModScan:免费跨平台 Modbus 主站调试工具,让现场通讯验证一键搞定 【免费下载链接】OpenModScan Open ModScan is a Free Modbus Master (Client) Utility 项目地址: https://gitcode.com/gh_mirrors/op/OpenModScan OpenModScan 是一款开源免…

WechatHook 终极指南:5大核心能力详解,3分钟看懂微信自动化

WechatHook 终极指南:5大核心能力详解,3分钟看懂微信自动化

2026/8/24 0:03:28

WechatHook 终极指南:5大核心能力详解,3分钟看懂微信自动化 【免费下载链接】WechatHook Enjoy hooking wechat by Xposed....Accessibility...and so on... 项目地址: https://gitcode.com/gh_mirrors/we/WechatHook WechatHook 是一个基于 Xpos…

如何在ThinkPad X390上安装macOS:OpenCore EFI完整指南

如何在ThinkPad X390上安装macOS:OpenCore EFI完整指南

2026/8/24 0:03:28

如何在ThinkPad X390上安装macOS:OpenCore EFI完整指南 【免费下载链接】ThinkpadX390-Opencore-EFI macOS Catalina & Big Sur & Monterey on ThinkPad X390 (Hackintosh) 项目地址: https://gitcode.com/gh_mirrors/th/ThinkpadX390-Opencore-EFI …

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/22 2:02:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/22 4:13:47

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/22 1:32:34

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…