2
我在光線跟蹤反射方面遇到了一些麻煩。正確地光線追蹤反射表面
這是我的代碼,模擬:
public Color calculateIlluminationModel(Vector normal, boolean isInShadow, Scene scene, Ray ray, Vector intersectionPoint)
{
if (isInShadow)
{
return getColorInShadow(scene);
}
else
{
Vector originalDirection = ray.getDirection();
Vector reflectionVector = originalDirection
.subtract(normal
.multiply(2)
.multiply(originalDirection.dotProduct(normal)
)
)
.normalize();
Ray reflectionRay = Ray.translateRayByEpsilon(new Ray(intersectionPoint, reflectionVector));
return scene.getRayColor(reflectionRay);
}
}
但是球體從來不會正確地反映任何東西。我計算反射光線的方式有什麼問題嗎?
注意:scene.getRayColor(reflectionRay);
是確定射線擊中顏色的射線追蹤組件。我相信這不是問題,但如果你認爲有必要展示這件作品,請告訴我。
你確定normal和originalDirection是單位長度嗎? –
@JasonC是的。他們都是正常化的。 –
你確定法線從物體向外指向而不是向內? –