光线追踪算法—阴影绘制

本文介绍了阴影在真实感图像生成中的重要性,通过光线追踪技术解析阴影的生成原理,即从碰撞点向光源发射光线并检测是否相交来确定阴影。文章提供了C++实现的代码示例,并展示了一个实际的渲染效果图。
摘要由CSDN通过智能技术生成
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值