Skip to content

改訂前の参考解説

このページは改訂前の教材です。現在の授業の回番号・内容は、後期の授業計画で確認してください。

第06回 SDFによる衝突・接近・吸着

3 / 4 衝突と吸着による運動の変化 ​

このステップの目的

表面に触れた後の速度を、目的に応じて考えます。

衝突は進み方を変える ​

衝突は、表面を突き抜けないよう位置や速度を調整する処理です。吸着は、表面へ近づけて周辺へ留める処理です。同じ距離を使っても、判断する条件と更新する値は異なります。

外側の粒子を表面へ引く方向と、表面の外向き法線は逆向きになる場合があります。Sample Signed Distance Fieldのdirectionは最寄りの表面へ向かう方向です。外向き法線として無条件に扱わないでください。

強く引けば安定するとは限らない ​

表面を座標x=0、外側をxが正の側とした一軸の例で考えます。粒子はx=0.1にあり、表面へ近づく方向はマイナスです。この例では距離と位置を同じ空間・単位で扱います。

1回の移動量更新前のx更新後のx表面との関係
−0.030.10.07まだ外側。距離が縮む
−0.10.10表面へ届く
−0.20.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の移動後の位置を求め、どちらが表面を通り越すか説明できる。衝突で跳ね返す場合と吸着して留まる場合の、到達後の速度の違いを説明できる。