第九课,OpenGL光照之材质

物体材质

在冯氏模型中,一个物体的材质由:全局光照系数,漫反射光照系数,反射光照系数,反射高光半径系数决定。
分别由:ambient,diffuse,specular,shininess表示。

材质系数

The numbers

Name Ambient Diffuse Specular Shininess
emerald 0.0215 0.1745 0.0215 0.07568 0.61424 0.07568 0.633 0.727811 0.633 0.6
jade 0.135 0.2225 0.1575 0.54 0.89 0.63 0.316228 0.316228 0.316228 0.1
obsidian 0.05375 0.05 0.06625 0.18275 0.17 0.22525 0.332741 0.328634 0.346435 0.3
pearl 0.25 0.20725 0.20725 1 0.829 0.829 0.296648 0.296648 0.296648 0.088
ruby 0.1745 0.01175 0.01175 0.61424 0.04136 0.04136 0.727811 0.626959 0.626959 0.6
turquoise 0.1 0.18725 0.1745 0.396 0.74151 0.69102 0.297254 0.30829 0.306678 0.1
brass 0.329412 0.223529 0.027451 0.780392 0.568627 0.113725 0.992157 0.941176 0.807843 0.21794872
bronze 0.2125 0.1275 0.054 0.714 0.4284 0.18144 0.393548 0.271906 0.166721 0.2
chrome 0.25 0.25 0.25 0.4 0.4 0.4 0.774597 0.774597 0.774597 0.6
copper 0.19125 0.0735 0.0225 0.7038 0.27048 0.0828 0.256777 0.137622 0.086014 0.1
gold 0.24725 0.1995 0.0745 0.75164 0.60648 0.22648 0.628281 0.555802 0.366065 0.4
silver 0.19225 0.19225 0.19225 0.50754 0.50754 0.50754 0.508273 0.508273 0.508273 0.4
black plastic 0.0 0.0 0.0 0.01 0.01 0.01 0.50 0.50 0.50 0.25
cyan plastic 0.0 0.1 0.06 0.0 0.50980392 0.50980392 0.50196078 0.50196078 0.50196078 0.25
green plastic 0.0 0.0 0.0 0.1 0.35 0.1 0.45 0.55 0.45 0.25
red plastic 0.0 0.0 0.0 0.5 0.0 0.0 0.7 0.6 0.6 0.25
white plastic 0.0 0.0 0.0 0.55 0.55 0.55 0.70 0.70 0.70 0.25
yellow plastic 0.0 0.0 0.0 0.5 0.5 0.0 0.60 0.60 0.50 0.25
black rubber 0.02 0.02 0.02 0.01 0.01 0.01 0.4 0.4 0.4 0.078125
cyan rubber 0.0 0.05 0.05 0.4 0.5 0.5 0.04 0.7 0.7 0.078125
green rubber 0.0 0.05 0.0 0.4 0.5 0.4 0.04 0.7 0.04 0.078125
red rubber 0.05 0.0 0.0 0.5 0.4 0.4 0.7 0.04 0.04 0.078125
white rubber 0.05 0.05 0.05 0.5 0.5 0.5 0.7 0.7 0.7 0.078125
yellow rubber 0.05 0.05 0.0 0.5 0.5 0.4 0.7 0.7 0.04 0.078125

How to use it

OpenGL

Multiply the shininess by 128!

  mat[0] = ambr;
  mat[1] = ambg;
  mat[2] = ambb;
  mat[3] = 1.0;
  glMaterialfv(GL_FRONT, GL_AMBIENT, mat);
  mat[0] = difr;
  mat[1] = difg;
  mat[2] = difb;
  glMaterialfv(GL_FRONT, GL_DIFFUSE, mat);
  mat[0] = specr;
  mat[1] = specg;
  mat[2] = specb;
  glMaterialfv(GL_FRONT, GL_SPECULAR, mat);
  glMaterialf(GL_FRONT, GL_SHININESS, shine * 128.0);

VRML97

Compute ambientIntensity as (0.212671ambr + 0.715160ambg + 0.072169ambb)/(0.212671difr + 0.715160difg + 0.072169difb)

Material {
  ambientIntensity  amb
  diffuseColor      difr digg difb
  specularColor     specr specg specb
  shininess         shine
}

引用地址—–
http://devernay.free.fr/cours/opengl/materials.html

http://web.archive.org/web/20100725103839/http://www.cs.utk.edu/~kuck/materials_ogl.htm

http://www.it.hiof.no/~borres/j3d/explain/light/p-materials.html

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片