{"id":13671498,"url":"https://github.com/taichi-dev/games201","last_synced_at":"2025-04-05T14:04:51.810Z","repository":{"id":44889010,"uuid":"268549832","full_name":"taichi-dev/games201","owner":"taichi-dev","description":"Advanced Physics Engines 2020: A Hands-on Tutorial","archived":false,"fork":false,"pushed_at":"2020-11-23T06:24:09.000Z","size":37,"stargazers_count":559,"open_issues_count":0,"forks_count":42,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-03-29T13:05:53.639Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/taichi-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-06-01T14:47:01.000Z","updated_at":"2025-03-26T02:22:40.000Z","dependencies_parsed_at":"2022-09-14T04:50:49.994Z","dependency_job_id":null,"html_url":"https://github.com/taichi-dev/games201","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taichi-dev%2Fgames201","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taichi-dev%2Fgames201/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taichi-dev%2Fgames201/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taichi-dev%2Fgames201/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/taichi-dev","download_url":"https://codeload.github.com/taichi-dev/games201/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247345850,"owners_count":20924102,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T09:01:11.149Z","updated_at":"2025-04-05T14:04:51.774Z","avatar_url":"https://github.com/taichi-dev.png","language":"Python","funding_links":[],"categories":["Python","Others","Courses"],"sub_categories":[],"readme":"# GAMES201线上课程：高级物理引擎实战指南2020 \n\n**最新课程主页**：https://yuanming.taichi.graphics/teaching/2020-games201/ (本页面不再更新)\n\n**课件下载（讲义与代码）**：https://forum.taichi.graphics/t/topic/272\n\n**课程回放地址**：https://www.bilibili.com/video/BV1ZK411H7Hc\n\n**课程直播地址**: http://webinar.games-cn.org （直播结束后Bilibili有回放，请点上一个链接）\n\n**建议前置课程**： 高等数学、Python或任何一门程序设计语言\n\n**课程安排**： 共10节课，每周一次。2020年6月1日开始，时间为北京时间晚上8：30-10：00。\n\n**课程作业**： 课程共有三个开放项目。自愿完成。开放项目可以1-3人组队。\n\n开放项目以同学们自由发挥为主，同学们可以自己将代码分享到 https://forum.taichi.graphics/ 论坛进行讨论，互相切磋。每次我们会选择有代表性的几个项目会在下次上课展示、点评。课程最后会进行最终点评、线上颁奖。\n\n## 课程大纲（暂定）\n\n### 第一讲，6月1日 导论\n* 基于物理的动画简介\n* Taichi（太极）编程语言简介\n* 课程与作业安排\n\n（开放作业0：编写你自己的任意Taichi程序）\n\n### 第二讲，6月8日 拉格朗日视角（1）\n\n* 弹簧质点系统（Mass-spring systems）：你的第一个物理模拟器\n* 显式与隐式时间积分器（Explicit/implicit time integrators）\n* 光滑粒子流体动力学（Smoothed particle hydrodynamics）\n* 快速邻居搜索（Neighborhood search）\n\n### 第三讲，6月15日 拉格朗日视角（2）\n\n* 基于四面体网格（tetrahedral mesh）的拉格朗日有限元模拟\n* 隐式有限元求解器（Implicit FEM solvers）\n* 边界条件处理\n* Taichi编程语言高级特性\n\n（开放作业1：实现任意隐式积分器: implicit mass-spring/FEM, PCI-SPH, MPS, ..., 并进行显式时间积分器器与隐式时间积分器器对比）\n\n### 第四讲，6月22日 欧拉视角\n\n* 稳定流体与半拉格朗日输送（Stable fluids and Semi-Lagrangian advection）\n* Chorin式压力投影（Chorin-Style projection）\n* Staggered网格与零空间（nullspaces）\n* Krylov子空间求解器（Krylov-subspace solvers）与共轭梯度法 (Conjugate gradients)\n* 用无矩阵（Matrix-free）Krylov子空间方法求解泊松方程（Poisson equations）\n* 预条件（Preconditioning）\n* 几何与代数多重网格方法（multigrid methods）\n\n### 第五讲，6月29日 多体问题与涡方法\n\n**客座讲师: [张心欣](https://zhxx1987.github.io/)**\n\n* 多体问题以及他们与柏松方程的联系\n* 涡方法的乐趣\n* 从直观的角度引导同学认识几种不同的快速求和方法\n\n7月6日，空一周，实现开放作业1\n\n7月11日，开放作业1截止，点评\n\nHomework 2 (最终作业)\n* 实现一个可交互的物理模拟器(2D)，或⽤⾼质量渲染可视化模拟结果(3D)，或进⾏性能优化\n* 可以基于⾃己的或别人的Homework 1\n\n### 第六讲，7月13日 线性弹性有限元与拓扑优化\n\n* 弱形式（weak form）与有限元理论入门\n* 基于六面体网格（hexahedral grid）的拉格朗日有限元模拟\n* 拓扑优化（Topology optimization）\n\n\n### 第七讲，7月20日 混合欧拉-拉格朗日视角（1）\n\n* 粒子-网格传输（Particle-grid transfers）\n* 粒子元胞法（Particle-in-Cell, PIC）\n* 流体隐粒子（Fluid Implicit Particles, FLIP）\n* 仿射粒子元胞法（Affine Particle-in-Cell, APIC）与多项式粒子元胞法(Polynomial Particle-in-Cell, PolyPIC)\n* 用FLIP与APIC进行流体模拟\n* 物质点法（Material Point Method, MPM）基础\n\n\n### 第八讲，7月27日 混合欧拉-拉格朗日视角（2）\n\n* 移动最小二乘物质点法（Moving Least Squares MPM, MLS-MPM）\n* 本构模型（Constitutive models）\n* 塑性 （Plasticity）\n* 物质点法中的拉格朗日力（Lagrangian forces in MPM）\n\n### 第九讲，8月3日 高性能计算与物理引擎\n\n* 现代处理器微结构（processor microarchitectures）\n* 内存层级（memory hierarchy）\n* 性能调优\n* Taichi中的高级数据布局\n* Taichi中的稀疏数据结构\n\n8月10日空一次，大家完善自己的物理引擎（开放作业2）。\n\n8月15日开放作业2 deadline。\n\n### 第十讲，8月17日 总结\n\n* 课程回顾\n* 引擎项目最终点评、评奖\n* 基于物理的动画中的未解难题\n\n## 助教团队\n\n未来课程的顺利进行，离不开助教同学们的鼎力相助。理论组助教负责在论坛答疑、筛选优秀编程作业：\n\n    夏一鸣\n    史雨宸\n    袁宇杰\n\n技术组助教主要负责与课程相关的Taichi开发与维护：\n\n    杨玄达\n    翟骁\n    曹亚帝\n    禹鹏\n    冯旭东\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaichi-dev%2Fgames201","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftaichi-dev%2Fgames201","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaichi-dev%2Fgames201/lists"}