Yadi Cao

Forum Replies Created

Viewing 18 posts - 1 through 18 (of 18 total)
  • Author
    Posts
  • in reply to: 作业6补交公告 #6445 Score: 0
    Yadi Cao
    Participant
    2 pts

    问下助教作业6已经批改了么?我的系统中显示678都是暂未批改的状态。

    可能是毕业答辩时期,各位远程处理各种事宜辛苦了,但是还是想知道大概的时间线,还有自己做作业的对不对(●’◡’●)

    in reply to: 大家得大作业做的咋样了 #6444 Score: 0
    Yadi Cao
    Participant
    2 pts

    Loop 细分应该不难,我在公司工作时因为有需求要细化网格实现过一次。最重要的是如何去traverse所有的elements,因为按照obj格式记录的方法,你只能很方便的访问从三角形访问到顶点,反之则不然。这就给细分时标记“编号”带来很大的麻烦。

    比较推荐的是Half edge mesh structure,相信我,用这个结果对Loop 细分,甚至是各种本地/全局网格操作都很有帮助。

    然后我还知道有个存在的作业模板中的某些章节就是实现网格操作的,好像是CMU的大作业模板 scotty 3d你也可以参考一下。

    in reply to: 作业7 OpenMP更新进度条问题 #6091 Score: 0
    Yadi Cao
    Participant
    2 pts

    我这边实现的办法是改变loop的对象由“行和列,i和j”变成直接loop m,然后i j可以由m计算得到,这样就不用担心parfor在哪一层的问题。

    进度条更新我采纳的办法是,只让第一个线城去输出就不会打乱屏幕了。但需要注意怎么根据第一个线程完成渲染的像素数量来估计全局的完成进度,我直接是 进度 = 线程数 * 第一个线程完成像素/总像素数。

    这两步实现下来也不用加锁或者用critical,效率还可以。

    in reply to: 作业7问题 #5683 Score: 0
    Yadi Cao
    Participant
    2 pts

    哈哈哈我之前也有过类似的误解,以为光源部分不受其他外来入射光线的影响,和固定边界条件似的。

    直到我近距离拿着手机的手电筒照了一个红色的瑜伽砖,手机电筒附近也出现了红色的光晕我就意识到这个了。

    in reply to: 作业7 运行后只有黑白两种颜色 #5678 Score: 0
    Yadi Cao
    Participant
    2 pts

    然后均匀采了一片光的dA,这个dA投影到你需要计算的hit point究竟占了多少立体角,就需要考虑它们的相对位置和相对朝向了。辐射传热学里面有非常类似的概念就是视角系数,伪代码里面pdf_light前面的两项就是起了同样的转化作用

    in reply to: 作业7 运行后只有黑白两种颜色 #5677 Score: 0
    Yadi Cao
    Participant
    2 pts

    pdf_light应该是光源采样的概率密度,光源是个平面,平面上面均匀任取一点就是1/面积啦
    :)

    in reply to: 作业7问题 #5676 Score: 1
    Yadi Cao
    Participant
    2 pts

    至于“天花板是全黑的”楼上说的很清楚了,是个巧合,这次恰好天花板和面光源共面。
    不共面的话,有些部分可能会被照亮的

    This post has received 1 vote up.
    in reply to: 作业7问题 #5675 Score: 0
    Yadi Cao
    Participant
    2 pts

    接上楼MrPhD说的“如果打到的是光源/emit=true就处理一下”,他也帮我在一个类似的帖子里解答过,搬运一下希望能帮到你
    详细一点说,处理应该指的是,如果按照原来的算法,在光源上sample一点和hit point(假设也在光源上)直接连接的向量是在平面内的,与光源normal始终垂直,因此计算的direct光照就是零了(也就是光源全黑)。为了避免这种错误,可以直接把这种情况的direct光照先赋值为光源的强度就好,之后的操作照旧。

    in reply to: 作业7:triangle.hpp函数更新 #5673 Score: 0
    Yadi Cao
    Participant
    2 pts

    emit应该是看打到的object是不是发光体
    tcoord看起来像纹理的坐标(texture coordinate),如果不涉及应该用不着。我记得之前有次作业(6?)也是虽然有根据纹理来更新的函数,整个项目没有涉及纹理,也就不需要用到了

    in reply to: Final Project发布公告 #5650 Score: 0
    Yadi Cao
    Participant
    2 pts

    bravo!!!

    in reply to: 作业7光源纯黑原因 #5600 Score: 0
    Yadi Cao
    Participant
    2 pts

    我犯了个错误,光源也是物体之一,那更简单了,直接看接触的最近的物体发不发光就好了。

    感谢楼上大佬帮忙解答

    in reply to: 大佬请帮帮忙,开始 castRay #5599 Score: 0
    Yadi Cao
    Participant
    2 pts

    哇居然是object继承的,那好办了,看最小的t属于发光的还是不发光的就好。
    发光的直接赋值(也不知道这么暴力对不对,我对光源的理解就像固定边界条件是的)

    in reply to: 作业7光源纯黑原因 #5598 Score: 0
    Yadi Cao
    Participant
    2 pts

    我之前在和另一个帖子的讨论中提出了(一个错误的)解决方法:就是如果一束从眼睛出发的光,没打到任何object,就和光源再去判断一下会不会打到(且无遮挡)。
    但现在觉得这方法可能不行,就比如这个Cornell box,面积光源在箱子顶端,也就是说发射向光源的ray是会打到箱子的。
    因此我想到了个很暴力的办法,就是path tracing前,对当前像素只看有没有和光源(未遮挡)直接接触,如果是就直接写为光源的值也没必要再继续追踪,如果否再get intersect ,shading。
    不知道可行不可行,有没有更聪明的办法

    in reply to: 大佬请帮帮忙,开始 castRay #5588 Score: 0
    Yadi Cao
    Participant
    2 pts

    关于3)我猜测应该是判断从眼睛出发的光线没有和scene任何物体相交后,可以去和每一个光源再去判断一下就好。

    很类似把直接光照那部分的内容提取到外面来了(本来是在与物体相交后,才渲染,在渲染函数里面)

    不知道理解的对不对

    in reply to: Lecture 18 课件 #5363 Score: 0
    Yadi Cao
    Participant
    2 pts

    夏同学之前是不是用浏览器下载的,我用chrome下载的时候也是会遇到必须先加载预览(经常失败)然后再保存,pdf大了就很难存下来。
    Ubuntu下可以考虑用wget软件去下载,虽然会持续比较久,但一般是可以稳定下载完的。

    ·wget https://sites.cs.ucsb.edu/~lingqi/teaching/resources/GAMES101_Lecture_18.pdf·

    Attachments:
    You must be logged in to view attached files.
    in reply to: 作业6提交的时候把模型文件夹给误删除了 #5361 Score: 0
    Yadi Cao
    Participant
    2 pts

    你说的对,昨晚快睡着前发现问题的,已经晕晕乎乎了。今早发邮件去说明了,感谢提醒

    in reply to: 作业6提交的时候把模型文件夹给误删除了 #5343 Score: 0
    Yadi Cao
    Participant
    2 pts

    好像不支持.MD的上传,在这儿贴一份纯文本吧不然助教可能会很难找怎么复现我的结果。清理和readme的十五认错了,希望不要被认为是没完成作业就好。教训,大家千万不要赶deadline了😂

    —readme YadiCao—-

    1. 格式与编译:正确

    ./Make && ./Clean are easy scripts

    2. 包围盒求交集:正确。融合了之前的作业,并且改正了一个概念的错误,之前的作业里面似乎误以为光的方向要减去眼界位置,而恰好上次作业的眼睛在原点罢了,仔细想想才觉得是多此一举。

    3. BVH加速:正确。为了具体观测时间增加了毫秒的输出。

    4. SAH分割:
    正确但时间变慢了,我用的是面积估计概率然后KDTree划分,但最终时间还是从1400ms变成了1600ms。这里的面积指的是xy面的面积,而不是总面积。原因是光和z方向太接近平行了,在z方向分割会导致不必要的overlap。
    还有几点是想做的,但赶deadline没做完。1. SAV下最终leaf node不一定只能包含一个三角形,如果一个node里面的三角形已经足够少,而分割带来的收益也不够大时 (min estimated Cost after partition > raw Cost)则应该终止划分,在BVH.cpp 272~279 行有一些TODO note。 2. 可以把光线的方向性质带进来,就比如这次案例,光线几乎和z平行,那么空间划分时z方向就不划分了。

    * 我把models误删了!求帮忙拷贝一份回来再测试,求轻拍。
    * 为了方便测试加入了简单的输入接口,输入的第二个参数是输出图片的路径,第三个则控制是否使用SAH,因此想要获取和提供的images一样的结果,你只需分别运行以下命令

    假设你在source目录:
    rm -r images
    mkdir images
    ./Clean
    ./Make
    cd bin
    ./RayTracing ../images/bunny.ppm
    ./RayTracing ../images/bunny-SAH.ppm SAH
    cd ../images

    in reply to: 作业四得到这样的结果是否满足要求? #4628 Score: 2
    Yadi Cao
    Participant
    2 pts

    我引用了一下SPH里面计算一定距离r下,强度或者叫影响的概念
    weight(r)=(r/re)^n – 1.0, bounded in [0,1]
    这样子的话,给定了一个px,py时它四周(ajd)最近的四个渲染的像素点都可以计算出自己受到了“多少”颜色的影响
    color_adj = weight*color_p (如要考虑原始的背景颜色不是黑色,可以参考 @戴皓天 的办法去和背景已经存在的颜色再加权平均)

    在SPH计算里面,重复在同一个像素点上的影响最终是要累计加和平均的,但我在这里对重复计算的就是取了最大值,结果已经不错了,线的粗细没有变粗,而且没有改变初始的dt,也已经比较连续了。大家可以参考一下,附件是开启和不开启anti-aliasing的对比图

    This post has received 2 votes up.
    Attachments:
    You must be logged in to view attached files.
Viewing 18 posts - 1 through 18 (of 18 total)