`
mapdigit
  • 浏览: 241788 次
文章分类
社区版块
存档分类
最新评论

Android OpenGL ES 开发教程(25):OpenGL光照模型

 
阅读更多

前面绘制球体时Android OpenGL ES 开发教程(22):绘制一个球体 ,为了能看出3D效果,给场景中添加光源。如果没有光照,绘出的球看上去和一个二维平面上圆没什么差别,如下图,左边为有光照效果的球体,右边为同一个球体但没有设置光源,看上去就没有立体效果,因此OpenGL 光照效果对显示3D效果非常明显。

在OpenGL 光照模型中光源和光照效果可以细分为红,绿,蓝三个部分,光源由红,绿,蓝强度来定义,而物体表面材料由其反射红,绿,蓝的程度和方向来定义。OpenGL 光照模型使用的计算公式是对于现实世界光照的一个近似但效果非常好并适合快速计算。

OpenGL 光照模型中定义的光源可以分别控制,打开或关闭,OpenGL ES支持最多八个光源。

OpenGL 光照模型中最终的光照效果可以分为四个组成部分:Emitted(光源), ambient(环境光),diffuse(漫射光)和specular(镜面反射光),最终结果由这四种光叠加而成。

Emitted : 一般只发光物体或者光源,这种光不受其它光源的影响。

ambient: 指光线经过多次反射后已经无法得知其方向(可以看作来自所有方向),可以成为环境光,该光源如果射到某个平面,其反射方向为所有方向。Ambient 不依赖于光源的方向。

diffuse:当一束平行的入射光线射到粗糙的表面时,因面上凹凸不平,所以入射线虽然互相平行,由于各点的法线方向不一致,造成反射光线向不同的方向无规则地反射,这种反射称之为“漫反射”或“漫射”。这个反射的光则称为漫射光。漫射光射到某个平面时,其反射方向也为所有方向。diffuse 只依赖于光源的方向和法线的方向。

specular : 一般指物体被光源直射的高亮区域,也可以成为镜面反射区,如金属。specular依赖于光源的方向,法线的方向和视角的方向。

尽管光源可能只发送某一频率的光线,但ambient,diffuse和specular可能不同。比如使用白光照射一堵红墙,散射的光线可能为红色。OpenGL允许为光源分别设置红,绿,蓝三个元素的值。

最终决定所看到物体的颜色除了光源的颜色和方向外,还取决于物体本身的颜色,比如红色的光照在红色的物体和蓝色的物体,最终看到的物体一个还是红色,一个为黑色。OpenGL 中对物体材料(Material)的颜色是通过其反射红,绿,蓝的比例来定义的。 和光源一样,物体的颜色也可以有不同的ambient,diffuse和specular,表现为反射这些光的比例。ambient,diffuse反射通常为同样的颜色,而specular常常表现为白色或灰色光,如使用白光照射一个红色的球,球的大部分区域显示为红色,而高亮区域为白色。

分享到:
评论

相关推荐

    OpenGL ES应用开发实践指南 Android卷

    由资深Android开发专家根据OpenGLES2.0版本撰写,不仅系统地讲解了OpenGLES的核心概念、技术,以及Android的图形机制,还通过大量案例讲解了在Android上进行OpenGLES开发的方法和技巧。  《OpenGL ES应用开发实践...

    OpenGL ES应用开发实践指南(Android卷).pdf

    由资深Android开发专家根据OpenGLES2.0版本撰写,不仅系统地讲解了OpenGLES的核心概念、技术,以及Android的图形机制,还通过大量案例讲解了在Android上进行OpenGLES开发的方法和技巧。  《OpenGL ES应用开发实践...

    opengles加载3d模型(纹理+光照)

    opengles加载3d模型(纹理+光照)

    Android opengl 入门教程

    android2.2 opengl es 2.0 入门基础代码教程 通过简单代码总结,帮助新手入门。 内容包括:绘制基础、投影方式、光照效果、纹理绘制几个方面。

    android平台使用opengles2.0实现的翻书特效

    android平台利用opengles2.0技术实现的3D 翻书特效,带有完美阴影和光照技术;目前仅支持从右下角开始翻转,翻过一定角度松手后,自动翻转过去,否则的话,松手则还是翻回来;阴影是使用的阴影平面技术实现的,效果...

    opengles绘制球体增加光照效果

    opengles光照

    基于OpenGL的Android+3D游戏开发技术详解与典型案例(源码)

     第4章 千里之行,始于足下—3D开发基础知识本章介绍了3D开发中的基础知识,包括OpenGL ES的介绍及OpenGL ES中绘制模型的原理,并通过点、线和三角形的绘制介绍了OpenGL ES中模型的几种绘制方式。最后介绍了3D场景...

    【OpenGL ES】光影(光照与阴影)效果

    绘制阴影,需要用到深度纹理,即从光源角度看模型并绘制一张纹理图,纹理图的颜色代表了模型上的点离光源的深度,只有离光源较近的点才会... 本资源绘制了球、立方体和平面,添加了光照效果,并且给模型添加了阴影。

    opengles应用开发实践指南android卷

    在本书第二部分,你就可以在第一部分学习到的知识的基础上开始搭建三维世界中的效果,比如光照和地形渲染,接下来还会学习如何创建可以运行在Android主屏幕(home screen)上的动态壁纸。 本书的读者对象: 如果对...

    【OpenGL ES】Blinn改进的冯氏光照模型

    光照元素主要有环境光(ambient)、漫反射光(diffuse)、镜面反射光(specular),光照模型主要有冯氏模型和 Blinn 改进的冯氏模型,两者区别在与镜面反射光的计算,冯氏模型根据反向量和观察向量计算镜面反射光,...

    OpenGL ES 3.x游戏开发 上卷 高清版

    ● 介绍了OpenGL ES 3.x中的光照、纹理映射、3 D 模型加载、混合和雾等基础特效, 以及常用的 3 D 开发技巧, 如标志板、天空盒、镜像绘制等。 ● 既介绍了Android下使用SDK基于Java进行开发,又介绍了Android下使用...

    OpenGL ES 3.x游戏开发 上卷 吴亚峰.pdf

    主要内容为:OpenGL ES 3.x的渲染管线介绍,OpenGL ES 3.x 可编程渲染管线着色器的着色语言介绍,3D 开发中投影、各种变换的原理与实现,介绍了OpenGL ES 3.x中光照的基本原理与实现、点法向量与面法向量的区别以及...

    OPENGL光照和纹理技术实例.rar

    OPENGL光照和纹理技术实例.rar OPENGL光照和纹理技术实例.rar

    opengles创建圆柱体(光照加纹理)

    opengles创建圆柱体(光照加纹理)

    OPENGL ES ios教程源码

    OPENGL ES ios教程源码,包括渲染管线、着色器、矩阵变换、模型视图投影、VBO、光照、深度缓存等内容。

    opengles光照通道合成

    opengles光照通道合成

    OpenGL模型读取

    通过freeglut,读取一个obj模型,附加光照,有详细注释。 obj 模型格式可以通过代码更(已有,为注释)实现读取两种格式obj 两种格式分别为 1)v XXX XXX XXX n XXX XXX XXX f XXX XXX XXX 2)v XXX XXX XXX n ...

    opengl es android demo 程序

    点、线、球休、多面体,光照效果等示例程序源码,想学opengl es android方面的,可以看看!!!

    Android 3D游戏开发技术宝典-OpenGL ES 2.0 (吴亚峰) 源代码

    1.3 如何搭建android开发环境 4 1.3.1 sdk的安装及环境配置 5 1.3.2 eclipse集成开发环境的搭建 7 1.3.3 创建并启动模拟器 9 1.4 hello android应用程序的开发 11 1.4.1 第一个android应用程序 12 ...

    Android高薪之路:Android程序员面试宝典 李宁

    《Android高薪之路:Android程序员面试宝典》目录: 第1章 Android入门 1 1 关于Android的非技术问题 1 1 1 为什么看好 Android 1 1 2 以前是否从事过Android的工作 做过哪些工作 1 1 3 你做的最复杂的界面是什么 1 ...

Global site tag (gtag.js) - Google Analytics