Home › Forums › GAMES在线课程(现代计算机图形学入门)讨论区 › 作业六 一片蓝问题 Tagged: 提问 This topic has 9 replies, 7 voices, and was last updated 4 years, 6 months ago by DoubleQ. Viewing 4 reply threads Author Posts 2020年4月5日 at 下午5:18 #5185 Score: 0 LSHlqParticipant 作业六结果为一片蓝,希望各位帮我找一下错误orz Attachments:You must be logged in to view attached files. 2020年4月5日 at 下午6:30 #5199 Score: 0 戴皓天Participant Karma: 9 pts 第三张图也就是4-3.PNG,那个if(!dirIsNeg[x])里面不用取反,直接交换两者就行了,如果方向是负的说明他就是超这个方向照射的,如果算出来t是负的那么说明光线是不经过这个box的,你这样似乎就弄反了,你可以试着画个图 2020年4月5日 at 下午6:38 #5201 Score: 0 戴皓天Participant Karma: 9 pts 假设光源在O1,方向就朝箭头方向 此时为了举例就先看x方向上的计算 那么此时pMin.x-O1.x<0,因为此时dir.x<0 所以min_tx此时求出来本身是大于0的 再看图,这个O1出发的光线明显是会经过bound的,所以哪怕dir是负的你也不应该取反 再假设光源在O2 看x方向 此时pMin.x-O1.x>0,因为此时dir.x<0 所以min_tx此时求出来本身是<0的, 但是如果按你说的取反,min_tx就>0了,就变成光能够通过bound了 但是由图可知这个光线如果在O2出发,那么是不可能经过bound的 所以总之我认为不应该取反,直接交换min和max的位置就行了 This reply was modified 4 years, 7 months ago by 戴皓天. Attachments:You must be logged in to view attached files. 2020年4月5日 at 下午7:19 #5204 Score: 0 clarenceParticipant Karma: -2 pt 确实是不需要取反的,我自己写的代码也没取反,但有一个地方不知道你解决了没有。我看论坛上的人,包括我自己得到的eye ray都不需要减去eye_pos就能得到正确结果,而减去了eye_pos的却一片蓝。 2020年4月5日 at 下午8:08 #5206 Score: 1 cmc233Participant Karma: 6 pts eye ray和eye pos无关,它和你朝哪个方向看有关,默认的应该就是朝“正前方”看,即eye到画面中心是(0,0,-1) This post has received 1 vote up. 2020年4月5日 at 下午9:29 #5207 Score: 0 clarenceParticipant Karma: -2 pt 我懂了,谢谢解答。几何学得还不够到位,还需努力。 2020年4月8日 at 下午12:49 #5264 Score: 0 KeneyrParticipant Karma: 7 pts 这为啥和eye_pos没关系呢?ray的产生不就是从摄像机出发,经过像素点中心吗? 既然从摄像机出发,计算方向不就应该减去eye_pos吗? 2020年4月6日 at 下午7:18 #5228 Score: 0 whirlwindParticipant 楼主问题解决了吗,我也遇到了相似的问题。。。并且我也没有取反呀? Debug发现所有求交的三角形normal与ray点乘大于0,这是为什么 2020年4月6日 at 下午7:22 #5231 Score: 0 LSHlqParticipant 问题已解决,谢谢解答,不取反就可以了 2020年5月14日 at 下午5:04 #6537 Score: 0 DoubleQParticipant Karma: 2 pts 为什么我没有取反,eye_pos也没有减但还是一片蓝 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