3 / 4 衝突と吸着による運動の変化
表面に触れた後の速度を、目的に応じて考えます。
衝突は進み方を変える
衝突は、表面を突き抜けないよう位置や速度を調整する処理です。吸着は、表面へ近づけて周辺へ留める処理です。同じ距離を使っても、判断する条件と更新する値は異なります。
外側の粒子を表面へ引く方向と、表面の外向き法線は逆向きになる場合があります。Sample Signed Distance Fieldのdirectionは最寄りの表面へ向かう方向です。外向き法線として無条件に扱わないでください。
強く引けば安定するとは限らない
表面を座標x=0、外側をxが正の側とした一軸の例で考えます。粒子はx=0.1にあり、表面へ近づく方向はマイナスです。この例では距離と位置を同じ空間・単位で扱います。
| 1回の移動量 | 更新前のx | 更新後のx | 表面との関係 |
|---|---|---|---|
| −0.03 | 0.1 | 0.07 | まだ外側。距離が縮む |
| −0.1 | 0.1 | 0 | 表面へ届く |
| −0.2 | 0.1 | −0.1 | 表面を通り越して内側へ入る |
速度が0.6単位/秒なら、0.05秒の更新で進む長さは0.03です。同じ速度でも、更新間隔が長ければ1回で進む距離が増えます。位置が内側へ入った後、今度は逆向きへ同じ量だけ引くと、表面の両側を行き来する場合があります。
吸着の最小例では、進む長さを「予定の移動距離」と「表面までの距離」の小さい方にすると、この一軸の例では通り越しません。表面近くでは移動を止める範囲も決めます。衝突で跳ね返す場合は、表面へ位置を戻すだけでなく、表面へ向かう速度を外側へ向け直す必要があります。両者では、表面へ到達した後の速度が異なります。
近づく速さ、表面近くで留まる範囲、更新間隔を分けて考えます。まず接近Maskだけを読み、次に衝突または吸着の一方を確認してから組み合わせます。この一軸の例で距離と更新量の関係を理解してから、曲面や動く表面へ進みます。
確認課題
表面がx=0、粒子がx=0.1のとき、−0.05だけ動かした後の位置と、表面を越えたかを答えてください。
考え方の確認
x=0.05で、まだ外側です。移動前の位置と1回の移動量を足して判断します。
- 粒子がx=0.1にあるとき、−0.03と−0.2の移動後の位置を求め、どちらが表面を通り越すか説明できる。衝突で跳ね返す場合と吸着して留まる場合の、到達後の速度の違いを説明できる。