Home Forums GAMES在线课程(现代计算机图形学入门)讨论区 作业5Primary Ray的理解和计算问题

Tagged: 

Viewing 6 reply threads
  • Author
    Posts
    • #4808 Score: 0
      kingil
      Participant
      1 pt

      有以下两个疑问点:
      1 假设眼睛/camera在(0,0,0),(0,0,-2)有一个立方体。不管什么算法,那么眼睛顺着(0,0,-1)看或者眼睛/头稍微抬起来看,看到的结果肯定是不一样的。为什么算法整个执行过程中没有提及相机观察方向的问题?或者是在哪里我遗漏了?

      这同时也引出了问题:
      2 还是没太明白我算出来的x,y是应该在哪个坐标系下的点的值(减去eye坐标就是primary方向了)?
      为什么dir的z的值是-1?是因为近平面默认z值是-1还是什么意思?
      传入castRay(eye_pos, dir, scene, 0)的dir是哪个空间的光线向量?
      我的理解,最后所有的光照计算,都是在世界空间中完成的,是否有问题?

      困扰一天了,感觉一直在跟渲染管线混淆。有没有人解下惑,多谢了~

    • #4810 Score: 0
      Angus
      Participant
      23 pts

      此时的相机是lookfrom(0,0,0),lookat(0,0,-1)。若想修改为别的值,需要改动较多代码,具体可以参阅《Ray Tracing in One Weekend》的 ch10 Positionable camera。

      x,y 应该是世界坐标系下的值。因为你要生成一个世界坐标系下的 ray。

      dir 的 z 值是-1,因为成像平面在 z=-1 处。这样你求出成像平面上的 x,y 即可和 z 组成一个穿过成像平面上像素中点的 ray。你 normalize 之后就不是-1了。

      • #4857 Score: 0
        kingil
        Participant
        1 pt

        感谢,搞定这个计算了。

      • #8423 Score: 0
        菜鸡互啄
        Participant

        请问下大佬 dir 转化到ndc空间了[-1,1]为啥不需要乘以下 projection的逆变换转化成世界空间,然后算啊

    • #4811 Score: 1
      zhishao
      Participant
      2 pts

      1.本课程默认摄像机观测方向是z轴负方向,貌似在第二或者第三节课讲过,大概是说gaze,lookat方向的部分。

      2.我个人感觉近平面并不是一个跟光栅化完全一致的成像平面。这个平面比较像是我们拿照相机拍了一张照片。这张照片就是远处景色等比例缩小的一个面,不是像光栅化中完全压到1*1*1的盒子内那种。

      这个平面主要的作用是知道每一根生成的光线回照亮什么点,并通过这个来成像。

      z的值是-1的原因,我感觉就是为了计算方便。因为他跟后面的景象是完全等比例的,所以我觉得z的值应该是可以随便取的,不一定非要在-1处成像吧,反正最后都要归一化的。这一点我不能完全确定。

      成像空间我觉得就不是在世界系下吧。就拿作业里,世界坐标Y轴全是正的,但是成像那个平面y是从scale 到 – scale的。

      This post has received 1 vote up.
      • This reply was modified 4 years ago by zhishao.
      • #4858 Score: 0
        kingil
        Participant
        1 pt

        多谢了,解释的很好。

    • #4814 Score: 0
      kingil
      Participant
      1 pt

      感谢以上两位的解释。我忽视了相机一直默认看向-z方向的问题。光栅化里的矩阵计算也有体现。那就是说,在光线追踪中,这个计算也体现在了计算x,y值的过程中。那我知道怎么计算了。
      也就是说,现在计算x,y对应到世界空间的点,相比于在光栅化过程中从screenspace逆变换回去到worldspace的计算,大大简化/简单处理了到视界坐标的计算,而不用再从screenspace–>齐次空间–>view space –>world space一个个逆变换回去。
      (由于相机在原点、看向-z等,有很多近似的过程不用处理,毕竟我们只需要一个简单的方向)

      再次感谢以上两位。

      • #6602 Score: 0
        smile_zyk
        Participant

        请问一下为什么y要取反啊,这让我很疑惑啊

    • #4853 Score: 0
      kingil
      Participant
      1 pt

      平面显示的不对,有人能提供下思路吗?可能会是哪里出了问题。

    • #4855 Score: 0
      kingil
      Participant
      1 pt

      平面显示的不对,有人能提供下思路吗?可能会是哪里出了问题

      Attachments:
      You must be logged in to view attached files.
    • #4859 Score: 0
      Bear
      Participant
      -11 pt

      你这更像求交出了问题啊,我那会也是平面折了

      • #4880 Score: 0
        kingil
        Participant
        1 pt

        对,是求交点的时候出得问题。已经搞定了。注意顶点对应好就OK。

Viewing 6 reply threads
  • You must be logged in to reply to this topic.