最近在学习光线追踪,其中光线反射,折射是重点。
由于这本书是英文的,对于阅读能力是一个大挑战吖。学习过程中发现了一位大佬的学习总结:
https://blog.youkuaiyun.com/libing_zeng/article/details/72598060
写得很清楚,比较厉害啦。 但是折射这部分的证明没有写清楚,所以我自己理清了一下,记录一下,嘻嘻(#^.^#)
- 折射光线的方向向量:
源代码:
bool refract(const vec3& v, const vec3& n,float nt,vec3& refracted){
vec3 uv = unit_vector(v);
float dt = uv.dot(uv,n);
float d = 1.0 - nt*nt*(1-dt*dt);
if(d > 0){
refracted = nt*(uv-n*dt) - n*sqrt(d);
return true;
}else{
return false;
}
}
计算过程如下:

- 漫反射光线的方向向量
源代码
模拟随机方向的向量(起点在原点,长度小于1,方向随机)
vec3 lambertian::randomUnitNormal(

本文是基于《Ray Tracing in One Weekend》的学习笔记,详细解释了光线的反射和折射向量的计算过程。作者在阅读英文原版书籍时遇到困难,参考了一位博主的总结,并补充了折射部分的清晰证明。文中提供了源代码和计算步骤,适用于光线追踪技术的学习者。
最低0.47元/天 解锁文章
5231





