流逝的时光
总有一天我们都会离去 email: zzxhang@gmail.com
posts - 21,comments - 111,trackbacks - 0
    采用了最简单的局部光照模型,用opengl的光照方程:I = Ia * Ka + Id * Kd * (L dot N)  + Is * Ks * pow((R dot V),n)
    I,L为光照强度和材质参数,L,N,R,V分别是光线反方向,法线,视线反方向,反射光线方向,n为镜面反射因子,这条公式只考虑了环境光(ambient),镜面光(specularity),散射光(diffuse)的影响,实际上还有发射光(emission),不过对于局部光照模型来说,这种发射光没多大意义,稍微修正了下散射光部分,把光线和法线的点积值映射到了(0.0f,1.0f)范围,让背光部分不至于一团黑,公式变为:
  I = Ia * Ka + Id * Kd * (L dot N + 1.0) * 0.5 + Is * Ks * pow((R dot V),n)

 点光源效果:

 
  
 另外把纹理和zbuffer也加上了,纹理采用的是仿射纹理映射,修正纹理映射涉及到浮点的精度问题,在z距离变化比较大的时候纹理跳跃比较严重,暂时还没想到一个合适的解决办法,纹理寻址方式固定范围,不做越界寻址处理,支持双线性纹理过滤,目前纹理图片格式完成了BMP图片的载入

关闭深度测试                                                                                                                          开启深度测试
posted on 2009-09-06 00:23 清風 阅读(2294) 评论(2)  编辑 收藏 引用 所属分类: 图形

FeedBack:
# re: 局部光照 + zBuffer + 纹理
2009-09-09 15:00 | 向往
very nice,加油~  回复  更多评论
  
# re: 局部光照 + zBuffer + 纹理
2009-09-10 10:55 | 清風
@向往
thx  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理