nightwatch

Forum Replies Created

Viewing 25 posts - 1 through 25 (of 25 total)
  • Author
    Posts
  • in reply to: 作业2的MSAA优化,一般运行多久可以得出结果 #7326 Score: 0
    nightwatch
    Participant
    3 pts

    msaa的计算量近乎是无抗锯齿的N倍(N个采样点的情况下),但是也不会出现很久的情况,在现代CPU的计算能力上应该是近乎秒出结果。

    in reply to: 请问如何理解这两个公式中的cos #6590 Score: 0
    nightwatch
    Participant
    3 pts
    in reply to: 请教一个光栅化三角形重叠的问题 #6577 Score: 0
    nightwatch
    Participant
    3 pts

    你会碰到一种叫作z-fighting的现象,表现出来就是两个三角形的内容不规则的交叉出现.
    如果你规定这两个三角形深度完全一样,就一定会出现这个现象, 并且这种情况是无解的.

    渲染中碰见的z-fighting现象一般是因为浮点数精度不够,导致两个本来应该错开的三角形在计算后因为浮点误差而重叠. 这种情况的z-fighting是可以补救的: 使用更高精度的浮点数, 或者在计算深度前稍微移动一个小位移.

    nightwatch
    Participant
    3 pts

    我先抛砖引玉一下,可以试着去把peter sherley的三本Ray tracing in one weekend看完,前两本书的内容课上应该都覆盖到了,第三本里面介绍了课上没讲的重要性采样。但是那本书也有缺点,可能是因为不是严肃的入门书,
    全书都只有代码,没有理论推导的过程。PBRT在离线渲染上算是绕不开的一本书,比较全面,配图、文字精彩,而且代码质量很好。作者本身也在斯坦福上课,可惜这门课不是公开课,只能找到课件。

    更进阶的还请闫老师来回答了,想听闫老师对Rendering现状、前沿以及未来的看法和介绍。

    This post has received 1 vote up.
    in reply to: 作业7的提高题踩得一些坑(慢更中) #6026 Score: 0
    nightwatch
    Participant
    3 pts

    可能是对球面的采样不够。加spp到1024看看,或者做对球面的重要性采样,引导更多光线到球面上。

    in reply to: 关于路径追踪Debug #6025 Score: 0
    nightwatch
    Participant
    3 pts

    好奇这个GUI是用什么做的

    in reply to: 作业七的结果没有示例中的亮度高 #5902 Score: 1
    nightwatch
    Participant
    3 pts

    你可以把图片切成几个小块,然后分给不同的线程,渲染完了以后合并到framebuffer里面去。我的i7 4820H, 512×512 128spp,开O3以后应该在40秒左右渲染完

    亮度不够可能是因为光线弹射到了物体的表面里面(浮点误差,然后这条光线就没了,所以你在检测光线与物体相交的时候要注意避免和物体自相交。

    This post has received 1 vote up.
    in reply to: 作业7的提高题踩得一些坑(慢更中) #5881 Score: 0
    nightwatch
    Participant
    3 pts

    我也是在1e-2,球面才开始无自相交

    in reply to: 作业7的提高题踩得一些坑(慢更中) #5880 Score: 0
    nightwatch
    Participant
    3 pts

    虚拟机这么慢的? 我15年的小破本,实机全核心只要十几秒就渲染完了,16spp,512×512。

    in reply to: ssp=1 毫无噪点?? #5736 Score: 0
    nightwatch
    Participant
    3 pts

    图片看起来好像是对的。 从直观的角度想一想,直接从光源采样,光线没有弹射的话,光源怎么能照亮和它同一个平面的天花板呢?

    in reply to: 作业7的提高题踩得一些坑(慢更中) #5731 Score: 0
    nightwatch
    Participant
    3 pts

    cook-torrance模型在learnopengl的pbr一节有定义,看懂了DFG的定义直接翻译公式就行,效果很好。

    in reply to: ssp=1 毫无噪点?? #5730 Score: 0
    nightwatch
    Participant
    3 pts

    因为你只实现了直接采样光源,而且实现的还有点问题。右边的方块的右侧面应该是绿色的,这才能体现全局光照。

    nightwatch
    Participant
    3 pts

    这是个标准的几何分布吧? 设rr的概率是p,停下来的概率是(1-p),数学期望是1/(1-p)。

    This post has received 1 vote up.
    in reply to: 作业7的提高题踩得一些坑(慢更中) #5544 Score: 0
    nightwatch
    Participant
    3 pts

    C++线程库其实挺好用的。多线程的主要注意点,一个是分开的线程渲染完了以后,加到framebuffer的时候要加锁,其次是updateprogress进度条函数要加锁,最后是get_random_float()这个函数要保证thread_local,不然每一个线程里面的伪随机序列是一样的。

    cook-torrance还没搞出来的菜鸡路过。

    in reply to: 作业6 提高题结果比较(提升似乎有限?) #5102 Score: -1
    nightwatch
    Participant
    3 pts

    比建树时间的话,naive版本的要优化后,用std::nth_element才能比,现在用的std::sort,上来就是O(nlogn)的复杂度。我用g++ O3的话,用你的模型,渲染时间差不多,基本上都是14秒,差别不是很大,12个bucket。

    This post has received 1 vote down.
    in reply to: 图形学方向 #4988 Score: 0
    nightwatch
    Participant
    3 pts

    大的方向rendering, modeling, simulation和animation. 其他的还有3d printing, virtual/augment reality, visualization子类的方向。
    刘利刚老师有一篇好文”什么是计算机图形学?”,可以找来看看。

    in reply to: Ubuntu中无法将文件拖出到主机 #4909 Score: 0
    nightwatch
    Participant
    3 pts

    virtualbox的拖放功能一直有这种不痛不痒的毛病
    最好是开共享文件夹,好处还是有的,代码存在共享文件夹里,windows和linux都可以编辑。

    nightwatch
    Participant
    3 pts

    像素增加到一定阈值以后开始出现问题,下面的格子出现了跳格子着色的问题,猜测是浮点数导致的。稍微debug了一下
    框架里的set_pixel传入的是浮点数point
    void rst::rasterizer::set_pixel(const Eigen::Vector3f& point, const Eigen::Vector3f& color)
    {
    auto ind = (height-1-point.y())*width + point.x();
    frame_buf[ind] = color;
    }
    第二行改成
    auto ind = (height-1-int(point.y()))*width + int(point.x());
    就可以了

    This post has received 1 vote up.
    in reply to: 问一下大家对实时的三维重建的看法 #4659 Score: 0
    nightwatch
    Participant
    3 pts

    这个话题已经超过这门课的内容了吧,属于cv/cg比较模糊的边界了
    据我所知,前两年比较有影响力的工作应该是stanford做的BundleFusion。
    效果youtube上有演示

    nightwatch
    Participant
    3 pts

    作业里面有提示呀。周围四个像素按距离插值颜色,与原有的像素颜色混合。思路基本上和作业2的抗锯齿差不多,还少了zbuffer的问题。

    This post has received 2 votes down.
    in reply to: 关于世界坐标和局部坐标转换的问题 #4400 Score: 1
    nightwatch
    Participant
    3 pts

    我差点被你这个图绕进去了
    简单的说,假如有两个向量V,两个不同的坐标系,a,b:
    V_a = Transform_b * V_b
    这个很容易理解,关键是这个Transform_b是怎么来的。Transform_b 是 b坐标系的三个坐标基,在a坐标系的表示。

    问题在这里,我们已知的t,b,n都是在世界坐标系下的t,b,n,是相对于世界原点而言的。所以这决定了推导公式的方向是从Local -> World来推导。
    所以 local坐标系中的(1,0,0)对应世界坐标系的(tx,ty,tz)
    即 [t,b,n] = T * I , 将局部坐标转成世界坐标系需要乘以TBN

    This post has received 1 vote up.
    in reply to: 作业2和作业3 get_index函数为什么不一样 #4386 Score: 0
    nightwatch
    Participant
    3 pts

    作业2的感觉是对的
    Bug fix忘了合并进作业3吧

    in reply to: 关于几个思路问题(学习习惯与学习方法) #4045 Score: 1
    nightwatch
    Participant
    3 pts

    1.当大家拿到代码框架的时候是如何理解框架?
    无它,唯眼熟尔

    2.关于Eigen库的api调用问题,遇到一个api可能根本没用过,大家是如何获知这个api的使用方法的?
    查eigen-quick-reference参考手册

    3.这个问题可能跟上面的问题有点相反,就是我想要一个功能的api,想知道Eigen库中有木有,怎么操作?
    查参考手册
    重点查Martrix和Geometry模块的手册就行了
    或者在stackoverflow搜索

    4. 可能有时候并不知道有现成的api可以调用,大家是如何知道有哪些api可以调用的
    C++标准库中数学有关的库主要是cmath和numeric

    eigen带的功能请看第二点

    5.当大家编译报错时,是如何定位问题根源的
    eigen是模板库,在C++20的concept出来之前编译报错问题暂时得不到改善。
    做作业都是填充几个函数,修改的代码量不多,多观察一般能看出来哪里有错。
    IDE偶尔会给出比较准确的提示,在xx行的模版实例化出错。

    6.当大家得出的结果与正确的输出结果不匹配时,大家是如何排查问题或者Debug的?
    1. 输出到图片,用可以获取鼠标指针下的RGB图片值的图片浏览器,可以帮忙诊断一些问题
    2. 写一点代码就编译一下看一下结果
    3. debugger在图形学的环境下不好用,太慢。建议打log的形式来分析。
    4. 用静态分析工具可以排除一些低级debug
    5. 可视化一些变量,比如法向量可以转为RGB可视化

    This post has received 1 vote up.
    in reply to: 关于矩阵运算库的选择问题 #3098 Score: 0
    nightwatch
    Participant
    3 pts

    glm和eigen都是header-only的数学库。
    cmake添加glm只需要1行
    find_package(glm REQUIRED)
    和引入eigen并没有明显区别。

    OpenGL的工程选用glm的比较多(个人感觉),因为glm的语法是照着glsl的做的,和glsl shader是无缝衔接的。

    in reply to: 关于透视投影矩阵的问题 #3040 Score: 0
    nightwatch
    Participant
    3 pts

    那个1和-1和左右手坐标系有关系,OpenGL在NDC里面是左手坐标系,闫老师推导过程中都是用的右手坐标系。

Viewing 25 posts - 1 through 25 (of 25 total)