首页 GAMES104-Lecture 11 物理系统:高级应用
文章
取消

GAMES104-Lecture 11 物理系统:高级应用

Character Controller

  • 是一个反物理的系统,摩擦力几乎是无限大的

Build a Controller

  • Kinematic Actor:不会受物理规则影响

  • Shape:胶囊、box、convex

    • 胶囊外有一层边缘,防止和其他物体过近
  • Collide with environment

    • 碰到环境比如墙体不能前进时,会滑一下
  • Stepping:上台阶的时候,把capsule往上添加offset

  • Slope limits:坡度限制

  • Controller Volume Update:在不同姿态controller体积要变换

  • Controller Push Objects

  • Standing on Moving Platform:当controller和一个物体站在一起时,会在逻辑上将二者绑定起来

Ragdoll

  • 布娃娃系统

  • Map Skeleton to Rigid Bodies:把骨骼绑定上Rigid Bodies

pF8aiyF.jpg

  • 需要让TA细调constraints(约束)

  • 用的是animation retargeting的思路,去把ragdoll和原骨骼匹配

    • 参与的节点可以一一对应

    • Leaf joints沿用之前的animation就行

    • 过渡性骨骼是由前后两根ragdoll的pose插值出来的

pF8Uziq.jpg

  • 不可能永远是ragdoll,是动画和ragdoll混合的,会渐进地从动画转变到ragdoll

  • Powered Ragdoll:Physics-Animation Blending

Clothing

  • Animation-based Cloth Simulation:往衣料放上骨骼

  • Rigid Body-based Cloth Simulation

Mesh-based Cloth Simulation

  • Physical Mesh的面片数要低于Render Mesh好几倍

  • Paint Cloth Simulation Constraints:会在每一个Physical Mesh上画出每一个顶点可以移动的范围

  • Mass-Spring system 弹簧质点模型

    • 要用spring damping的力(类似摩擦力的东西,防止数值爆炸)

    • 对每一个点受力:重力+风力+空气阻力(取决于速度)+周边所有的弹簧施加的力(弹力和damping力)

    pF8aPQU.jpg

    • Verlet积分:将速度转换成位置,数学是等价的,但是位置比速度更稳定

    pF8apWV.jpg

  • Position Based Dynamics(PBD)

    • 拉格朗日数学

    • 把所有的力学关系描述成了数学的约束,用约束直接解出位置

  • Self Collision

    • 自穿插问题

    • 加大布料的厚度

    • 把布料仿真的解算得更细,拆出substeps,设置一个maximal speed,在每一个substep检测不要插得太深,弹出来

    • 在布料里面设置一个负的立场,给进入里面的点推出去

Destruction

  • Chunk Hierarchy:把碎片组成一个树状结构

pF8aSJ0.jpg

  • 每一层之间的碎片是有连接关系的,是一个图,edge的权重就是硬度,当冲量/硬度超过阈值就会破碎

  • damage计算,当打到一个点后,力会以圆形分散出去

pF8a9zT.jpg

Build Chunks by Voronoi Diagram

  • 在空间中随机撒几个种子,把空间分割成到每个种子距离都对等的边界(每个点作为圆心,不断增加半径,直到互相碰到,就形成边界)

  • 3D Mesh中

    • 使用 Delauny Triangulation方法生成新的三角形

    • 需要新的texture和coordinates来处理断口处的纹理

  • 可以设置不同的断裂模式:比如均匀、极化

  • 当碎块碎了之后会执行很多回调函数,比如出发音效、粒子效果、navigation更新

  • Issues:

    • 碎片多了开销大,因为每个碎片都要互相作用,互相做解算
  • 著名破坏系统应用:NVIDIA Blast、Havok Destruction、Chaos Destruction(Epic)

Vehicle

  • 载具模型:上面一个缸(车体),下面是轮子(弹簧,悬挂系统)

  • Traction Force:驱动力

    • Engine会输出一个扭矩,扭矩大代表加速大

    • 会写一个发动机转速、油门、扭矩之间的关系

    • 变速箱、差速器把扭矩拆分到各个轮子

    • 有了扭矩就可以算出驱动力

  • Suspension Force悬挂力

  • Tire Forces轮胎力

    • Longitudinal force:径向力

    • Lateral force:切向力

  • 重心

    • 太靠前就会不太稳定,飞出去的时候,会头朝下

    • 会对转弯有影响,靠前的话转向力就会不足,因为转向力臂不够大,扭矩不够

  • Weight Transfer

  • Steering angles:外侧轮转的少,内测多,因为车本身有宽度

    • Ackermann steering
  • advanced wheel contact

    • single raycast

    • sphere raycast

Advanced:PBD/XPBD

  • 拉格朗日力学:把力学关系描述成一系列的约束,用约束反向定义运动

  • 圆周运动约束:

    • 位置约束:位置的模长-半径=0

    • 速度约束:位置约束关于x的导数乘以圆周运动的速度=0

    • 这个J就是夹克比(Jacobian)矩阵

    • Jacobian矩阵更多的是表达一个趋势的变化量(感觉跟梯度下降很相似)

  • 弹簧约束

  • PBD-Constraints Projection

    • jacobian矩阵就是算出当前姿态下,每一个joints需要进行扰动的趋势

    • 然后不断迭代地去扰动(感觉像梯度下降找到最优解)

    • 优点:解收敛快、稳定

  • Extended Position Based Dynamics (XPBD)

    • 硬约束、软约束
本文由作者按照 CC BY 4.0 进行授权