求助光线跟踪中关于阴影光线

xiao_ye312 2013-07-10 10:06:52
在光线跟踪中,摄像机逆向光线与最近的物体相交与着色点,那么着色点向光源发射阴影光线的作用是什么?
阴影光线是为了求什么的?
在网上看了一段很简单的代码,为什么阴影光线要加一个很小的偏移呢?
在Ray l_ray = Ray(point + l*SMALL, l)中,SMALL是预先定义的很小的数值,看不懂这句……
		/*遍历场景中的每一个光源*/
for(int k = 0; k < m_scn->get_l_num(); k++)
{
PointLight pl = m_scn->get_light(k);/*光源*/
l = pl.get_pst() - point;/*交点到光源的方向*/
l.normalize();
Ray l_ray = Ray(point + l*SMALL, l);/**/
float shade = 1.0f;/*阴影,1.0表示交点不在阴影中*/
float distance = INFINITY;/*初始化无限大距离*/

/*测试是否有物体遮挡住光源*/
for(int k=0;k<m_scn->get_o_num();k++)
{
Object* obj = m_scn->get_objects(k);/*当前物体*/
if(obj->is_intersected(l_ray,distance))
{
shade = 0.0f;
break;
}
}
...全文
155 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ri_aje 2013-07-15
  • 打赏
  • 举报
回复
偏移是为了保证后面的阴影测试不会再次打到当前需要测试的点。如果不偏移的话,那么后续计算遍历场景中物体的时候,当前点所在的物体一定会和测试射线存在焦点,因为当前点至少是一个解。而这是要避免地,否则所有的点都会被判定为处于阴影中。

4,446

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧