1.阴影的作用
阴影效果在真实感图像生成中提供给图像更多的真实感,并且能够为场景提供某些定性分析,如光照的位置、光照的范围等信息。
阴影可以看为光源看不到的地方,即从光源往各个方向发送光线,则光线无法照射到的区域则为阴影。
在光线追踪中,从观察光线与物体的碰撞点向光源引一条光线,光线方向指向光源,若该光线在到达光源之前碰撞到某些物体,则该点位于阴影中。
2.阴影的生成实现
阴影的生成如同上述所讲一样,只需在碰撞点往光源方向引一条光线,然后判断光线是否与物体相交,然后根据相交与否产生相应的颜色。
具体的代码如下(c++实现):
Color Phong::Shade(const ShadeRecord& shade_rec) const
{
Vector3f out_dir = -shade_rec.ray_.dir_;
const std::vector<LightPtr>& lights = shade_rec.world_.lights_;
Color out_color = ambient_func_.rho(shade_rec, out_dir) * shade_rec.world_.ambient_light_->light();
for (int i = 0; i < lights.size(); ++i) {
Vector3f in_dir = lights[i]->GetShadowRayDir(shade_rec);
Float