Home Forums GAMES在线课程(现代计算机图形学入门)讨论区 作业7:castray函数怎么取着色点p?

Viewing 4 reply threads
  • Author
    Posts
    • #5463 Score: 0
      condyy
      Participant
      2 pts

      如题
      给了参数ray,那我们的着色点p是不是t*direction+origin?
      我看完了samplelight函数这个函数的实现,但不理解它提供的是什么?
      另外是否block是不是用intersectP来实现?

    • #5464 Score: 0
      MrPhD
      Participant
      1 pt

      p的话,你用intersection(ray)就可以得到了。

      samplelight可以得到采样的光线和对应概率密度函数,前提你需要创建一个Intersection类型的对象和float型的pdf_light,传到函数里,函数用来赋值,这样就可以得到了采样的光线和对应的pdf了。

      block的话,你从上面采样的位置向p发一个光线,看得到的交点和p是不是一个点(这里牵涉到一个精度问题,这里可以思考一下,为什么存在精度的问题)。

      • #5468 Score: 1
        condyy
        Participant
        2 pts

        哦哦,我差不多明白了!还有个小问题,这个samplelight调用的时候是不是输入自己创建的新的两个变量就可以得到x点了呢?

        This post has received 1 vote up.
        • #5470 Score: 0
          MrPhD
          Participant
          1 pt

          创建一个新的Intersaction对象,然后作为samplelight函数其中一个参数,你仔细看一下samplelight内部怎么执行的就清楚了

          • #5503 Score: 0
            condyy
            Participant
            2 pts

            谢谢,我已经看了,刚刚您说的精度问题我想了一下,是不是指的是vector3f本身能取float数据,如果px光线交点与p点数据大差不差,那么就认为是相同的,原因是本身光线照射也有一定面积?如果是这样的话,应该取多大的delta值来判断相等呢?

    • #5465 Score: 0
      xxrl
      Participant
      1 pt

      ray 的 t 默认不是0么 t*direction + origin = origin 吧
      是否block 我是又做了一次intersect
      这是我现在的结果 好像上面还是有点暗…

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

        加大 spp 试试

    • #5467 Score: 0
      Angus
      Participant
      23 pts

      另外是否block是不是用intersectP来实现?

      可以试试 ray 的 t_min 和 t_max 哦。

      • #5469 Score: 0
        condyy
        Participant
        2 pts

        谢谢提醒!但是有点不太清楚这里t_min和t_max具体是针对穿过哪个物体的时间?所以这个大概应该怎么用呢?

        • #5472 Score: 0
          Bear
          Participant
          -11 pt

          实际上有个 trick,场景只有一个光源,所以只要判断打到最近的 object 是不是光源就行了,在该情景下就不用考虑精度问题了

          • #5475 Score: 0
            condyy
            Participant
            2 pts

            怎么判断是否是光源呢?是不是hasemit?

        • #5488 Score: 0
          Angus
          Participant
          23 pts

          你想要检测是的光源上采样到的点 x 和 hitPoint 之间有没有遮挡,所以从 hitPoint 出发发射一条 ray。
          t_min 和 t_max 之间就是你想检测有无交点的范围,t_min 是光线刚刚离开 hitPoint,t_max 则是光线刚刚达到 x。

    • #5499 Score: 0
      condyy
      Participant
      2 pts

      还有个小问题,L_dir = L_i * eval(wo, ws, N) * dot(ws, N) * dot(ws,NN) / |x-p|^2 / pdf_light这种式子中的*在两个三维向量间代表什么运算?点乘or叉乘?是在函数中已经重载好的吗?

      • #5635 Score: 0
        禹鹏(助教)
        Keymaster
        9 pts

        L_i 和 eval(wo,ws,N) 是 element-wise product。向量的每个元素分别相乘。

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