GAMES103.王华民.01.Intro to Physics-Based Animation
Intro to Physics-Based Animation
- 会介绍一些物理引擎算法(优缺点、对比)
- PBD(Position-Based Dynamics)
- 主动学习很重要
- read more, write more, think more
- 涵盖内容
- 刚体模拟
- 质点弹簧、约束与布料模拟
- 基于有限元的弹性体模拟
- 流体模拟
图形学简介
- What’s computer graphics?
- 3d 世界 \(\to\) 2D 图像
- 3d digital world \(\to\) 2d digital image
- 图形学的方向
- Geometry:几何
- Modeling the 3D world
- Rendering:渲染
- Visualize the 3D world
- Animation:动画
- Animate the 3D world
- Geometry:几何
实时渲染的渲染管线
- 几何建模可以不需要实时,动画和渲染需要是实时的
- 帧率:frame rate
- 游戏(强交互应用):60 fps
- 电影(没有交互):24 fps
- 图形学实时一般的标准帧率:30 fps
- 实时动画和实时渲染是比较难的
- 取舍
- 动画部分做成离线,渲染是实时的
- 游戏的过场动画等
- 电商的展示
- 渲染也做成离线的
- 动画电影(没有实时交互的要求)
- 动画部分做成离线,渲染是实时的
几何
- 三维表示
Mesh
- 网格:Mesh
- 组成部分
- 顶点:vertices(nodes)
- 多边形元素
- 三角形(图形学的渲染管线一般都是基于三角形)
- 多边形(符合人们的设计习惯,CAD 设计软件中会使用,软体模拟中会使用)
- 问题
- Meshing (Delaunay triangulation)
- 希望所有的三角形都是比较正的(60 度)
- Simplification/subdivision
- 简化、细分
- Mesh optimization (smoothing, flows…)
- 网格的优化
- Volume mesh
- 如何处理四面体网格
- Meshing (Delaunay triangulation)
- 类型
- structured mesh
- 有些算法可以利用结构进行优化
- unstructured mesh
- 通用性更强
- structured mesh
Point Cloud
- 点云
- 可以通过扫描得到
- 问题
- 如何从点云中重建出 mesh(点云无法直接用于渲染)
- re-sampling:重新采样
- 原始点云可能稀疏程度不一致,如何对其重新采样让其稀疏程度一致
- neighborhood search
- 周围点的查找
- 给定一个点,如何找到周围的点,算法上会用到
Grid
- volumetric grid:三维的格子
- 体素
- CT 的原始数据就是这样的
- 问题
- 内存消耗可能非常大
- 八叉树(octree)结构的优化
- 如何渲染?
- volumetric rendering
- 内存消耗可能非常大
渲染
- 真实感渲染:Photorealistic
- 非真实感渲染:Non-Photorealistic
- 真实感渲染的两种类型
- 基于传统渲染管线
- 基于光线追踪
- 材质获取
- 材质扫描:material scan
- photo
- vrscan
- 构造 BRDF
- 材质扫描:material scan
- 人体扫描:body scan
- 曲面的,而不是平面的
- 技术:light stage
- 下图:Body Scan by a Light Stage
- 不同摄像头拍摄不同灯光、不同角度
- 人体:BSSRDF(次表面散射)
动画
- 两类动画
- 人体动画:character animation
- 物理动画:physics-based animation
- 虚拟数字人
计算机图形学的应用
What’s computer graphics used for?
游戏(games)
特效(special effects)
娱乐行业:抖音等
设计
制造业(mechanics)
建筑行业(architecture)
艺术(art)
时尚产业(fashion)
设计虚拟服装
- style3D(凌迪科技)的软件
电商(智能制造)
- 产业链
虚拟衣服的渲染
VR、AR、metaverse(元宇宙)
什么是动画
- What’s physics-based animation?
动画的流程
- 有很多时间点,在这些时间点上更新物体的状态
- 可能需要更新的状态
- position/orientation:位置朝向等
- velocity:速度
- appearance:外观
- 变色龙
- density:密度
- 特效
- time step(步长):两个时间之间的间隔
- 可以和帧率相同
- 也可能一帧之内模拟好几次
物理模拟的 4 大方向
- rigid bodies:刚体模拟
- cloth and hair:衣服和头发
- 窄细的物体
- soft bodies:弹性体、软体
- fluids:流体和气体
- 表示方式
Contents | Effects | Mesh | Particle | Grid |
---|---|---|---|---|
Rigid Bodies | Contacts | \(\checkmark\) | ||
Rigid Bodies | Fracture | \(\checkmark\) | meshless | |
Cloth and Hair | Cloth | \(\checkmark\) | contact | |
Cloth and Hair | Hair | \(\checkmark\) | contact | |
Soft Bodies | Elastic | \(\checkmark\) | ||
Soft Bodies | plastic | \(\checkmark\) | ||
Fluids | Smoke | \(\checkmark\) | \(\checkmark\) | |
Fluids | Drops and Waves | \(\checkmark\) | \(\checkmark\) | |
Fluids | Splashes | ? | \(\checkmark\) | \(\checkmark\) |
刚体、头发布料、软体
- 一般使用 mesh 模拟
- Physics-Inspired Adaptive Fracture Refinement (SIGGRAPH 2014)
- 刚体破碎
- GPU-Based Simulation of Cloth Wrinkles at Submillimeter Levels
(SIGGRAPH 2021)
- 衣服布料模拟
- Descent Methods for Elastic Body Simulation on the GPU (SIGGRAPH
Asia 2016)
- 弹性体
- Example-based Plastic Deformation of Rigid Bodies (SIGGRAPH 2016)
- 塑性形变(永久形变)
- Physics-Inspired Adaptive Fracture Refinement (SIGGRAPH 2014)
- 一些特例
- 实验性质,可能有计算量可能变大、细节处理不好等问题
- 用 particle 粒子去模拟刚体的破裂
- 因为没有 mesh,因此不需要去管破裂之后 mesh 的更新
- avoid remeshing
- Meshless animation of fracturing solids (SIGGRAPH 2005)
- 因为没有 mesh,因此不需要去管破裂之后 mesh 的更新
- 使用 grid 网格的方式去模拟布料和头发
- 简化碰撞的处理
- simplify contact
- 简化碰撞的处理
流体
- 各种各样
- smoke(烟)
- particle、grid
- 可以做成实时的效果(particle)
- drops and wawes(水滴和波)
- 基本上还是个整体
- mesh:实时模拟
- grid:高逼真度的模拟
- Water Surface Wavelets (SIGGRAPH 2018)
- 引入小波,实时模拟,可以和物体有交互
- splashes:水花
- 很复杂,实时比较难
- 基本上基于 particle 和 grid 进行
- 基于 mesh 的比较少,基本上是实验性质
- Versatile Rigid-Fluid Coupling for Incompressible SPH (SIGGRAPH 2012)
hybrid methods
- MPM:Material Point Method
- 粒子和网格结合的方法
- 想要这样子的方法兼具粒子、网格的优点
- 模拟雪(粘滞的物体)
- A Material Point Method for Snow Simulation (SIGGRAPH 2013)
- Coupling
- 怎么样模拟不同性质的物体的之间的交互?
- 例如:水落在衣服上
课程涉及的内容
- What are the topics to be studied in this class?
- 刚体破碎方面会涉及很多 remeshing 的内容
- 游戏引擎中的破碎一般是预计算做的
- Unity 不支持实时的破碎
- 形变的 3 个阶段
- 弹性形变、塑性形变、破碎形变
- PBD:Position Based Dynamics
- PBD 是预估点的下一位置,然后通过 constrain 把它 project 到最终位置,并用这个位置去更新速度
- Constraint Dynamics:基于拉格朗日算子的,基于约束的模拟
- mesh 和 grid
- mesh 定义在物体上的
- grid 是定义在整个 3D 场景上的
- 老师个人经历