第21回 Ray Marchingによる表面の探索
2 / 4 距離に応じたSphere Tracing
このステップの目的
表面を越えない歩幅の条件を理解します。
空いている範囲を使う
現在位置で表面までの距離が2なら、その点を中心とする半径2の内側に表面はありません。Rayの方向へ2進むことができます。移動先で距離を読み直し、同じ処理を繰り返します。このように距離を歩幅へ使う方法をSphere Tracingと呼びます。
前の例では、(0,0,3)で距離2を読み、2進むと球の表面です。Rayが斜めの場合は、一回で表面へ届かず、複数回近づくことがあります。すべての画素が同じ回数で終わるわけではありません。
任意の値を歩幅にしない
この考え方には、実際の表面までの距離を過大に見積もらない値が必要です。単なる白黒ノイズを距離だと見なしたり、変形後も補正せず距離を使ったりすると、表面を飛び越す可能性があります。基本は距離が明確な球で追います。
条件を変えた確認
始点(0,0,3)、方向(0,0,−1)、半径1の球で、t=0の位置・d・次のtを書きます。その後、移動先でdを読み直してください。
考え方の確認
最初は位置(0,0,3)、d=2、次のt=2です。移動先(0,0,1)ではd=0です。歩幅を使って移動することと、移動先で命中を確認することを区別します。
現在位置→距離評価→終了判定→移動の順序を残します。
チェックリスト
- 距離2を歩幅へ使える理由と、任意のノイズでは保証できない理由を説明できる。
- 変更した条件と、予測・計算した結果を対応付けて説明できる。