4

変換を組み込むのに問題があります。何らかの理由で、すべてが思うようには進んでいませんが、正直に言うと、前後のすべての変換にはかなりめまいがします.

私がどこでも読んだように (明示的な説明はめったにありませんが)、変換の原則的なアルゴリズムは次のとおりです。

  • 変換行列の逆数で光線 (原点と方向) を変換します
  • 結果の Intersection-Point を変換行列で変換します
  • 逆の転置を使用して、交差点でオブジェクトの法線を変換します

私が理解したことから、それはうまくいくはずです。最初の交差点と照明アルゴリズムの両方が同じ関数 ( ) を使用するため、照明を計算しようとすると問題が発生することは間違いありませんobj.getIntersection()。しかし、繰り返しになりますが、私にはわかりません。:(

ここで私のコードの一部を読むことができます:

main.cppscene.cppsphere.cppsdf-loader.cpp

私を助けるためにさらに情報が必要な場合はお知らせください-そして私を助けてください!;)

編集:

私はいくつかの結果を出しました、おそらく誰かが私が間違っているかもしれないところを(結果によって)「見る」:

未変換シーン:

未変形シーン

スケーリングされた球 (2,4,2):

スケーリングされた球 (2,4,2)

翻訳されたボックス (0,-200,0):

翻訳されたボックス (0,-200,0)

変換された球 (-300,0,0):

変換された球 (-300,0,0)

球体 x 回転 (45°):

球体 x 回転 (45°)

4

1 に答える 1