Home › Forums › GAMES在线课程(现代计算机图形学入门)讨论区 › Hw2的疑问 Tagged: triangle order This topic has 15 replies, 7 voices, and was last updated 4 years, 10 months ago by 不要熬夜. Viewing 1 reply thread Author Posts 2020年3月5日 at 下午1:53 #3311 Score: 0 MingWangParticipant 我的结果是参考答案绕原点旋转了180度,不知道为什么。然后手册中说“为了方便同学们写代码,我们将 z 进行了反转,保证都是正数,并且越大表示离视点越远。”这个Z的反转没懂,是不是调整相机向+Z方向看,这样Z越大离视点越远?然后就是这个反转在框架代码中怎么体现的? Attachments:You must be logged in to view attached files. 2020年3月5日 at 下午1:54 #3313 Score: 0 MingWangParticipant 图片错了,是这样的。。。 Attachments:You must be logged in to view attached files. 2020年3月5日 at 下午2:03 #3317 Score: 0 Shi YuChen(助教)Keymaster Karma: 4 pts 这个关于原点对称的问题我向闫老师咨询过,是因为当时编写这个代码框架的时候使用的是左手系而导致的,所以颠倒的结果没关系,也算对的。 另外,在进行过投影之后z的取值范围变为[-1,1],在rasterizer.cpp的83行的vert.z() = vert.z() * f1 + f2将z的值放大且均变为正数。 2020年3月6日 at 上午11:56 #3376 Score: 0 sublimationParticipant Karma: 3 pts 助教好,我想请教您一下,这里vert.z() = vert.z() * f1 + f2,应该是对z进行了缩放和平移,请问一下翻转的代码在哪里表示呢?就是使得z越大,深度越深的反转。谢谢啦! 2020年3月6日 at 上午11:58 #3378 Score: 0 AngusParticipant Karma: 23 pts +1 我也好奇哪一部分代码涉及了z轴的反转 2020年3月6日 at 下午4:17 #3407 Score: 0 Shi YuChen(助教)Keymaster Karma: 4 pts 不好意思,检查代码的时候没有注意,应该改为vert.z() = -vert.z() * f1 + f2,或者初始化z-buffer时初始成-infinite。 2020年3月6日 at 下午6:38 #3417 Score: 0 sublimationParticipant Karma: 3 pts 好的好的,谢谢啦~辛苦了! 2020年3月6日 at 下午3:47 #3405 Score: 0 BubbleInPitParticipant 助教你好,我有一个疑问,给的两个三角形的z值分别为-5和-2,-5离原点更远,也应当被z值为-2的三角形盖住。在我的代码里,-5经过正交投影后变为-0.983968,-2经过正交投影后变为-0.975379,当这两个值经过vert.z() = vert.z() * f1 + f2的变换,会导致-5对应的z值比-2对应的z值要小,也就是说,此时-5对应的这个三角形离原点更近了,而它本应该更远。请问这是我的正交投影计算出错吗? 2020年3月6日 at 下午4:21 #3410 Score: 2 Shi YuChen(助教)Keymaster Karma: 4 pts 你计算的没错,是我们检查框架时没有注意。应该把rasterizer.cpp第83行的vert.z() = vert.z() * f1 + f2改为vert.z() = -vert.z() * f1 + f2 This post has received 2 votes up. 2020年3月6日 at 下午5:15 #3413 Score: 0 BubbleInPitParticipant 好的,感谢回复。已修改。 (上面的“正交投影”应该改成“透视投影”😂) 2020年3月8日 at 下午10:52 #3628 Score: 0 KeneyrParticipant Karma: 7 pts 助教,-5经过透视投影后变为-0.983968,-2经过透视投影后变为-0.975379,他的计算是正确对吗?为什么我的透视投影后直接变成了正数。。。。 2020年3月9日 at 上午12:15 #3631 Score: 0 Shi YuChen(助教)Keymaster Karma: 4 pts 不好意思,我之前也没有仔细算,我只是看了他的大小关系是正确的,即-5变换后的z值更小。 This reply was modified 5 years, 2 months ago by Shi YuChen(助教). This reply was modified 5 years, 2 months ago by Shi YuChen(助教). 2020年3月9日 at 下午2:42 #3654 Score: 0 KeneyrParticipant Karma: 7 pts 为什么要把vert.z() = vert.z() * f1 + f2改为vert.z() = -vert.z() * f1 + f2?? 我透视投影、归一化、然后缩放以后,三角形的z值变换分别是 -2—>6.8—>0.97—>49.3 -5—>9.8—>0.98—>49.6 我觉得不需要改变代码啊。 而且我认为经过透视投影以后,z值是正值才是正确的。三角形在-z的空间内,摄像机在+z的位置,又因为裁剪空间是左手系,也就是三角形经过mvp变换以后,变换到了裁剪空间下,z值就应该是正值啊。 (如下图,不知道我的理解是否正确) Attachments:You must be logged in to view attached files. 2020年3月9日 at 下午4:50 #3662 Score: 0 Shi YuChen(助教)Keymaster Karma: 4 pts 你说的是没错的,主要原因是代码框架中的坐标系是左手系,导致如果纯粹按着闫老师上课所讲的右手系推到过程来构造透视投影矩阵的话,得到的结果是负值。 2020年3月13日 at 上午12:23 #3945 Score: 0 KeneyrParticipant Karma: 7 pts 好滴,谢谢助教 2020年7月2日 at 下午4:20 #6731 Score: 0 不要熬夜Participant 为什么我的是改为-vert.z() * f1 + f2之后的z值变化跟你一致呢? Author Posts Viewing 1 reply thread You must be logged in to reply to this topic. Log In Username: Password: Keep me signed in Log In