颜色、光照、材料属性(openGL)

本文详细介绍了OpenGL中颜色、光照和材料属性的概念。颜色涉及到颜色坐标系、设置与着色;光照包括环境光、散射光、镜面光等,以及法线向量的作用;材料属性涉及反射属性的设定,可以通过glMaterial函数进行控制。文章通过实例解释了光照和材料如何共同决定最终观察到的颜色。
摘要由CSDN通过智能技术生成

0.颜色

a.颜色坐标系


b.颜色设置与着色

void colortriangle()
{
	glClear(GL_COLOR_BUFFER_BIT);
	glShadeModel(GL_SMOOTH);
	glBegin(GL_TRIANGLES);
		/************************************颜色设置及着色**************************************************
			1、void glColorXt(red, green, blue, alpha);
				其中x代表参数个数,可以是3个值代表rgb颜色,或者使4个值分别代表rgba。alpha成分用来代表透明度。
				t代表参数的类型,可以是b,d,f,i,s,ub,ui,us对应的类型是byte,double,float,integer,short,unsigned byte, unsigned integer,unsigned short。
				glColor3f指定各个颜色成分的强度值的范围为0.0到1.0之间。
				glColor3ub则可以指定各个颜色成分的强度值的范围在0-255之间。
			2、着色分为两种
				GL_FLAT:图元是点(画的是线什么的情况下),使用最后一个点的颜色作为线(其他图)颜色
				GL_SMOOTH:图元是点(画的是线什么的情况下),均衡,颜色渐变(两顶点间) 
		****************************************************************************************************/ 
		glColor3ub((GLubyte)255,(GLubyte)0,(GLubyte)0);							//ub:unsign byte
		glVertex3f(0.0f,100.0f,0.0f);
		glColor3ub((GLubyte)0,(GLubyte)255,(GLubyte)0);
		glVertex3f(100.0f,-35.0f,0.0f);
		glColor3ub((GLubyte)0,(GLubyte)0,(GLubyte)255);
		glVertex3f(-100.0f,-35.0f,0.0f);
	glEnd();
	glFlush();
} 


c.看到的颜色是光照颜色和材料属性综合的结果

若光源颜色为( LR , LG , LB ),材质颜色为( MR , MG , MB ),最终颜色为( LR*MR , LG*MG , LB*MB )。(B1+B2)*MB )。因此,材料的颜色成分决定了入射光被反射的百分比。

栗子:光源颜色为(0.5, 0.5, 0.5),材料的颜色为(0.5, 1.0, 0.5)那么最终的颜色是(0.5*0.5, 0.5*1.0, 0.5*0.5) = (0.25, 0.5, 0.25) 。

1.光照

我们观察到的实物的颜色除了,实物本身的颜色外,还包括实物的材质和光照对观察的影响。

a.光照类型

环境光、散射光、镜面光的强度都会衰减(这也是为什么在设置光照的同事还要设置光照位置的一个原因),只有发射光和全局环境光的强度没有衰减。

环境光:

环境光没有特定的方向。环境光的光线充满着整个场景。场景中的物体都被环境光从各个方向照射着。环境光的特点是:照射在物体上的光来自周围各个方向,又均匀地向各个方向反射。

全局环境光栗子

//明亮的白光
GLfloat ambientLight[] = {1.0f, 1.0f, 1.0f, 1.0f};
//开启光照
glEnable(GL_LIGHTING);
//设置全局环境光为白光
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientLight);

漫反射光:

漫放射光是一组来自特定方向,具有方向性的光。根据入射光线的角度在表面上均匀地向各个方向反射。漫反射的特点是:光源来自一个方向,反射光均匀地射向各个方向。漫反射光采用点光源照射物体。点光源是位于空间某个位置的一个点,向周围所有的方向上辐射等光强的光。在点光源的照射下,物体表面的不同部分亮度不同,亮度的大小依赖于它的朝向以及它与点光源之间的距离。

镜面光:

镜面光与漫反射光一样是具有方向性的。高强度的镜面光会在被照射的物体的表面上形成亮点。对于理想的高光泽度反射面,反射角等于入射角时,光线才会被反射,即只有在等于入射角的反射角方向上,观察者才能看到反射光。对于这种理想的反射面,镜面反射的光强要比环境光和漫反射的光强高出很多倍,这时,如果观察者正好处在P点的镜面反射方向上,就会看到一个比周围亮得多的高光点。

b.光照与法线

作用于定义:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值