Skip to content

改訂前の参考解説

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

第21回 Ray Marchingによる表面の探索

1 / 4 Ray上の位置と表面までの距離 ​

このステップの目的

進んだ距離と、次に安全に進める距離を分けます。

二つの距離を区別する ​

Ray上の位置は「始点+長さ1の方向×進んだ距離t」で求めます。tはRayの始点から積み上げた距離です。SDFの値dは、今いる点から最寄りの表面までの距離で、tとは別です。

半径1、中心が原点の球なら、SDFは「原点からの距離−1」です。位置(0,0,3)では2、(0,0,1)では0、原点では−1です。

始点を外側に置く ​

基本では球の外側から探索を始めます。方向(0,0,−1)、始点(0,0,3)でtが2なら、現在位置は(0,0,1)です。方向の長さが1でなければ、tを距離として解釈した移動量と一致しなくなります。

前期の距離との接続 ​

前期第05回の円は「半径−中心からの距離」で、内側を正にしました。今回は「中心からの距離−半径」で、外側を正にします。外側の正の距離を前へ進む歩幅に使うためです。前期の式を流用する場合は符号を反転してから使います。

条件を変えた確認 ​

前期の「内側正」の球の距離が−2の場所を、この回の「外側正」へ変換します。始点(0,0,3)から進んだt=1の位置と、その点のdも求めます。

考え方の確認

符号を反転して2です。t=1では(0,0,2)、半径1の球へのdは1です。tは累積した移動距離、dは現在位置の表面までの距離です。

方向の長さを1、SDFを外側正へそろえて次へ進みます。

チェックリスト
  • 始点から進んだtと、表面までのdを別々に求められる。
  • 変更した条件と、予測・計算した結果を対応付けて説明できる。