owned this note changed 5 years ago
Linked with GitHub

你說這隻溫馴的繩嗎? - 涂家銘

約莫半年前,我們嘗試在遊戲裡加入能讓玩家爬上去擺盪的繩子。當時我們還不知道 NVIDIA FleX 可以免費的在 Unity 上使用,傻傻地嘗試了喜歡旋轉跳躍的 Joint ,以及每一個粒子都是一隻 bug 的 Cloth 系統,最後讀了半篇 Position Based Dynamic 論文就開始自幹起繩子。本次將會簡單介紹 PBD 並分享我們自幹繩子的一些腦洞、經驗和理解。

先備知識

須具備基本微積分及物理觀念(大約高三選修程度)、對程式有基本的了解

tags: SITCON 2020 共筆 SITCON 2020 2020 共筆 R3

歡迎大家來到SITCON 2020 ヽ(✿゚▽゚)ノ
共筆入口:https://hackmd.io/@SITCON/2020
手機版請點選上方 按鈕展開議程列表。

請從這裡開始

Outline

  • 遊戲物理
  • 數學 - 數值積分
  • Constraints

遊戲物理

  • 看起來正確就好
    • 遊戲物理不是科學計算
    • 精準
    • 唬爛
    • 穩定

背景知識

  • 加速度不可預測

    • 碰撞、拉扯、浮力、玩家互動

    • 數值積分

      • Euler's method
        • \(\Delta t\)
        • \(x(t + \Delta t) = x(t) + v(t) \cdot \Delta t\)
        • \(v(t + \delta t) = v(t) + a(t) \cdot \Delta t\)
      ​​​​​​​​ApplyForces();
      ​​​​​​​​x += v*dt;
      ​​​​​​​​v += a*dt;
      
      • Semi-Implicit Euler Method
      ​​​​​​​​ApplyForces();
      ​​​​​​​​x += v*dt;
      ​​​​​​​​v += a*dt;
      
      • Verlet Intergration
      ​​​​​​​​ApplyForces()
      ​​​​​​​​{
      ​​​​​​​​    v += a*dt;
      ​​​​​​​​    x += v*dt + 0.5*a*dt;
      ​​​​​​​​}
      ​​​​​​​​v += a*dt;
      ​​​​​​​​x += v*dt;
      
  • Constraint

  • 修正

Select a repo