• This topic has 7 replies, 4 voices, and was last updated 4 years ago by ma.
Viewing 2 reply threads
  • Author
    Posts
    • #3530 Score: 0
      Songsong
      Participant
      4 pts

      编程小白,老师讲的都能明白,具体的一些实现都已实现,但是到了目前需要遍历像素点比对的地方卡住,不知道像素存在哪里又该怎么调用呢。。

    • #3546 Score: 0
      Bear
      Participant
      -11 pt

      在 TODO 的地方补充代码就好了呀。。。

      • #3551 Score: 0
        Songsong
        Participant
        4 pts

        主要是不知道怎么循环调用像素这个概念。。

    • #3555 Score: 0
      戴皓天
      Participant
      9 pts

      像素存在auto v = t.toVector4();
      这个v存了三个vector4f,分别对应每个三角形的三个点,举个例子(v[0])[0]就是读取存在v里的第一个点的x坐标
      frame_buf[]存的是颜色
      depth_buf[]存的是深度
      给get_index(int x, int y)传像素坐标可以获得在frame_buf、depth_buf中对应的数组下标

      循环调用的话就循环v里的三个点呗,每次传来的都是三个点,顺序的话是按照main.cpp里面的

      std::vector<Eigen::Vector3f> pos
      {
      ...
      };

      的顺序,按顺序每三个点放在一个三角形里

      • This reply was modified 4 years, 1 month ago by 戴皓天.
      • This reply was modified 4 years, 1 month ago by 戴皓天.
      • This reply was modified 4 years, 1 month ago by 戴皓天.
      • #3561 Score: 0
        Songsong
        Participant
        4 pts

        感谢,我理解是区域内(min到max)每一个像素来比较,对于其中的步长该如何确定呢。对于这块代码还是不太理解

        • #3564 Score: 0
          戴皓天
          Participant
          9 pts

          步长其实就是单位1,点(x,y,z)在屏幕上的坐标就是(x,y),你求出bound box不就是拿x和y的最大最小来取的吗,这个x、y其实就是一个像素左下角的位置,单位就是单位1,1×1就是一个像素,(x+0.5,y+0.5)就是一个像素中心的位置。
          这样的话你便利就直接两层循环,分别取x+i,y+j就是bound box里各个像素的左下角位置了

          • #3569 Score: 0
            Songsong
            Participant
            4 pts

            谢谢大佬了!这就去试试

          • #4840 Score: 0
            ma
            Participant

            你好,打扰一下,想接着这个问题请教。
            我看到rasterizer.cpp 文件最后有一个rst::rasterizer::get_intex函数,这个似乎是作业中提到的整数索引。确定像素是否应该按这个索引?这个最后返回的值你知道是什么吗?该如何用索引建立和像素的关系?

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