所以我正在努力建造一个牵引器.我按照本教程:https://www.youtube.com/watch?v = SMOJGxyd9BE&list = PLHm_I0tE5kKPPWXkTTtOn8fkcwEGZNETh&index = 9
所以一切都很好,除了遇到一个问题.我试图让球体在球体下反射,但是当我这样做时,我得到了这种奇怪的效果

如果你注意到地面上的反射有这些黑点.我一直试图找出最新情况,但奇怪的是因为整个飞机具有相同的法线,所以反射应该是正确的.有没有人有这方面的经验?我检查了它与阴影无关.
这看起来像"表面痤疮",当由于精度有限而导致阴影测试射线的原点(刚好几乎没有)在你交叉的表面的错误一侧时发生.因此表面阴影本身.
例如,您计算撞击球体的相机光线的交点(x,y,z).由于即使双精度值的精度有限,也可能(x,y,z)不完全在球体表面上.接下来,您将从(x,y,z)向光源创建一条光线,以查看它是否在阴影中.如果(x,y,z),由于有限的精度,实际上只是在球体内部,那么阴影测试将失败,因为球体遮挡了内部的所有点.
这通常通过在交叉点处的表面法线方向上微移(x,y,z)微小的量来固定.您使用微移点作为阴影射线的原点,因为您知道它位于球体的正确一侧.
在你的情况下,球体本身不会出现痤疮,但它的反射确实如此.这表明微调有时小于从初始射线到反射射线到球体的累积精度损失.也许你的轻推太小了.在计算反射光线时可能出现问题.
也可能是与平面的交点有时位于错误的一侧,因此您的反射光线会从地板下方而不是向后移动.
为了调试,我会将"我什么都没打"的颜色变成粉红色而"我在阴影中"的颜色变成了浅绿色.如果你在那些斑点看到粉红色,那么计算反射光线就会出错.如果你看到柠檬绿,那么它是表面痤疮,你需要确保你没有系统的精确度损失,你的微调因素是足够的.