第21回 Ray Marchingによる表面の探索
3 / 4 命中と探索の打ち切り条件
このステップの目的
上限へ達しただけで命中にしない停止条件を学びます。
近づいたら命中とする
計算では距離が厳密に0になるまで待たず、小さな正の許容値εより近づいたら命中とします。εが0.01なら、外側の距離0.006は命中の条件を満たします。εを大きくすると早く終われても、表面が太ったように見える場合があります。
| 確認したこと | 結果の扱い |
|---|---|
| 距離が許容値より小さい | 命中として終了 |
| 探索する距離の上限へ達した | 対象範囲では未発見として終了 |
| 反復回数の上限へ達した | 未発見として打ち切り、回数不足も検討 |
二種類の上限
表面へ当たらないRayもあるため、進んだ距離の上限と反復回数の上限を設けます。どちらへ達しても「探索終了」ですが、命中が確認できた意味ではありません。回数不足は、表面がない場合と区別して診断する余地を残します。
基本では外側開始を前提にします。内側から始めたとき負の距離をそのままtへ足すと逆へ進むため、同じ手順を無条件に使いません。まず前提と三つの終了条件を表へ書き出します。
条件を変えた確認
直前の球の例を、反復上限1で実行します。一回目にd=2を読みt=2へ移動したところで上限になったとき、命中確認まで済んでいますか。
考え方の確認
移動先のdをまだ評価していないため、この反復手順では命中未確認です。二回目でd=0を評価すると命中になります。終了理由を記録し、到着を予想しただけで命中扱いにしません。
命中・距離上限・回数上限のどれで終わったかを必ず残します。
チェックリスト
- 距離0.006とε0.01を比較し、上限到達を命中と区別できる。
- 変更した条件と、予測・計算した結果を対応付けて説明できる。