Home › Forums › GAMES在线课程(现代计算机图形学入门)讨论区 › 作业7问题 This topic has 11 replies, 4 voices, and was last updated 4 years, 8 months ago by 好好学习的王同学. Viewing 5 reply threads Author Posts 2020年4月15日 at 下午8:57 #5620 Score: 0 好好学习的王同学Participant 在按照文档的算法进行实现后,发现最后结果有些奇怪,光源既没有纯黑,也没有显示出光源,如图所示: Attachments:You must be logged in to view attached files. 2020年4月15日 at 下午9:27 #5625 Score: 0 xxrlParticipant Karma: 1 pt 你光源的位置是不是变了,中间的墙变亮了 2020年4月15日 at 下午10:29 #5646 Score: 0 MrPhDParticipant Karma: 1 pt 中间变亮是间接光照导致的,他应该没显示光源而已 2020年4月15日 at 下午10:28 #5645 Score: 0 MrPhDParticipant Karma: 1 pt 那是因为有间接光照,光源又被间接光照照亮,其实光源应该更亮的,你可以判断一下被ray击中的物体是不是光源,是光源就处理一下。如果你想看光源有没有颜色,你可以把间接光照先关掉。 2020年4月16日 at 上午11:21 #5670 Score: 0 好好学习的王同学Participant 尝试过关掉间接光源,还是无法显示纯黑的光源,最后的结果是整个天花板全黑,下面是我的计算直接光和间接光的代码,请大佬们看看哪里出了问题 Attachments:You must be logged in to view attached files. 2020年4月16日 at 上午11:23 #5672 Score: 0 MrPhDParticipant Karma: 1 pt 天花板全黑就对了啊,光源在天花板上,直接光照情况下,天花板应该就是全黑的 2020年4月16日 at 上午11:45 #5675 Score: 0 Yadi CaoParticipant Karma: 2 pts 接上楼MrPhD说的“如果打到的是光源/emit=true就处理一下”,他也帮我在一个类似的帖子里解答过,搬运一下希望能帮到你 详细一点说,处理应该指的是,如果按照原来的算法,在光源上sample一点和hit point(假设也在光源上)直接连接的向量是在平面内的,与光源normal始终垂直,因此计算的direct光照就是零了(也就是光源全黑)。为了避免这种错误,可以直接把这种情况的direct光照先赋值为光源的强度就好,之后的操作照旧。 2020年4月16日 at 上午11:56 #5676 Score: 1 Yadi CaoParticipant Karma: 2 pts 至于“天花板是全黑的”楼上说的很清楚了,是个巧合,这次恰好天花板和面光源共面。 不共面的话,有些部分可能会被照亮的 This post has received 1 vote up. 2020年4月16日 at 下午12:33 #5679 Score: 0 好好学习的王同学Participant 可能我没有说清楚,在我的理解里,就是按照文档里的说明,实现了伪代码之后,应该出现一个光源纯黑,但是天花板上有光的图像,而不应该是光源会被间接光照亮的情况,我不太明白为啥我按照伪代码实现后,并没有出现预计的结果,是不是我代码里有一些问题 2020年4月16日 at 下午1:08 #5680 Score: 0 MrPhDParticipant Karma: 1 pt 既然天花板除光源以外的部分都可以被间接光照打亮,为什么光源部分就不会受到间接光照的影响呢? 2020年4月16日 at 下午1:39 #5683 Score: 0 Yadi CaoParticipant Karma: 2 pts 哈哈哈我之前也有过类似的误解,以为光源部分不受其他外来入射光线的影响,和固定边界条件似的。 直到我近距离拿着手机的手电筒照了一个红色的瑜伽砖,手机电筒附近也出现了红色的光晕我就意识到这个了。 2020年4月16日 at 下午2:40 #5684 Score: 0 好好学习的王同学Participant 好吧,看来我也误解了这个说明,谢谢各位大佬指教 Author Posts Viewing 5 reply threads You must be logged in to reply to this topic. Log In Username: Password: Keep me signed in Log In