110 likes | 181 Views
光線的使用. 光線的種類介紹. Ambient Light( 周遭 ) 光線來自四處 , 非特定位置所發出的光線 特性 被照射的物體 , 在 每個方向 . 角度 上受到 等量 的光線. 光線的種類介紹 (1/2). Diffuse Light( 漫射 ) 有方向性 , 均勻 照射到表面 ex: 午後太陽光從窗戶射入 Specular Light( 反射 ) 有方向性 , 使物體 反射 到某個角度 入射角度有關係 Ex: 聚光燈 , 太陽光 光線成分 : R,G,B,alpha (0~1) alpha: 0 透明 , 1 完全不透明
E N D
光線的種類介紹 • Ambient Light(周遭) • 光線來自四處,非特定位置所發出的光線 • 特性 • 被照射的物體,在每個方向.角度上受到等量的光線
光線的種類介紹(1/2) • Diffuse Light(漫射) • 有方向性,均勻照射到表面 • ex:午後太陽光從窗戶射入 • Specular Light(反射) • 有方向性,使物體反射到某個角度 • 入射角度有關係 • Ex:聚光燈,太陽光 • 光線成分: R,G,B,alpha (0~1) • alpha: 0透明, 1完全不透明 • 任何光源皆由以上三種光線組成,所佔成分有所不同
光線的種類介紹(2/2) • 一般模擬出泥土,樹木,衣料,比較色彩單調的物體,設定Ambient, Diffuse就足夠 • 金屬表面的反射則需要使用 • Specular Light
加入光線 • 啟動燈光: • glEnable(GL_LIGHTING); • 設定 Lighting Model • 1.定義光的亮度 • Glfloat ambientLight [ ] = {1.0f,1.0f,1.0f,alpha} ; • 2.glLightModelfv(GL_LIGHT_MODEL_AMBITNT,ambientLight); • 第一個參數: 設定lightModel參數 • 第二個參數: 以RGB值建構光源
設定光源 • 開啟light 0,及設定強度 • glEnable(GL_LIGHT0) • glLightfv(GL_LIGHT0,GL_AMBIENT,AM_Light) • 參數: • GL_Light0 :可以有8個光源,0~7,開啟第零號光源 • GL_Ambient:使用的光線種類 • AM_Light:設定光線的強度 • Ex: • ------------給與第零號光源-------------- • glLightfv(GL_LIGHT0,GL_DIFFUSE,ambientLight); • glLightfv(GL_LIGHT0,GL_SPECULAR,specular);
設定光源的位置 • 定義位置陣列: • GLfloat lightPos[] = { 0.0f, 0.0f, 60.0f, 1.0f }; • 最後為0,光線在這個陣列所指定的向量無限遠處. • 加入到光源內 • glLightfv(GL_LIGHT0,GL_POSITION,lightPos);
設定材質屬性 • 設定材質屬性 • 目的:經由設定材質,多邊型才能反射光線 • 1.以陣列設定方式 • Glfloat gray[]={0.75f ,0.75f ,0.75f}; • glMaterialfv(GL_FRONT, GL_SPECULAR,gray) • 參數: • Gl_FRONT:材質屬性應用到多邊行的 前,後,兩側 • 指定要哪依種屬性 • RGBA陣列值
設定材質屬性 • 2. color tracking • 直接藉由glcolor來設定材質屬性 • glEnable(GL_COLOR_MATRIAL); • glcolor3f(0.7f,0.7f,0.7f) • glColorMaterial(GL_FONT,GL_AMBIENT_AND_DIFFUSE);
COLOR TRACKING 優點 • 優點: • 節省陣列設定的步驟 • 在多邊型數目多時,執行速度快