(GAMES 201) Advanced Physics Engines 2020: A Hands-on Tutorial
Selected course projects 精选课程项目展示☯
GPU Molecular Dynamics using Taichi: TaichiMD by Andrew Sun from University of Minnesota | Taichi cloth sim: OpenClothPy by linyaodong from Zhejiang | MLS-MPM + Lagrangian forces by bx2k from Tsinghua University |
2D LBM simulator: LBM_Taichi by Zhuo Wang from Zhejiang University | FLIP+MGPCG: taichi_demos by citadel | SPH_Taichi by Mingrui Zhang from Imperial College London |
MLS-MPM sand-water coupling by Chang Yu from UESTC | PBD game by Yilong Wu from UESTC | APIC/FLIP/PIC by Yilong Wu from UESTC |
(More to be added. Feel free to email yuanming at mit.edu with a gif + code link to get yours shown here!)
Teams that submit impressive course projects are awarded Taichi cups - we manufactured 80 Taichi cups and they are all mailed to students and course staff. Come back next year if you want one :-)
Topics 课程内容
Lagrangian/Eulerian/hybrid views; Mass-spring systems; Explicit/implicit time integrators; Smoothed particle hydrodynamics; Implicit FEM solvers; Chorin-Style projection; Krylov-subspace solvers; Multigrid preconditioning; Topology optimization; PIC/FLIP/APIC; Material Point Method; MLS-MPM; Plasticity; High-performance computing; Differentiable physical simulation.
Lecture recordings (Chinese) 课程录像 (汉语)
Prerequisites 建议前置课程
Calculus, linear algebra, college physics, Python or any programming language. Basic numerical analysis and continuum mechanics are recommended but not required. 微积分、线性代数、Python或任何一门程序设计语言。基础数值分析和连续介质力学推荐但不必要。
Schedule 授课时间
Weekly on Monday 8:30-10:00 Eastern time, July 1 2020 - August 17 2020.
共10节课,每周一次。2020年6月1日开始,时间为北京时间晚上8:30-10:00。
Course projects 课程作业
We have three open projects for this course. 课程共有三个开放项目。自愿完成。开放项目可以1-3人组队。
开放项目以同学们自由发挥为主,同学们可以自己将代码分享到 https://forum.taichi.graphics/ 论坛进行讨论,互相切磋。每次我们会选择有代表性的几个项目会在下次上课展示、点评。课程最后会进行最终点评、线上颁奖。
Capacity and WeChat groups 容量与微信群
We welcome active online (given the pandemic) participation from up to 1,000 students.
Teaching assistants 助教团队
- Yadi Cao 曹亚帝
- Xuanda Yang 杨玄达
- Xudong Feng 冯旭东
- Yu Peng 禹鹏
- Xiao Zhai 翟骁
- Yuchen Shi 史雨宸
- Yiming Xia 夏一鸣
- Yujie Yuan 袁宇杰
Lectures, slides, and code
Lec 1 (June 1) Introduction 6月1日 导论
Topics:
- 基于物理的动画简介
- Taichi(太极)编程语言简介
- 课程与作业安排
Resources:
(开放作业0:编写你自己的任意Taichi程序)
Lec 2 (June 8) Lagrangian view (1) 6月8日 拉格朗日视角 (1)
Topics:
- 弹簧质点系统(Mass-spring systems):你的第一个物理模拟器
- 显式与隐式时间积分器(Explicit/implicit time integrators)
- 光滑粒子流体动力学(Smoothed particle hydrodynamics)
- 快速邻居搜索(Neighborhood search)
Resources:
Lec 3 (June 15) Lagrangian view (2) 6月8日 拉格朗日视角 (2)
Topics:
- 基于四面体网格(tetrahedral mesh)的拉格朗日有限元模拟
- 隐式有限元求解器(Implicit FEM solvers)
- 边界条件处理
- Taichi编程语言高级特性
Resources:
(开放作业1:实现任意隐式积分器: implicit mass-spring/FEM, PCI-SPH, MPS, …, 并进行显式时间积分器器与隐式时间积分器器对比)
Lec 4 (June 22) Eulerian view 6月22日 欧拉视角
Topics:
- 稳定流体与半拉格朗日输送(Stable fluids and Semi-Lagrangian advection)
- Chorin式压力投影(Chorin-Style projection)
- Staggered网格与零空间(nullspaces)
- Krylov子空间求解器(Krylov-subspace solvers)与共轭梯度法 (Conjugate gradients)
- 用无矩阵(Matrix-free)Krylov子空间方法求解泊松方程(Poisson equations)
- 预条件(Preconditioning)
- 几何与代数多重网格方法(multigrid methods)
Resources:
Lec 5 (June 29) Fast multipole methods and vortex methods 6月29日 多体问题与涡方法
Guest lecturer: Xinxin Zhang 客座讲师: 张心欣
Topics:
- 多体问题以及他们与柏松方程的联系
- 涡方法的乐趣
- 从直观的角度引导同学认识几种不同的快速求和方法
Resources:
相关材料:
简易Vortex方法演示代码 (Lec 4代码包中已包含)
7月11日,开放作业1截止,点评
Homework 2 (最终作业)
- 实现一个可交互的物理模拟器(2D),或⽤⾼质量渲染可视化模拟结果(3D),或进⾏性能优化
- 可以基于⾃己的或别人的Homework 1
Lec 6 (July 13) FEM, linear elasticity, and topology optimization 7月13日 线性弹性有限元与拓扑优化
Topics:
- 弱形式(weak form)与有限元理论入门
- 基于六面体网格(hexahedral grid)的拉格朗日有限元模拟
- 拓扑优化(Topology optimization)
Resources:
Lec 7 (July 20) Hybrid Eulerian-Lagrangian view (1) 7月20日 混合欧拉-拉格朗日视角 (1)
Topics:
- 粒子-网格传输(Particle-grid transfers)
- 粒子元胞法(Particle-in-Cell, PIC)
- 流体隐粒子(Fluid Implicit Particles, FLIP)
- 仿射粒子元胞法(Affine Particle-in-Cell, APIC)与多项式粒子元胞法(Polynomial Particle-in-Cell, PolyPIC)
- 用FLIP与APIC进行流体模拟
- 物质点法(Material Point Method, MPM)基础
Resources:
Lec 8 (July 27) Hybrid Eulerian-Lagrangianw (2) vie 7月27日 混合欧拉-拉格朗日视角 (2)
Topics:
- 移动最小二乘物质点法(Moving Least Squares MPM, MLS-MPM)
- 本构模型(Constitutive models)
- 塑性 (Plasticity)
- 物质点法中的拉格朗日力(Lagrangian forces in MPM)
Resources:
Lec 9 (August 3) High-performance computing and physics engines 8月3日 高性能计算与物理引擎
Topics:
- 现代处理器微结构(processor microarchitectures)
- 内存层级(memory hierarchy)
- 性能调优
- Taichi中的高级数据布局
- Taichi中的稀疏数据结构
Resources:
8月10日空一次,大家完善自己的物理引擎(开放作业2)。
8月15日开放作业2 deadline。
Lec 10 (August 10) Summary 8月10日 大结局
Topics:
- 课程回顾
- 引擎项目最终点评、评奖
- 基于物理的动画中的未解难题
Resources:
Legacy links 陈旧链接
Acknowledgments 鸣谢
课程的顺利进行,离不开同学们的积极参与、助教们的鼎力相助、张心欣前辈的支持、GAMES社区提供平台,在此真诚感谢。