1.4k likes | 1.59k Views
计算机图形学. 武汉大学电子信息学院 王泉德 qdwang@sohu.com. 第七章 真实感图形生成技术. 一、 消隐 二、光照模型 三、透明处理 四、表面法向量计算 五、阴影处理 六、纹理处理 七、光线跟踪算法 八、颜色模型. 真实感图形绘制是计算机图形学的一个重要组成部分,它综合利用数学、物理学、计算机科学和其它科学知识在计算机图形设备上生成彩色照片那样的真实感图形。近几年来,随着多色彩高分辨率光栅图形设备的普及,真实感图形绘制技术在产品外形设计、建筑设计、飞行训练、战斗模拟、分子结构研究、医学、计算机动画以及影视广告等领域得到了广泛的应用;
E N D
计算机图形学 武汉大学电子信息学院 王泉德 qdwang@sohu.com
一、消隐二、光照模型三、透明处理四、表面法向量计算五、阴影处理六、纹理处理七、光线跟踪算法八、颜色模型一、消隐二、光照模型三、透明处理四、表面法向量计算五、阴影处理六、纹理处理七、光线跟踪算法八、颜色模型
真实感图形绘制是计算机图形学的一个重要组成部分,它综合利用数学、物理学、计算机科学和其它科学知识在计算机图形设备上生成彩色照片那样的真实感图形。近几年来,随着多色彩高分辨率光栅图形设备的普及,真实感图形绘制技术在产品外形设计、建筑设计、飞行训练、战斗模拟、分子结构研究、医学、计算机动画以及影视广告等领域得到了广泛的应用;真实感图形绘制是计算机图形学的一个重要组成部分,它综合利用数学、物理学、计算机科学和其它科学知识在计算机图形设备上生成彩色照片那样的真实感图形。近几年来,随着多色彩高分辨率光栅图形设备的普及,真实感图形绘制技术在产品外形设计、建筑设计、飞行训练、战斗模拟、分子结构研究、医学、计算机动画以及影视广告等领域得到了广泛的应用; • 在计算机图形设备上生成连续色调的真实感图形需要完成四个基本的任务: • 用数学的方法建立所构造三维场景的几何描述,并将它们输入至计算机。这部分工作可由三维几何造型系统来完成; • 将三维几何描述转换为二维透视图。这可以通过对场景的透视变换来完成; • 确定场景中的所有可见面。这需要通过消隐算法将视域之外或被其它物体遮挡的不可见面消去; • 根据光照模型计算可见面投射到观察者眼中的光亮度的大小和色彩组成,并将它转换成为适合的颜色值,从而确定投影画面上每一象素的颜色;
一、消隐 • 消隐的分类 • 消除隐藏线 • 消除隐藏面 • 画家算法 • Z缓冲区(Z-Buffer)算法 • 扫描线Z-buffer算法 • 区域子分割算法 • 光线投射算法
1. 基本概念 • 用计算机生成三维形体的真实图形,是计算机图形学研究的重要内容之一。在使用显示设备描绘三维图形时,必须把三维信息作某种投影变换,在二显示表面上绘制出来; • 隐藏面的隐藏线的消除是计算机图形学的一个基本内容,由于存在不透光的物体,因此阻挡了来自某些物体的光线到达观察者,这些物体部分成为隐藏部分,隐藏部分是不可见的; • 为了使计算机生成的图形具有更加真实的感觉,必须把隐藏的部分从图中消除,否则,还会发生对图形的理解错误。经过消隐之后的投影图形称为物体的真实图形;
基本概念 • 消隐的对象是三维物体。三维体的表示主要有边界表示和CSG表示等。 • 消隐结果与观察物体有关,也与视点有关。 线框图 消隐图 真实感图形
选择不同的消隐算法 消隐问题有不同的算法,有些算法要求速度快,有些要求图形的真实度高。例如, • 快速消隐算法可用于实时模拟如飞行模拟等; • 具有高度真实感图形的消隐算法可用于计算机动画等领域,所生成的图形一般具有连续色调,并能产生阴影、透明、表面纹理及反射、折射等视觉效果。不过这类算法比较慢。产生一幅图可能需要几分钟甚至几小时。 所以,在进行消隐算法的设计时,应在计算速度和图形细节之间进行权衡;
投影方式的约定 • 隐藏线和隐藏面的消除所讨论的对象是一个三维图形,消隐后要在二维空间中表示出来。因此消隐后显示的图形将和三维空间到二维空间的投影方式有关。 • 下面讨论消隐算法时,都假定投影平面就是oxy平面,投影方向为负z方向的垂直投影。如果不是这种情况,可对消隐的对象先作变换,变成这种情况,然后再作消隐变换;
消隐算法的实现空间 消隐算法可以在对象空间或图像空间中实现。 • 对象空间算法是在定义对象的坐标系中实现的,而图像空间算法是在对象显示的屏幕坐标系中实现的。 • 对象空间算法以尽可能高的精度完成几何计算,所以可以把图像放大许多倍而不致损害其准确性,但是图像空间算法只能以与显示屏的分辨率相适应的精度来完成计算,所以其图像的放大效果较差。 • 两类算法的性能特性也不同:对象空间算法所需的计算时间随场量中物体的个数而增加,而图像空间的计算时间则随图像中可见部分的复杂程度而增加;
按消隐对象分类 • 线消隐 • 消隐对象是物体上的边,消除的是物体上不可见的边。 • 面消隐 • 消隐对象是物体上的面,消除的是物体上不可见的面。
对象空间的消隐算法 (光线投射、Roberts) • 将场景中每一个面与其他每个面比较,求出所有点、边、面的遮挡关系。 • 图像空间的消隐算法 (Z-buffer、扫描线、Warnock) • 对屏幕上每个象素进行判断,决定哪个多边形在该象素可见。 • 物体空间和图像空间的消隐算法 (画家算法) • 在物体空间中预先计算面的可见性优先级,再在图像空间中生成消隐图。
消隐的考虑—性能的提高 • 利用连贯性:物体连贯性、面的连贯性、区域连贯性、扫描线连贯性; • 合理的选择投影方法和视点,将透视投影转化成为平行投影; • 包围盒技术,减少求交的计算量; • 后向面去处技术; • 空间分割技术,建立投影区域与空间物体的对应关系; • 物体分层表示技术;
2. 多面体的隐藏线消除 — Roberts 算法 • Roberts消隐算法是在对象空间上实现的线消隐算法,数学处理严谨,计算量较大。Roberts算法要求所有被显示的物体都是凸的,因此对凹体要先分割成许多个凸体的组合。Roberts算法的基本步骤如下: • 逐个的独立的考虑每个物体自身,找出为其自身所遮挡的边和面(自隐边和自隐面); • 将每一物体上留下的边再与其它物体逐个的进行比较,以确定其是完全可见、部分可见或完全不可见; • 确定是否由于物体之间的相互贯穿等原因,要形成新的显示边等。从而使被显示各物体更接近现实。
F G J H A I B E C D Roberts算法 — 自隐边和自隐面的确定 • 在多面体的隐藏线消除问题中,总是假设多面体是用线框方式来表示的。这时多面体用棱来表示,隐藏线便是某些不可见的棱或棱的一部分;若能把各棱上可见和不可见的部分的分界点找到,线消隐问题便可以解决; • 各分界点都是多面体的各棱在oxy平面上的投影间的交点,这样,问题就转化成在oxy平面上求很多直线交点的计算。若消隐对象有N条棱,则求交点的工作量为O(N2); 棱间交点只有5个
减少直线求交计算的方法 —— 确定后向面 • 内法线方向背向视点的面称为前向面,图中的IJFGH, FABG, HCDI和IDEJ所在的面均为前向面,其余的面称为后向面,图中的JEAF和DEABC所在的面均为后向面。后向面总是看不见的,不会仅由于后向面的遮挡,而是别的棱成为不可见,因此可以把后向面全部去掉,从而减少直线的求交计算; • 后向面可通过有向面积来确定:设多边形F的顶点为v1,v2,…vL,顶点vi的坐标为 (xi,yi,zi),顶点的次序按右侧法则排列。为了确定多边形的内法线方向,可以计算多边形的有向面积。有向面积sp可如下计算: 若sp>=0,则F所在的面为后向面,在消隐过程中可直接去掉,不影响最后的结果;
减少直线求交计算的方法 —— 边界盒技术 • 直线段Q1Q2的边界盒是一包含这直线的边平行于坐标轴的最小矩形,这个矩形由四个参数: xmin = min(x1,x2), ymin = min(y1,y2) xmax = max(x1,x2), ymax = max(y1,y2) • 如果两个边界盒子的参数满足: (xmin1 > xmax2) 或 (ymin1 > ymax2) 或 (xmin2 > xmax1) 或 (ymin2 > ymax1) 时,这 两个边界盒不相交,因而原来的两条边也不会相交; • 上式的判断仅为一个充分条件,但大量的不相交线段是可以用这个方法判断出来的,同时,还可以用来判断两个多边形或两个多面体是否相交; • 对体来说,要用六个参数xmin,ymin,zmin,xmax,ymax,zmax来确定一个三维的边界盒,上式是两个体在oxy平面上投影不相交的充分条件,由 zmin1 > zmax2知道第一个物体整个位于第二个物体之前,因此前者不会被后者所遮挡;
Roberts算法 —— 确定线段的可见部分 • 以上的两种方法(后向面确定法和边界盒技术)可以有效的减少求直线段交点的次数。在实际计算中,要对体逐个来考虑。 • 考虑体A的显示时,需要确定可能遮挡A的那些体(包括体A本身),对体A的每一个多边形G,要找出可能遮挡它的所有多边形,这些多边形要从可能遮挡A的所有体的表面多边形中去寻找; • 对多边形G的每一条边L找出可能遮挡它的所有多边形,这些多边形要从可能遮挡多边形G的所有多边形中去寻找。 • 以上各步均采用边界盒法。找到了所有可能遮挡边L的多边形后,便可求L和这些多边形的投影的交点,从而决定L的可见部分。
Roberts算法 —— 交点的确定 o x • 设边L的两个端点是Vi和Vj,对边L和每一个可能遮挡它的多边形,都要作如下的计算和判断,以确定其隐藏关系: • 如果Vi和Vj都在多边形所在平面靠近观察者的一侧,则这个多边形不能遮挡直线段L,这时便没有必要考虑L和这个多边形的关系; • 否则,将ViVj和多边形的边界投影到oxy平面上来,求出它们的投影之间的交点; vj L vi z • 对每一个交点,要具体判断它在ViVj上所对应的点是在多边形的前面还是在多边形的后面,只有在多边形的后面的交点,才需要保留起来; • 如果ViVj和多边形在oxy平面的投影之间没有交点,这时要判断Vi或Vj在oxy平面上的投影是否在多边形投影的内部,如果在内部,则ViVj就会整个被这个多边形所遮挡住了;
H2 Vj B A H1 Vi 不可见阶的确定 Roberts算法 —— 线段可见部分的确定 • 如果ViVj和所有可能遮挡它的多边形边界的交点都求出来后,我们就可以确定它的可见部分了: • 首先将所有交点的参数t值按大小排序,以便计算出点Vi处的不可见阶ivord; • Vi处的ivord先取为0,对每一个和ViVj有交点的多边形,找出t值最小的那个交点,若这个交点为ViVj的出点,则ivord加1(如ViVj和H1的交点B);若这个交点为ViVj的进点,则不改变ivord的值 (如ViVj和H2的交点A),这样便可确定Vi处的不可见阶;
H2 Vj B A H1 Vi 不可见阶的确定 Roberts算法 —— 线段可见部分的确定 • 设ViVj上交点的参数值从小到大的排列为t1,t2,…,若Vi处的不可见阶为0,则ViVj从t=0至t=t1段为可见,否则为不可见; • t1处的不可见阶ivord要根据参数为t1的点是进点还是出点来确定。若为进点,则ivord要加1;若是出点,则ivord要减1。若t1处的不可见阶为0,则ViVj从参数为t1到t2段为可见,否则为不可见; • 用这种方法从Vi一步步走向Vj,便可确定ViVj上每一段的可见与不可见的情况;
Roberts算法性能分析 • Roberts消隐算法是在对象空间实现的消隐算法,数学处理严谨,计算量甚大; • Roberts算法要求所有被显示的物体都是凸的,因此对凹体要先分割成许多个凸体的组合; • 由于Roberts算法的计算量随着被显示物体数以平方递增以及人们对光栅扫描显示的兴趣与日俱增,使得Roberts算法大为逊色; • 但Roberts算法数学处理简单、精确、适用性强,在结合一些使用的技巧,使该算法的计算量几乎只与显示物体个数呈线性增长关系;
3. 消除隐藏面 • 3.1画家算法(列表优先算法) • 先把屏幕置成背景色, • 再把物体的各个面按其离视点的远近进行排序,排序结果存在一张深度优先级表中。 • 然后按照从远到近的顺序逐个绘制各个面。 • 关键是如何对场景中的物体按深度排序
对场景中的物体按深度排序 • 深度重叠测试. • Zmin(P)<Zmin(Q),若Zmax(P)<Zmin(Q),则P肯定不能遮挡Q。 • 投影重叠判断 • P和Q在oxy平面上投影的包围盒在x方向上不相交 • P和Q在oxy平面上投影的包围盒在y方向上不相交
P和Q在oxy平面上的投影不相交 • P在Q之后。P的各顶点均在Q的远离视点的一侧 • Q在P之后。Q的各顶点均在P的远离视点的一侧 • 精确的重叠测试 • 以上测试失败,须作进一步判断。计算时不必具体求出重叠部分。在交点处进行深度比较,只要能判断出前后顺序即可。 • 若遇到多边形相交或循环重叠的情况(如图f),还必须在相交处分割多边形,然后进行判断。
3.2 Z缓冲器算法 • 帧缓存来存放每个象素的颜色值 • 初值可放对应背景颜色的值 • 深度缓存来存放每个象素的深度值。 • 初值取成z的极小值。
算法思路 • Z缓冲器中每个单元的位数取决于图形在Z方向的变化范围,一般为20bit就可以了;Z缓冲器中的每个单元的值是对应象素点所反应的对象上的Z坐标值; • Z缓冲器中每个单元的初始值取成Z的极小值,帧缓冲器中的每个单元的初始数存放背景的颜色; • 图形的生成和消隐的过程就是为帧缓冲器和Z缓冲器中相应的单元填值的过程:在把显示对象的每个面上每一点的属性(颜色和灰度)值填入帧缓冲器相应单元前,要把这点的Z坐标值和Z缓冲器中相应单元内的值作比较,只有前者大于后者时,才改变帧缓冲器中那一个单元的值,同时Z缓冲器中相应单元的值也要改为这点的Z坐标值; • 对显示对象的每一个面上的每一个点多作了上述处理后,便可以得到消除了隐藏面的图形;
Z缓冲器算法描述 设置帧缓冲器为背景颜色(或光强度) 设置Z缓冲器为极小Z值 while 对每一个多边形 dobegin while 对多边形中的每一个元素 do begin 计算该象素的深度z(x,y) /*比较z(x,y)与Z缓冲器中该位置处的深度Zbuffer(x,y)*/ if z(x,y) 》Zbuffer(x,y) then 将此多边形的颜色(或光强度) 写入帧缓冲器且Zbuffer(x,y)←z(x,y) endend end of algorithm
象素深度值的获取 • 算法中有关Z值的计算可以根据平面方程求得。设平面方程为:ax+by+cz+d=0 则 z=-(ax+by+d)/c c≠0由于同一条扫描向上的y分量为常量,所以沿扫描线上的象素 x1=x+Δx y1=y该处的深度为:z1 =-(ax1+by+d)/c =-(ax+by+d)/c-(a/c)·Δx =z-(a/c)·Δx若Δx=1,则 z=z-a/c所以,根据扫描向上各点前后相关性,运用增量方法计算Z值是极为方便的;
Z缓冲器算法分析 • 优点:简单,可靠。被显示的画面可以任意复杂,因为图像空间的大小是固定的,最坏情况下,计算量随画面复杂程度线性增长。由于要被显示的元素可按任意顺序写入帧缓冲器和Z缓冲器,所以不需要进行深度排序,节省了排序时间; • 缺点:需要占用大量存储空间的Z缓冲器,没有利用图形的相关性与连续性。若要被显示的画面经变换和剪取后,Z值便在一定范围内变化,则可采用固定精度的Z缓冲器。本算法结合光照,透明等相关算法后,可产生较佳效果;
3.3 扫描线Z缓冲器算法 • Z缓冲器算法需要对显示对象的表面和象素对应的每一个点处都要计算它的Z值,因此工作量巨大。为此,提出了扫描线Z缓冲器算法加以改进; • 在扫描线Z缓冲器算法中,Z缓冲器的单元数可以取成和一行上的象素数目相同;从最上面的一条扫描线开始工作,向下对每一条扫描线进行处理; • 对每一条扫描线来说,把相应的帧缓冲器单元置为背景色,在Z缓冲器中放置Z的极小值。对每个多边形检查它在oxy平面上的投影和当前的扫描线是否相交;若不相交,则不考虑该多边形; • 若相交,则扫描线和多边形边界的交点一定是成对的出现,对每对交点中间的象素计算多边形所在的平面对应点的深度Z值,并和Z缓冲器中相应单元存放的深度值作比较;若前者大于后者,则Z缓冲器中相应单元内容要被求得的平面深度所代替,帧缓冲器相应单元的内容也要换成该平面的属性; • 对所有多边形都作上述处理之后,帧缓冲器中这一行的值便反映了消隐后的图形;扫描线自上而下处理完之后,便得到了整个真实图形;
3.4 区域子分算法 • Roberts算法是实现线消隐的算法,区域子分算法(Warnock算法)则是针对光栅扫描式显示器上填色产生的图形的。物体在不同的面上填色产生不同的颜色或灰度,因此,消隐问题不再是讨论线段的可见与否,而是讨论一个面或面的一部分可见与否; • 区域子分算法是一种分治算法。整个屏幕称为窗口,整个算法是一个递推的四等分过程,每一次将矩形的窗口等分成四个相等的小矩形,分成的矩形也称为窗口,每一次子分,都要将要显示的多边形和窗口的关系作一判断,这种关系可以有以下四种: • 多边形包围了窗口(情况1); • 多边形和窗口相交(情况2); • 窗口包围了多边形(情况3); • 窗口和多边形分离(情况4);
窗口与多边形的覆盖关系有四种:内含、相交包围和分离,如图所示。窗口与多边形的覆盖关系有四种:内含、相交包围和分离,如图所示。 窗口和多边形分离 内含 包围 多边形与窗口相交
区域子分算法原理 • 在窗口和每个多边形的位置确定之后,有些窗口内的图形便可以显示了。它们属于下列三种情况之一: • 所有多边形都和窗口分离,这时将窗口内所有的象素填上背景颜色; • 只有一个多边形和窗口相交,或只有一个多边形包含在窗口内,这时先对窗口内每一个象素填上背景的颜色,再对窗口内的多边形用扫描线算法填充; • 只有一个多边形和窗口相交,这个多边形将窗口整个包围在内;或虽有几个多边形和窗口相交,但离观察者最近的一个多边形包围了整个窗口,这时把整个窗口填上离观察者最近的那个多边形的颜色; • 对于上述的三种情况来说,图已可画出,因而不必再细分了。对上述三种情况不成立的窗口再一分为四,分得的窗口重复上述的过程,分了若干次之后,窗口的边长就和一个象素的宽度一样了,这时,这个窗口对应象素的颜色可取成最靠近观察者的多边形的颜色,或和这个窗口相交的多边形的颜色的平均值。至此,整个算法结束;
子分的过程 • 在实现区域细分法时,可用边界盒方法来判断多边形和窗口的相交情况。在数据结构上可用一棵四叉树来表示,每个结点是一个窗口,每一个结点下有四个子结点对应于分成的四个子窗口。 • 对分辨率为2N*2N的光栅显示器,窗口经过N次细分之后便可使子窗口和一个象素的大小一样了;
3.5 光线投射算法 • 基本思想: • 考察由视点出发穿过观察屏幕的一象素而射入场景的一条射线,则可确定出场景中与该射线相交的物体。 • 在计算出光线与物体表面的交点之后,离象素最近的交点的所在面片的颜色为该象素的颜色; • 如果没有交点,说明没有多边形的投影覆盖此象素,用背景色显示它即可。
将通过屏幕各象素的投影线与场景中的物体表面求交;将通过屏幕各象素的投影线与场景中的物体表面求交;
算法过程 for屏幕上的每一象素 { 形成通过该屏幕象素(u,v)的射线; for 场景中的每个物体 { 将射线与该物体求交; if 存在交点 以最近的交点所属的颜色显示象素(u,v) else 以背景色显示象素(u,v) } }
光线投射算法与Z缓冲器算法相比,它们仅仅是内外循环颠倒了一下顺序,所以它们的算法复杂度类似。光线投射算法与Z缓冲器算法相比,它们仅仅是内外循环颠倒了一下顺序,所以它们的算法复杂度类似。 • 区别在于光线投射算法不需要Z缓冲器。 • 为了提高本算法的效率可以使用包围盒技术,空间分割技术以及物体的层次表示方法等来加速。
二、光照模型 • 真实感图形是通过景物表面的颜色和明暗色调来表现景物的几何形状、空间位置和表面材料的,物体表面呈现的颜色是由表面向视线方向辐射的光能来决定的; • 在计算机图形学中,为了描述物体表面朝某方向辐射光的颜色,常使用一个既能表示光能大小、又能表示其色彩组成的物理量,称为光亮度(luminance); • 物体表面向空间给定方向辐射的光亮度可应用光照模型进行计算。简单光照模型仅考虑光源照射在物体表面产生的反射光,整体光照模型还要考虑周围环境的光对物体表面的影响,因此能模拟出镜面映像、透明等较为精致的光照效果; • 对相应光源照明影响的取舍,可以表现自然界中的阴影; • 纹理映射技术将已有的平面花纹映射到物体表面上,并应用光照模型产生物体的表面细节,使绘制的图形更加的逼真;
当光照射到一个物体表面上时,会出现三种情况。首先,光可以通过物体表面向空间反射,产生反射光;其次,对于透明体,光可以穿透该物体并从另一端射出,产生透射光;最后,部分光将被物体表面吸收而转换成热;在上述三部分光中,仅透射光和反射光能够进入人眼产生视觉效果;反射或透射部分的光使物体可见一物体表面呈现的颜色是由物体表面向视线方向辐射的光能中各种波长的分布所决定的。。当光照射到一个物体表面上时,会出现三种情况。首先,光可以通过物体表面向空间反射,产生反射光;其次,对于透明体,光可以穿透该物体并从另一端射出,产生透射光;最后,部分光将被物体表面吸收而转换成热;在上述三部分光中,仅透射光和反射光能够进入人眼产生视觉效果;反射或透射部分的光使物体可见一物体表面呈现的颜色是由物体表面向视线方向辐射的光能中各种波长的分布所决定的。。 • 如果入射光全部被吸收,物体将不可见,该物体称为黑体。 • 光能中被吸收、反射或透射的数量决定于光的波长和物体的表面特性。 • 光照射到物体表面产生的现象很复杂,与光源的性质、形状、数量、位置有关,还与物体的几何形状、光学性质、表面纹理等许多因素有关,甚至与人眼对光的生理与心理视觉因素有关,我们不可能把这一切都准确计算出来。
在许多应用场合,照明光源的颜色和物体表面的材料并不是最关心的,因此,简单光照模型只考虑被照明物体的几何对反射光和透射光的影响,或者说,在简单光照模型中,环境假设为白光照明,且反射光和透射光的颜色由用户来决定;在许多应用场合,照明光源的颜色和物体表面的材料并不是最关心的,因此,简单光照模型只考虑被照明物体的几何对反射光和透射光的影响,或者说,在简单光照模型中,环境假设为白光照明,且反射光和透射光的颜色由用户来决定; • 在不包含透射光的简单光照模型中,物体表面呈现的颜色仅由其反射光来决定。通常,人们把反射光考虑成三个分量的组合:环境反射、漫反射和镜面反射; • 计算环境反射时假定入射光均匀的从周围环境入射至景物表面并等量的向各个方向反射出去;而漫反射分量和镜面反射分量则表示特定光源照射在景物表面产生的反射光; • 我们讨论计算光强度的一些较为简单的方法,这些经验模型为计算物体表面某点处的光强度提供了简单有效的途径,并能在许多应用场合获得较好的效果。
1、Phong光照模型 • 1) 环境光 • 在实际场景中,一个物体即使不直接暴露于光源之下,还会接收到从周围物体散射出来的光,这种光是由于周围各物体被照明后多次反射所产生的,一种分布光源,称为环境光。 • 例如从墙壁、地板及天花板等反射回来的光。 • 环境光的特点是照射在物体上的光来自周围各个方向,又均匀地向各个方向反射。 • 由于处理分布光源所需计算量甚大,通常将这种光所产生的效应简化为在各个方向都有均匀的光强度。