Home Forums GAMES在线课程(现代计算机图形学入门)讨论区 关于作业6框架中bvh成员的疑问

Tagged: 

  • This topic has 4 replies, 4 voices, and was last updated 4 years ago by V_V.
Viewing 4 reply threads
  • Author
    Posts
    • #5283 Score: 0
      V_V
      Participant
      1 pt

      请问各位大佬,作业6中

      MeshTriangle的成员BVHAccel* bvh; 和 类Scene的成员BVHAccel *bvh; 有啥区别?

      1. 在类MeshTriangle的构造函数里调用了bvh = new BVHAccel(ptrs);
      2. 在类Scene的成员函数void buildBVH();中调用了this->bvh = new BVHAccel(objects, 1, BVHAccel::SplitMethod::NAIVE);

      构造bvh应该是MeshTriangle的构造函数里构建的,那scene里的bvh和MeshTriangle里有啥区别与联系?

    • #5285 Score: 0
      Keneyr
      Participant
      7 pts

      没联系,不同类下声明的成员变量而已。

    • #5554 Score: 0
      sublimation
      Participant
      3 pts

      我推测这个框架应该是不只想要做三角形的,为了其它的也方便。
      scene里的bvh调用了MeshTriangle的成员BVHAccel* bvh。因为scene里面是三角形,如果是Sphere就会调用Sphere的bvh,这样做是为了方便,有一点继承的感觉。

    • #5555 Score: 0
      Bear
      Participant
      -11 pt

      MeshTriangle 里 BVH 只是在各自的 object 上构建了, scene 里那个是为了构建整个场景的 BVH(其实就是找根节点)

    • #5618 Score: 0
      V_V
      Participant
      1 pt

      嗯嗯,对的,scene里面是对objects构建bvh,object里面是对triangles构建bvh,实际计算先针对scene进行ray-object求交,再针对object进行ray-triangle求交。

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