Home › Forums › GAMES在线课程(现代计算机图形学入门)讨论区 › 作业7:castray函数怎么取着色点p? This topic has 13 replies, 6 voices, and was last updated 4 years, 8 months ago by 禹鹏(助教). Viewing 4 reply threads Author Posts 2020年4月13日 at 上午11:58 #5463 Score: 0 condyyParticipant Karma: 2 pts 如题 给了参数ray,那我们的着色点p是不是t*direction+origin? 我看完了samplelight函数这个函数的实现,但不理解它提供的是什么? 另外是否block是不是用intersectP来实现? 2020年4月13日 at 下午12:51 #5464 Score: 0 MrPhDParticipant Karma: 1 pt p的话,你用intersection(ray)就可以得到了。 samplelight可以得到采样的光线和对应概率密度函数,前提你需要创建一个Intersection类型的对象和float型的pdf_light,传到函数里,函数用来赋值,这样就可以得到了采样的光线和对应的pdf了。 block的话,你从上面采样的位置向p发一个光线,看得到的交点和p是不是一个点(这里牵涉到一个精度问题,这里可以思考一下,为什么存在精度的问题)。 2020年4月13日 at 下午1:01 #5468 Score: 1 condyyParticipant Karma: 2 pts 哦哦,我差不多明白了!还有个小问题,这个samplelight调用的时候是不是输入自己创建的新的两个变量就可以得到x点了呢? This post has received 1 vote up. 2020年4月13日 at 下午1:41 #5470 Score: 0 MrPhDParticipant Karma: 1 pt 创建一个新的Intersaction对象,然后作为samplelight函数其中一个参数,你仔细看一下samplelight内部怎么执行的就清楚了 2020年4月13日 at 下午9:42 #5503 Score: 0 condyyParticipant Karma: 2 pts 谢谢,我已经看了,刚刚您说的精度问题我想了一下,是不是指的是vector3f本身能取float数据,如果px光线交点与p点数据大差不差,那么就认为是相同的,原因是本身光线照射也有一定面积?如果是这样的话,应该取多大的delta值来判断相等呢? 2020年4月13日 at 下午12:53 #5465 Score: 0 xxrlParticipant Karma: 1 pt ray 的 t 默认不是0么 t*direction + origin = origin 吧 是否block 我是又做了一次intersect 这是我现在的结果 好像上面还是有点暗… Attachments:You must be logged in to view attached files. 2020年4月13日 at 下午3:00 #5474 Score: 0 BearParticipant Karma: -11 pt 加大 spp 试试 2020年4月13日 at 下午12:56 #5467 Score: 0 AngusParticipant Karma: 23 pts 另外是否block是不是用intersectP来实现? 可以试试 ray 的 t_min 和 t_max 哦。 2020年4月13日 at 下午1:03 #5469 Score: 0 condyyParticipant Karma: 2 pts 谢谢提醒!但是有点不太清楚这里t_min和t_max具体是针对穿过哪个物体的时间?所以这个大概应该怎么用呢? 2020年4月13日 at 下午2:19 #5472 Score: 0 BearParticipant Karma: -11 pt 实际上有个 trick,场景只有一个光源,所以只要判断打到最近的 object 是不是光源就行了,在该情景下就不用考虑精度问题了 2020年4月13日 at 下午3:23 #5475 Score: 0 condyyParticipant Karma: 2 pts 怎么判断是否是光源呢?是不是hasemit? 2020年4月13日 at 下午4:13 #5488 Score: 0 AngusParticipant Karma: 23 pts 你想要检测是的光源上采样到的点 x 和 hitPoint 之间有没有遮挡,所以从 hitPoint 出发发射一条 ray。 t_min 和 t_max 之间就是你想检测有无交点的范围,t_min 是光线刚刚离开 hitPoint,t_max 则是光线刚刚达到 x。 2020年4月13日 at 下午8:12 #5499 Score: 0 condyyParticipant Karma: 2 pts 还有个小问题,L_dir = L_i * eval(wo, ws, N) * dot(ws, N) * dot(ws,NN) / |x-p|^2 / pdf_light这种式子中的*在两个三维向量间代表什么运算?点乘or叉乘?是在函数中已经重载好的吗? 2020年4月15日 at 下午9:57 #5635 Score: 0 禹鹏(助教)Keymaster Karma: 9 pts L_i 和 eval(wo,ws,N) 是 element-wise product。向量的每个元素分别相乘。 Author Posts Viewing 4 reply threads You must be logged in to reply to this topic. Log In Username: Password: Keep me signed in Log In