Forum Replies Created
-
AuthorPosts
-
我们原来试过在mac上用g++是行的,你可以参考下面那位同学的回答。
关于clang你看一下你的libc++版本,你试试下面这个命令,我们会得到#define _LIBCPP_VERSION 11000,代表11.0版本。
printf “#include\nint main () {}” | clang -E -stdlib=libc++ -x c++ -dM – | grep _LIBCPP_VERSION 更新一下clang,libc++版本
This post has received 1 vote down.写成第二行那个积分只是为了好看,在实现上没有用这个式子的。
把第二行的式子按第一行拆成两部分,surface的部分如下图所示。他只是为了和volume部分形式一致,写成积分形式,合起来好看一点。Attachments:
You must be logged in to view attached files.看起来像是求GBuffer的过程中深度测试的精度挂了,边角的深度值反了所以有锯齿状的现象。因为我们这边没有出现这样的情况,也没有看到别的同学有这样的情况,如果你没有改动代码的话,我怀疑可能是你浏览器对WebGL支持有问题?
因为l_i的i不是L(i)的i,这里混用了。
l_i的i指的是第i个球谐函数的系数,是个常数。L(i)的i如你所说,是omega_i也就是入射方向。哦哦哦,我大概可能应该理解你们的意思了。
L可以理解为是个向量,K是个矩阵,L=E+KL。我现在举一个参数的例子,从向量L中取1维来看,L[i]=E[i]+K[i:]L[:]。
只是取了一个维度来举例子,不是说左侧的L是L[i],右侧的L是L[:]。This post has received 1 vote up.- This reply was modified 4 years, 8 months ago by slongle(助教).
用这个式子来求,L=E+KE+K^2E+K^3E+…,这个在第30页
循环递归其实是无所谓的,实现起来会拿russian roulette来保证unbias,并且限制上面这个式子的项数离线渲染的话,veach的thesis和pbrt都是很不错的材料,veach的内容相对深刻一点,比较适合把light transport的基础打牢一些,pbrt更倾向于实现上,内容较新,全面一些。
感觉这两个大概看完之后,外加平时有随手翻一翻论文的习惯的话,应该就能大概摸清谁谁谁是做什么的,想学什么就去读就行了。This post has received 1 vote up.其实说修正有点怪,irradiance的定义就是dphi/dA,只是图片里的那个表达式中,A是用另一个”A”来表示的,而这个”A”直接写成了A,所以真正的A的表达式是这个样子。
- This reply was modified 4 years, 8 months ago by slongle(助教).
smallPT是这么写的
- This reply was modified 4 years, 8 months ago by slongle(助教).
Attachments:
You must be logged in to view attached files.这个就是拿imgui简单糊了一下
处理光线相交时的浮点误差问题
1.BSDF采样下一个光线方向时,防止自相交
2.NEE判断遮挡时,防止被判遮挡BSDF/BRDF是一种描述光线打到表面后散射现象,从而描述物体的表面性质的物理概念。
Phong/Blinn-Phong是一种基于经验的BSDF模型,之后学习的比如Diffuse(Matte),Glass,Mirror等等是一些,基于物理的BSDF模型。
Phong/Blinn-Phong模型对物体表面的建模不基于物理,所以可能导致能量不守恒等问题。This post has received 1 vote up.- This reply was modified 4 years, 8 months ago by slongle(助教).
关于Irradiance可以看看这个http://games-cn.org/forums/topic/guanyuguangxianzhuizong3zhongradiancedeshizi/。
Incident radiance也还是radiance,所以还是投影面积,立体角是面积和距离决定的,所以立体角的投影相当于面积的投影。
ok,radiance你应该很明白,irradiance的定义就是phi/A,为什么有这个(phi*cos)/A,请看下图右边的情况。
所以导致你理解不顺的原因是,这里的A不是正常想的那个A。- This reply was modified 4 years, 8 months ago by slongle(助教).
Attachments:
You must be logged in to view attached files.你可以贴一下不明白的式子的图片
Object是Sphere和Triangle的父类
就算平行这个条件还是满足的呀。而且正常求解的话,方向为0的那维求出来就是+inf和-inf,对结果没有影响。
This post has received 1 vote up.int转unsigned char确实超范围呀,但是这个类型转换在这个情况下,结果是没问题的。编译器报Warning或者RE的都有可能,你要是报RE就把类型转换改过去。
球能正常显示的话,查一下光线三角形相交吧。变换之后得到的点(x,y,z)还是三维的,这个时候你可以取(x,y)为投影到屏幕上的点,相当于(x,y)坐标是在屏幕空间上的,z值作为深度值用来处理前后遮挡的关系。
在CMakeLists里加上开O2吧
感觉上比例确实有点问题,建议查一下第一次作业的矩阵
建议查一下投影矩阵,可能是那边有问题
你可以在windows下配置环境,不熟悉的话推荐你用vcpkg做库管理,然后稍微修改一下CMakeLists以匹配你的环境。
提交的时候记得把CMakeLists改回来,提交的文件不要有多余的工程文件等。并不要求最后一维w是1
要算摄像机到点的距离,所以应该是7,xy的范围是+/-2.899(7*tan(22.5))。
This post has received 1 vote up.投影那步,那个相似关系,x’=x*n/z,n和z是定义在一个系里面的。代码里n和f是对摄像机定义的,是正的也很正常,但是n,f对于z就不在一个系里面了。
有可能是数组越界,试试把rasterizer.cpp第234行auto ind = (height-point.y())*width + point.x()改成auto ind = (height-1-point.y())*width + point.x()。
先声明,我没看你的代码。
你可以试试把摄像机的位置拉远点看看能不能看见三角形。我们这边没能复现这个问题,但是有一些人都遇到了这个,可不可以再详细一点说一下是怎么解决的?
-
AuthorPosts