我在合并转换时遇到问题。无论出于何种原因,一切都不会按照我的预期进行,而是说实话-所有来回的转换都使我感到头晕。
正如我到处阅读的(恕我直言,尽管很少有明确的解释),转换的主要算法如下:
据我了解,这应该可以解决问题。我很确定我的问题出在尝试计算照明时,因为初始交点和照明算法都使用相同的函数(
obj.getIntersection()
)。但是话又说回来,我不知道。 :(您可以在此处阅读部分代码:
main.cpp,scene.cpp,sphere.cpp,sdf-loader.cpp
如果您需要更多信息来帮助我,请告诉我-也请帮助我! ;)
编辑:
我取得了一些结果,也许有人(通过结果)“看到”了我可能是错误的地方:
未转换的场景:
球形比例(2、4、2):
盒翻译的(0,-200,0):
球面平移(-300,0,0):
球体x旋转(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/
如果您还不知道这种惊人的资源,我建议您使用它,并在您的大学中广为宣传。您的老师应该已经向您指出了这一点。