Home

Awesome

整理一下基于物理的模拟/动画(Physics based simulation/animation)方向的课程、研究者、文献和代码等资源.持续更新,欢迎补充!

GitHub: github.com/Housz/awesome-simulation

1 课程

图形学入门:

【闫令琪】GAMES101: 现代计算机图形学入门

【刘利刚】2020年中国科学技术大学《计算机图形学》本科课程

OpenGLLearnOpenGL CN (learnopengl-cn.github.io) 最好的OpenGL入门教程

物理模拟:

【王华民】GAMES103:基于物理的计算机动画入门 包括:数学背景知识、刚体、质点弹簧系统、约束、碰撞、软体与有限元、流体等,对新手比较友好.四个作业(刚体、布料、柔性体、流体)采用Unity平台,较容易上手.

【胡渊鸣】GAMES201:高级物理引擎实战指南2020 深度广度都非常高,若没有数值计算背景上手难度较大.包括拉格朗日视角、欧拉视角、混合欧拉-拉格朗日视角、高性能物理引擎等话题.

【刘天添】太极图形课 采用Taichi语言的图形学课程.包括:图形学介绍、编程基础、Taichi数据结构和性能、动画基础、光线追踪、弹性体(时间积分、有限元、能量求导、隐式积分与线性系统求解)、流体(拉格朗日视角、欧拉视角)等.有作业和答疑.

【何小伟】GAMES401-泛动引擎(PeriDyno)物理仿真编程与实践(更新中) 基于PeriDyno泛动引擎项目的编程实践课,包括:PeriDyno代码介绍、GPU编程入门和CUDA简介、图形学常用几何算法、刚体动力学并行编程、SPH并行编程、近场动力学并行编程、Vulkan入门等.

【李旻辰】Physics-based Animation of Solids and Fluids CMU物理仿真研讨课,内容包括:优化式时间积分,质点弹簧系统,FEM,IPC,布料,刚体,降维仿真,拉格朗日流体,PIC/FLIP,MPM

【小彭老师】高性能并行编程与优化系列课程,持续更新,包括CMake、现代C++技术(智能指针、模板、函数式、多线程、STL等)、编译器优化、TBB、访存优化、CUDA、稀疏数据结构和量化数据类型、现代OpenGL等.

【王希】GAMES104-现代游戏引擎 第10、11课介绍游戏引擎中的物理系统;第8、9课介绍游戏引擎中的动画技术.

【Ladislav Kavan】CIS563 Physics based Animation (2014) Ladislav的课都是手推公式,很细致.包括:质点弹簧系统、PBD、Shape Matching、PDE基础、FEM、Projective Dynamics、刚体、碰撞等.CIS563 Physics based Animation (2015) 新增了流体等内容.补充内容(刘天添)CS6660 Physics based Animation (2017) 加入了拉格朗日/哈密顿力学的视角.

【Eitan Grinspun】Animation and CGI Motion (仅在edX平台)Eitan大神讲得很细,手推公式,对初学者非常友好.包括:OED数值积分入门,拉格朗日力学视角,碰撞、接触与摩擦,连续介质力学,有限元,刚体,薄壳与布料,绳子与头发,流体等.

【Matthias Müller】Ten Minute Physics (更新中)特点是提供JavaScript实现代码,容易上手.包括:JavaScript动画和交互基础、基础3D数学、PBD/XPBD、PBD软体和加速、邻域搜索(spatial hashing)、blender脚本、PBD布料和自碰撞、GPU编程基础(NVIDIA Warp Python)、欧拉视角流体(Semi-Lagrangian)、混合视角流体(PIC、FLIP)、微分方程基础、高度场流体等.

【Adam Bargteil】SIGGRAPH'19 Course: An Introduction to Physics-Based Animation Siggraph2019课程,介绍了物理模拟的基本概念,有配套文档.

【David I.W. Levin】CSC417/CSC2549 Physics-Based AnimationYouTubebilibili 拉格朗日力学,质点弹簧系统,FEM,刚体、流体.

【Doug L. James】CS 5643: Physically Based Animation for Computer Graphics (2015) 非常全面的课程,列出了每个方向的经典文献.包括:粒子、矩阵计算、约束动力学、SPH流体、PBF流体、数值积分、隐式求解、PBD、碰撞、刚体、刚体声音、流体、共轭梯度、Shape Matching、破碎、烟雾水体和火的控制、噪声与湍流、动画声音等.Doug的其他课程CS 448Z: Physically Based Animation and Sound (2021)CS 248: Interactive Computer Graphics (2022)CS 348C: Computer Graphics: Animation and Simulation (2022)

【Jernej Barbič】CSCI 520 Computer Animation and Simulation

【Jan Bender】Physics Simulation in Visual Computing

数学基础:

矩阵计算基础:GAMES103数学基础3Blue1Brown线性代数的本质矩阵求导术Numerical Recipeswiki Matrix_calculus

数值分析基础:数值分析2020春 苏州大学张亚楠老师,深入浅出.教材参考李庆扬《数值分析》第四/五版.

数值分析进阶:数值分析 中科大 布朗大学舒其望.最强中文数值课程.

最优化基础:最优化理论与方法 上海财经崔雪婷老师.参考教材Stephan Boyd《凸优化》,Jorge Nocedal《Numerical Optimization》等.

最优化进阶:Boyd斯坦福公开课 优化之神Boyd带你谈笑风生.

科学计算基础:EAS205 Applications of Scientific Computation (2014) Ladislav Kavan的科学计算基础课程,包括向量矩阵计算、线性变换、线性系统、群论入门、向量空间、最小二乘、奇异值分解等.

数值计算书:《Numerical Recipes》,《Matrix Computations》(中文版:《矩阵计算》),《Scientific Computing: An Introductory Survey》(中文版:《科学计算导论》),《Iterative methods for sparse linear systems》,《A multigrid tutorial》.

2 研究者、团队

胡渊鸣 (MIT, 太极图形) @胡渊鸣99行代码的《冰雪奇缘》

刘利刚 (中科大)

刘天添 (UPenn, 太极图形) @天天添一点儿

王华民 (Ohio State University,style3d) @wanghmin

蒋陈凡夫 (UCLA) @蒋陈凡夫从转系生到终身教授:十二年图形学物理模拟的自我回顾

张心欣 (UBC, 泽森科工) @张心欣

李旻辰 (CMU) @Minchen Li

费昀 (Adobe) @Raymond Fei

任博 (南开)

黄劲 (浙大)

唐敏(浙大)

高明 (米哈游)

朱博(GaTech)

何小伟(中科院)

刘利斌(北大)《GAMES105:计算机角色动画基础》课程

刘晓培(上科大)

李一飞(MIT)

David BaraffAndrew Witkin (CMU, Pixar)两位上古大神,宗师级人物

Demetri Terzopoulos(UCLA)

Eitan Grinspun(University of Toronto)几何、物理等

Ladislav Kavan(University of Utah, Facebook)柔性体、数值方法等

Robert Bridson(UBC, Autodesk)流体等,《Fluid Simulation for Computer Graphics》作者

Joseph Teran(UC Davis)

Markus Gross (ETH Zurich)

Jos Stam(Nvidia)Semi-Lagrangian提出者,《The Art of Fluid Animation》作者

Jan Bender(RWTH Aachen University)SPH,柔性体等

Matthias MüllerMiles Macklin (NVIDIA)PBD

Dinesh K. Pai (UBC)

Paul G. Kry (McGill University)Sheldon Andrews (École de technologie supérieure) 刚体、接触摩擦等

Jernej Barbic(USC)

David I.W. Levin (University of Toronto)

Doug L. James(Stanford)

Theodore Kim(Yale)

Matthias Teschner(University of Freiburg)

Eftychios Sifakis(UW-Madison)

Kenny Erleben(University of Copenhagen)《Physics-Based Animation》作者

Jeff Trinkle (Lehigh University)刚体,机器人

Doyub Kim《Fluid Engine Development》作者

Roy Featherstone (Italian Institute of Technology)刚体,机器人

C. Karen Liu (Stanford)机器人,强化学习

Xue Bin (Jason) Peng (Simon Fraser University)机器人,强化学习

Shinjiro Sueda (Texas A&M University)机器人、弹性体

@禹鹏 大佬整理的物理仿真谱系

未完待续......

研究团队

Stanford Computer Graphics Laboratory(Stanford)

Dynamic Graphics Project (University of Toronto)

Computer Graphics University of California - Berkeley (Berkeley)

Computational Sciences Group(KAUST)

Carnegie Mellon Graphics Lab(CMU)

Pixar Research(Pixar)

3 资源集合

【中文图形学交流平台】计算机图形学与混合现实研讨会 – GAMES: Graphics And Mixed Environment Seminar (games-cn.org)

【中科大《计算机图形学前沿》暑期课程】官网Bilibili

【物理仿真论文集合】Physics-Based Animation (physicsbasedanimation.com)

【图形学论文集合】Resource for Computer Graphics - Ke-Sen Huang's Home Page (realtimerendering.com)

【SIGGRAPH Courses等资源】 https://blog.selfshadow.com/

【物理仿真论文集合】Computer Graphics and Simulation Research Results

【物理仿真代码 SPH PBD等】Home (interactive-graphics.de)

【知乎专栏】 GraphiCon图形控 - 知乎 (zhihu.com)

未完待续......

4 入门文献

【Siggraph '97 Course notes】Physically Based Modeling (cmu.edu)

【经典物理模拟入门书】Physics-Based Animation (2005)

【物理模拟入门书】Foundations of Physically Based Modeling and Animation (2017)

中文版:《基于物理的建模与动画》 目录:白如冰

【计算机动画入门书】Computer Animation: Algorithms and Techniques (2012) 中文版:计算机动画算法与技术

【Physics-Based Simulation】phys-sim-book.github.io,by Minchen Li & Chenfanfu Jiang

【流体入门书】

【布料】Cloth Simulation for Computer Graphics

【质点弹簧、有限元、PBD、刚体】Real Time Physics Class Notes

【一个游戏开发大神写的教程】Video Game Physics Tutorial

【SIGGRAPH Courses, 2018 软体仿真实时并行求解】Parallel iterative solvers for real-time elastic deformationsMarco Fratarcangeli, Huamin Wang, Yin Yang

【SIGGRAPH Courses, 2020 软体】Dynamic Deformables: Implementation and Production PracticalitiesTheodore Kim, David Eberle

GAMES103 课程王华民老师推荐的文献:

【刚体】Witkin and Baraff. 2001. Physically Based Modeling – Rigid Body Dynamics. SIGGRAPH Courses.

【Shape Matching】Muller et al. 2005. Meshless Deformations Based on Shape Matching. TOG (SIGGRAPH).

【隐式积分的先驱】Baraff and Witkin. 1998. Large Step in Cloth Simulation. SIGGRAPH.

【布料】Bridson et al. 2003. Simulation of Clothing with Folds and Wrinkles. SCA.

【布料】Bergou et al. 2006. A Quadratic Bending Model for Inextensible Surfaces. SCA.

【PBD改进】Muller. 2008. Hierarchical Position Based Dynamics. VRIPHYS.

【PD】Bouaziz et al. 2014. Projective Dynamics: Fusing Constraint Projections for Fast Simulation. TOG (SIGGRAPH).

【约束】Tournier et al. 2015. Stable Constrained Dynamics. TOG (SIGGRAPH).

UBC CPSC 533d Animation Physics 课程推荐文献列表

游戏开发者的书单

未完待续......

5 Topics & Methods

刚体(Rigid Body)

Interactive Simulation of Rigid Body Dynamics in Computer Graphics

Featherstone: Rigid Body Dynamics Algorithms

Sheldon Andrews & Kenny Erleben SIGGRAPH'21 Course: Contact and Friction Simulation for Computer Graphics Siggraph2021课程,介绍接触与摩擦.包括:接触和摩擦的理论、算法,线性互补问题(LCP)等.

Position Based Dynamics

A Survey on Position-Based Simulation Methods in Computer Graphics

MPM

The Material Point Method for Simulating Continuum Materials

FEM

FEM Simulation of 3D Deformable Solids: A practitioner's guide to theory, discretization and model reduction

能量优化视角(Fast Mass-Spring, Projective Dynamics, Quasi-Newton, ADMM ......)

2019年(第八届)中国科学技术大学《计算机图形学前沿》暑期课程 P5 刘天添

流体(Fluid)

SPH

【Eurographics Tutorial, 2019】Smoothed Particle Hydrodynamics Techniques for the Physics Based Simulation of Fluids and SolidsDan Koschier, Jan Bender, Barbara Solenthaler, Matthias Teschner 包括:SPH理论基础、近邻搜索、不可压缩性、边界处理、多相流体、粘度、涡度、SPlisHSPlasH开源库、可变形固体、刚体、数据驱动技术.

中科大暑期课程计算机图形学前沿进展 物理模拟相关讲座

官网:计算机图形学前沿进展 视频:哔哩哔哩

2014【许威威】快速弹性形变物理仿真技术

2016【黄劲】弹性模拟中的线性化与降维

2017【Paul Kry】Physics Based Computer Animation Fundamentals

2018【张举勇】几何优化与物理模拟中的数值优化算法

2019【刘天添】Towards Real-time Simulation of Deformable Objects

2021【任博】使用拉格朗日粒子方法的图形学多流体模拟

2021【刘晓培】高性能可视流体计算及其应用

2021【王华民】Real-Time Cloth Simulation on GPUs

2021【匡冶, 刘剑成】太极编程语言与可微物理模拟

未完待续......

6 代码与工具

Code Replicability in Computer Graphics:搜集SIGGRAPH/TOG论文的代码

NumericalProjectsCollections@胡虎互护呼 大佬整理的图形学领域开源代码

开源引擎/代码库:

Taichi:Taichi Graphics 太极图形编程语言 @太极图形

ZENO:ZENO:泽森ZENO开源引擎 @张心欣

libigl:https://libigl.github.io/ 面向研究者的轻量的几何处理库

Box2D:http://www.box2d.org/ 经典2D物理引擎

OED:Open Dynamics Engine 经典刚体模拟库

Bullet/pyBullet:Bullet engine 3D物理引擎,支持刚体、柔体等,支持C++,python接口

DART:DART: Dynamic Animation and Robotics Toolkit 机器人仿真、强化学习

PhysX:PhysXFleX 英伟达游戏引擎,已开源

ARCSim:ARCSim: Adaptive Refining and Coarsening Simulator 布料

OpenCloth:https://github.com/mmmovania/opencloth 布料

Pinocchio:Pinocchio 机器人仿真

MuJoCo:mujoco.org 机器人仿真,广义坐标,被DeepMind收购后开源

ReactPhysics3d:www.reactphysics3d.com 刚体

Simbody:simtk.org/projects/simbody/ 多体动力学、生物力学

Chrono:https://projectchrono.org/ 多体动力学、有限元、车辆

IPC:https://github.com/ipc-sim/IPC Incremental Potential Contact

RigidBodyDynamics.jl:https://github.com/JuliaRobotics/RigidBodyDynamics.jl Julia语言的刚体动力学库

RBDL:https://github.com/rbdl/rbdl 刚体动力学,实现了Featherstone教材内容

GEAR:https://github.com/junggon/gear 基于李群/旋量理论的多体动力学库

PBD:InteractiveComputerGraphics / PositionBasedDynamics

SPH:InteractiveComputerGraphics/SPlisHSPlasH

Fluid Engine Dev:Fluid Engine Dev:流体模拟库,有配套教材

PhysBAM:http://physbam.stanford.edu/ 一个包罗万象的物理模拟库,包括:刚体、变形体、流体、布料、流固耦合、人体、破碎、火焰、烟雾、头发、肌肉等

mantaflow:An extensible framework for fluid simulation 流体

Vega:VEGA FEM LIBRARY 有限元

NVIDIA Warp: NVIDIA Warp 英伟达开源python图形计算库,作者Miles Macklin

http://david.li/ :一个Web3d环境下的物理效果集合库

SimpleSimulationEngine: github.com/ProkopHapala/SimpleSimulationEngine 模拟、数值、C++/python/web接口

刚体动力学库搜集:Survey of Multibody Dynamics Software (rpi.edu)

Matrix Calculus:http://www.matrixcalculus.org/ 在线矩阵计算

商业软件:

Houdini:https://www.sidefx.com/

Blender:https://www.blender.org/ 开源、免费

MAYA:https://www.autodesk.com/products/maya/

Unity:https://unity.com/

Unreal Engine:https://www.unrealengine.com/

求解器:

Eigen:eigen.tuxfamily.org 线性代数库,稠密/稀疏线性系统解算,纯C++头文件实现

Intel MKL:Intel® oneAPI Math Kernel Library 英特尔的数学核心函数库

PARDISO:https://www.pardiso-project.org/ 大规模稀疏线性系统求解,提供C/C++, Julia, Fortran, Matlab接口

SuiteSparse:https://people.engr.tamu.edu/davis/suitesparse.html 大规模稀疏线性系统求解

未完待续......

7 Conferences & Journals

SIGGRAPH / SIGGRAPH ASIA

Eurographics (EG)

Pacific Graphics(PG)

Symposium on Computer Animation (SCA)

Symposium on Interactive 3D Graphics and Games (I3D)

The ACM SIGGRAPH Conference on Motion, Interaction and Games (MIG)

IEEE Conference on Virtual Reality and 3D User Interfaces (IEEE VR)

<br/>

ACM Transactions on Graphics (TOG)

IEEE Transactions on Visualization and Computer Graphics (TVCG)

Computer Graphics Forum (CGF)

Computers & Graphics

The Visual Computer

Computer Animation and Virtual Worlds

Graphical Models

IEEE Computer Applications and Graphics

Computational Visual Media (CVMJ)

感谢 @Xayah@胡虎互护呼 的补充! 感谢 @Minchen Li老师的补充!