gpt4 book ai didi

c++ - 光线追踪:转换问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:23:28 26 4
gpt4 key购买 nike

我在合并转换时遇到问题。不管出于什么原因,一切都没有像我想的那样进行,但老实说——所有的来回变换让我很头晕。

正如我到处阅读的那样(虽然明确的解释很少见,恕我直言),转换的主要算法如下:

  • 用变换矩阵的逆变换射线(原点和方向)
  • 用变换矩阵变换得到的交点
  • 将物体在交点处的法线转换为逆的转置

据我了解,这应该可以解决问题。我很确定我的问题出在我尝试计算光照时,因为初始交叉点和光照算法都使用相同的函数 (obj.getIntersection())。但话又说回来,我不知道。 :(

您可以在这里阅读我的部分代码:

main.cpp , scene.cpp , sphere.cpp , sdf-loader.cpp

如果您需要更多信息来帮助我,请告诉我 - 请帮助我! ;)

编辑:

我做了一些结果,也许有人“看到”(通过结果)我可能错了的地方:

未转换的场景:

untransformed scene

球体缩放 (2,4,2):

sphere scaled (2,4,2)

翻译框 (0,-200,0):

box translated (0,-200,0)

转换后的球体 (-300,0,0):

sphere translated (-300,0,0)

球体 x 轴旋转(45°):

sphere x-rotated (45°)

最佳答案

一般来说,对于计算机图形学中的转换,我建议您看看 scratchapixel.com,尤其是本课:

http://scratchapixel.com/lessons/3d-basic-lessons/lesson-4-geometry/

还有这一个,您可以在其中看到如何使用变换(矩阵)来变换光线和物体:

http://scratchapixel.com/lessons/3d-basic-lessons/lesson-8-putting-it-all-together-our-first-ray-tracer/

如果您还不知道这个令人惊叹的资源,我建议您使用它,也许可以在您的大学里宣传一下。你的老师应该已经向你指出了。

关于c++ - 光线追踪:转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18418855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com