我在合并转换时遇到问题。无论出于何种原因,一切都不会按照我的预期进行,而是说实话-所有来回的转换都使我感到头晕。

正如我到处阅读的(恕我直言,尽管很少有明确的解释),转换的主要算法如下:

  • 用转换矩阵
  • 的逆来转换射线(原点和方向)
  • 使用转换矩阵
  • 转换所得的相交点
  • 通过反转
  • 的转置来变换对象在交点处的法线

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

    您可以在此处阅读部分代码:

    main.cppscene.cppsphere.cppsdf-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/

    如果您还不知道这种惊人的资源,我建议您使用它,并在您的大学中广为宣传。您的老师应该已经向您指出了这一点。

    10-05 17:52
    查看更多