1

比較

http://pastebin.com/vkTJt0sT

左の画像に似た画像をレンダリングしようとしていますが、影と反射に問題があります。

現在、問題を示すためにシャドウ コードのみが公開されています。

ご覧のとおり、赤いボールは緑のボールの近くで影になっているはずですが、奇妙な理由ですべてのピクセルが乱れています。コードの影の部分を閉じると、赤いボールが影なしで正常にレンダリングされます。

この問題の根源は反射にも影響していると思います。ヒントを教えてください。私はそれを失っています。

4

2 に答える 2

4

左の画像がを示していることを考えると、これはシャドウ レイが反射したオブジェクトに当たる典型的なケースです。シャドウ レイのヒット テストを行う場合、レイを生成したサーフェスを除外する必要があります。ソース オブジェクトをシャドウ関数に渡すだけで、無視できます。

この方法は、凸形状に対してのみ機能します。セルフ シャドウを行う形状 (トーラスなど) がある場合は、より一般的である必要があります。通常のアプローチは、イプシロン(浮動小数点エラーの許容範囲) を定義し、それよりも近い交点を無視することです。

もう 1 つのアプローチは、面のどちらにぶつかったかを検出することです。球体にセルフ シャドウを適用しないでください。これは、光線が表面法線と同じ一般的な方向に投射されているためです (つまり、出射する光線と表面法線の内積は正です)。これは影としてカウントされません。

于 2013-07-16T23:17:25.357 に答える
0

解決済み: 説明しにくいアルゴリズムの問​​題がありました。

別の方法は次のとおりです。基本的に、余弦角が 0.0001 より大きいかどうかを確認します。それより大きい場合は、シャドウしません。

于 2013-07-17T10:24:27.643 に答える