版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、計(jì)算機(jī)圖形學(xué)計(jì)算機(jī)圖形學(xué)1第第11章章 真實(shí)感圖形的繪制真實(shí)感圖形的繪制2本章目標(biāo)本章目標(biāo)l掌握真實(shí)感圖形繪制的主要內(nèi)容掌握真實(shí)感圖形繪制的主要內(nèi)容n光照、紋理、陰影等光照、紋理、陰影等l重點(diǎn)掌握光照方程、基本紋理映射及多邊形繪制重點(diǎn)掌握光照方程、基本紋理映射及多邊形繪制l學(xué)會(huì)使用學(xué)會(huì)使用OpenGL的相關(guān)函數(shù)的相關(guān)函數(shù)3第第11章章 真實(shí)感圖形的繪制真實(shí)感圖形的繪制l簡單光照模型簡單光照模型l多邊形繪制方法多邊形繪制方法l紋理映射紋理映射l陰影陰影411.1 簡單光照模型簡單光照模型l光作用光作用n反射反射n透射(透明物體)透射(透明物體)n被物體吸收轉(zhuǎn)化為熱能被物體吸收轉(zhuǎn)化為熱能l假設(shè)假設(shè)
2、n物體不透明,即沒有透射光物體不透明,即沒有透射光l光種類光種類n環(huán)境光、漫反射光和鏡面反射光環(huán)境光、漫反射光和鏡面反射光只有反射光和透射光決定物體的顏色只有反射光和透射光決定物體的顏色511.1 簡單光照模型簡單光照模型11.1.1 環(huán)境光(環(huán)境光(Ambient light)n在物體和周圍環(huán)境之間多次反射后,最終達(dá)到平衡時(shí)的一在物體和周圍環(huán)境之間多次反射后,最終達(dá)到平衡時(shí)的一種光,又稱為背景光種光,又稱為背景光n光強(qiáng)(度):空間上分布均勻,即任何位置和方向光強(qiáng)度光強(qiáng)(度):空間上分布均勻,即任何位置和方向光強(qiáng)度一樣,亮度值記為一樣,亮度值記為Ian反射系數(shù):與物體表面性質(zhì)有關(guān),決定物體表面
3、呈現(xiàn)的亮反射系數(shù):與物體表面性質(zhì)有關(guān),決定物體表面呈現(xiàn)的亮度,記為度,記為Kan光照模型方程光照模型方程 Ie = Ka Ia Ie為物體表面呈現(xiàn)的亮度為物體表面呈現(xiàn)的亮度 Ka = 0.4 Ka = 0.8611.1 簡單光照模型簡單光照模型11.1.2 漫反射(漫反射(Diffuse Reflection)l點(diǎn)光源:向周圍所有方向發(fā)射等強(qiáng)度的光點(diǎn)光源:向周圍所有方向發(fā)射等強(qiáng)度的光l漫反射光是由物體表面的粗糙不平引起的,它均勻地向各漫反射光是由物體表面的粗糙不平引起的,它均勻地向各個(gè)方向傳播,與視點(diǎn)無關(guān)個(gè)方向傳播,與視點(diǎn)無關(guān)l漫反射光在空間均勻分布,反射光強(qiáng)漫反射光在空間均勻分布,反射光強(qiáng)
4、I 與入射光的入射角與入射光的入射角 的余弦成正比,即:的余弦成正比,即: 其中,其中,Kd 是漫反射系數(shù)(是漫反射系數(shù)(01之間的常數(shù)),與物體表面性之間的常數(shù)),與物體表面性質(zhì)有關(guān);質(zhì)有關(guān);Ip 是入射光(光源)的光強(qiáng);是入射光(光源)的光強(qiáng);是入射光的入射角,是入射光的入射角,即入射光與物體表面法向量之間的夾角即入射光與物體表面法向量之間的夾角cospddIKI 711.1 簡單光照模型簡單光照模型l向量表示的計(jì)算向量表示的計(jì)算n設(shè)物體表面在照射點(diǎn)設(shè)物體表面在照射點(diǎn) P 處的單位法向量為處的單位法向量為N,P 到點(diǎn)光源到點(diǎn)光源的單位向量為的單位向量為L,則上式可表達(dá)為如下的向量形式:,則
5、上式可表達(dá)為如下的向量形式:miipddLNIKIi1)()(LNIKIpdd如果有多個(gè)光源,則可以把各個(gè)光源如果有多個(gè)光源,則可以把各個(gè)光源的漫反射光照效果進(jìn)行疊加:的漫反射光照效果進(jìn)行疊加:811.1 簡單光照模型簡單光照模型l環(huán)境光與漫反射光結(jié)合環(huán)境光與漫反射光結(jié)合n方程:方程:n例子:例子:)(NLKIKIIIIdpaade911.1 簡單光照模型簡單光照模型11.1.3 鏡面反射光和馮(鏡面反射光和馮(Phong)反射模型)反射模型l高光(高光(high light):光滑物體表面在點(diǎn)光源的照射下形成一):光滑物體表面在點(diǎn)光源的照射下形成一塊特別亮的區(qū)域塊特別亮的區(qū)域l鏡面反射(鏡面
6、反射(Specular Reflection)n物體表面對入射光的反射物體表面對入射光的反射n遵循反射定律遵循反射定律(1)反射光與入射光位于表面法向兩側(cè))反射光與入射光位于表面法向兩側(cè)(2)理想反射面而言:入射角反射角)理想反射面而言:入射角反射角n觀察者在反射方向上看到反射光最強(qiáng)觀察者在反射方向上看到反射光最強(qiáng)1011.1 簡單光照模型簡單光照模型lPhong模型(非理想反射面)模型(非理想反射面)nspnspsRVKIKII)(cos計(jì)算公式:計(jì)算公式: Ks是物體表面鏡面反射系數(shù),它與是物體表面鏡面反射系數(shù),它與入射角和波長有關(guān);入射角和波長有關(guān); 是視線與反射方向的夾角;是視線與反射
7、方向的夾角; n 為鏡面高光系數(shù),用來模擬鏡面為鏡面高光系數(shù),用來模擬鏡面反射光在空間中的匯聚程度,它是一反射光在空間中的匯聚程度,它是一個(gè)反映物體表面光澤度的常數(shù);個(gè)反映物體表面光澤度的常數(shù); 近似地描述了鏡面反射光的近似地描述了鏡面反射光的空間分布??臻g分布。ncos1111.1 簡單光照模型簡單光照模型l簡化簡化Phong模型模型LNLNRNLLNSNRLNS)(coscoscoscos22RVNHVLH/2/2)2/ )((2SSHnspnspnspsNHKIRVKIKII)()(cosL,N,R都是單位向量都是單位向量1211.1 簡單光照模型簡單光照模型l鏡面參數(shù)鏡面參數(shù) n的影響
8、效果的影響效果n = 15 n = 5 n = 1n 常規(guī)取值常規(guī)取值 5-205-201311.1 簡單光照模型簡單光照模型l局部光照方程局部光照方程n結(jié)合環(huán)境光、漫反射光及鏡面反射光結(jié)合環(huán)境光、漫反射光及鏡面反射光n當(dāng)光源與視點(diǎn)無窮遠(yuǎn)時(shí),對表面上任意一點(diǎn)而言,當(dāng)光源與視點(diǎn)無窮遠(yuǎn)時(shí),對表面上任意一點(diǎn)而言,L和和V固定不變,固定不變,H只需計(jì)算一次只需計(jì)算一次)()(nsdpaasdeNHKNLKIIKIIIIH1411.1 簡單光照模型簡單光照模型11.1.4 光的衰減光的衰減n光在傳播過程中,能量會(huì)衰減光在傳播過程中,能量會(huì)衰減n傳播過程傳播過程u光源到物體表面的傳播,使入射光強(qiáng)度變?nèi)豕庠?/p>
9、到物體表面的傳播,使入射光強(qiáng)度變?nèi)鮱物體表面到人眼的傳播,使人接受到物體表面的反射光強(qiáng)度減弱物體表面到人眼的傳播,使人接受到物體表面的反射光強(qiáng)度減弱n光到物體表面的衰減光到物體表面的衰減n考慮衰減的方程考慮衰減的方程1 ,1min)(1)(22102dcdccdfddf)()()(nsdpaasdeNHKNLKIdfIKIIII1511.1 簡單光照模型簡單光照模型n物體表面到人眼過程中的衰減物體表面到人眼過程中的衰減u深度暗示技術(shù)(深度暗示技術(shù)(Depth Cueing)u使據(jù)視點(diǎn)遠(yuǎn)的點(diǎn)比近的點(diǎn)暗一些使據(jù)視點(diǎn)遠(yuǎn)的點(diǎn)比近的點(diǎn)暗一些亮度計(jì)算亮度計(jì)算u前參考面前參考面 n=Nf;后參考面;后參考面
10、 n=Nb(規(guī)范化視見體內(nèi))(規(guī)范化視見體內(nèi))u分別賦比例因子分別賦比例因子Sf和和Sb (Sf Sb)u給點(diǎn)物體上的一點(diǎn)的深度給點(diǎn)物體上的一點(diǎn)的深度N0, 比例因子比例因子S0,)(fbbfbbfbfbbfNNNNNNNNNNNSSSSSS000001611.1 簡單光照模型簡單光照模型亮度計(jì)算亮度計(jì)算u光照方程計(jì)算出的光照方程計(jì)算出的I按比例按比例S0與熔合亮度與熔合亮度Idc混合混合u若若Sf=1,Sb=0,Idc=0時(shí)時(shí)(1)當(dāng)物體位于前參考面前,)當(dāng)物體位于前參考面前,I=I(2)當(dāng)物體位于后參考面后,)當(dāng)物體位于后參考面后,I=0(3)N0在在Nb和和Nf間時(shí),間時(shí), I=S0I,
11、亮度部分衰減,亮度部分衰減dcISISI)(0011711.1 簡單光照模型簡單光照模型13.1.5 產(chǎn)生顏色產(chǎn)生顏色n前面的光照模型僅用于白光,只能產(chǎn)生灰度前面的光照模型僅用于白光,只能產(chǎn)生灰度n彩色模型計(jì)算彩色模型計(jì)算u選擇合適模型(如選擇合適模型(如RGB、HSV等)等)u為顏色的三個(gè)分量分別建立光照方程為顏色的三個(gè)分量分別建立光照方程nRGB模型模型u光源的顏色光源的顏色I(xiàn)pR, IpG, IpB,環(huán)境光的顏色,環(huán)境光的顏色I(xiàn)aR, IaG, IaBu表面反射系數(shù)表面反射系數(shù)(1)環(huán)境反射:)環(huán)境反射: KaR, KaG, KaB(2)漫反射:)漫反射: KdR, KdG, KdB(3
12、)鏡面反射:)鏡面反射: KsR, KsG, KsB1811.1 簡單光照模型簡單光照模型 彩色光照方程(模型)彩色光照方程(模型))()()()()()()()()(nsBdBpBaBaBBnsGdGpGaGaGGnsRdRpRaRaRRNHKNLKIdfIKINHKNLKIdfIKINHKNLKIdfIKI1911.1 簡單光照模型簡單光照模型11.1.6 多個(gè)光源多個(gè)光源 如果場景中有如果場景中有m個(gè)光源,那么物體上任一點(diǎn)的亮度應(yīng)該為個(gè)光源,那么物體上任一點(diǎn)的亮度應(yīng)該為m個(gè)光源的貢獻(xiàn)之和個(gè)光源的貢獻(xiàn)之和 在在RGB彩色模型中,彩色模型中,分別為分別為R、G和和B。 注意:注意:I可能會(huì)超
13、出系統(tǒng)允許的最大亮度值,處理方法可能會(huì)超出系統(tǒng)允許的最大亮度值,處理方法 (1)截去超出部分,設(shè)置為最大值)截去超出部分,設(shè)置為最大值 (2)首先計(jì)算出所有亮度值,)首先計(jì)算出所有亮度值, 再進(jìn)行變換(如縮放變換)再進(jìn)行變換(如縮放變換) 使其落在系統(tǒng)規(guī)定范圍之內(nèi)使其落在系統(tǒng)規(guī)定范圍之內(nèi)minisidpiaaNHKNLKIdfIKIi1)()()(2011.1 簡單光照模型簡單光照模型11.1.7 OpneGL光照函數(shù)光照函數(shù)(1)OpenGL 光組成光組成 在在OpenGL簡單光照模型中的幾種光分為:環(huán)境光簡單光照模型中的幾種光分為:環(huán)境光(Ambient Light)、漫射光、漫射光(Di
14、ffuse Light)、鏡面光、鏡面光(Specular Light)。(2)創(chuàng)建光源)創(chuàng)建光源(Light Source) void glLightifv(GLenum light , GLenum pname, TYPE param)l創(chuàng)建具有某種特性的光源。其中第一個(gè)參數(shù)創(chuàng)建具有某種特性的光源。其中第一個(gè)參數(shù)light指定所創(chuàng)指定所創(chuàng)建的光源號,如建的光源號,如GL_LIGHT0、GL_LIGHT1、.、GL_LIGHT7。第二個(gè)參數(shù)。第二個(gè)參數(shù)pname指定光源特性,這個(gè)參數(shù)指定光源特性,這個(gè)參數(shù)的輔助信息見表的輔助信息見表11-1-7-1所示。最后一個(gè)參數(shù)設(shè)置相應(yīng)的光所示。最后一個(gè)
15、參數(shù)設(shè)置相應(yīng)的光源特性值。源特性值。 2111.1 簡單光照模型簡單光照模型函數(shù)函數(shù)glLight*()參數(shù)參數(shù)pname及及param說明說明 2211.1 簡單光照模型簡單光照模型(3)啟動(dòng)光照)啟動(dòng)光照 l在在OpenGL中,必須明確指出光照是否有效或無效。如果光照無中,必須明確指出光照是否有效或無效。如果光照無效,則只是簡單地將當(dāng)前顏色映射到當(dāng)前頂點(diǎn)上去,不進(jìn)行法向、效,則只是簡單地將當(dāng)前顏色映射到當(dāng)前頂點(diǎn)上去,不進(jìn)行法向、光源等復(fù)雜計(jì)算,那么顯示的圖形就沒有真實(shí)感光源等復(fù)雜計(jì)算,那么顯示的圖形就沒有真實(shí)感l(wèi)要使光照有效,首先得啟動(dòng)光照,即:要使光照有效,首先得啟動(dòng)光照,即: glEn
16、able(GL_LIGHTING); 若使光照無效,則調(diào)用若使光照無效,則調(diào)用 gDisable(GL_LIGHTING) 可關(guān)閉當(dāng)可關(guān)閉當(dāng)前光照。前光照。l然后,必須使所定義的每個(gè)光源有效。然后,必須使所定義的每個(gè)光源有效。 glEnable(GL_LIGHT0); 其它光源類似,只是光源號不同而已其它光源類似,只是光源號不同而已2311.1 簡單光照模型簡單光照模型(4)例:簡單光照)例:簡單光照#include #include #pragma comment (lib,glaux.lib) void myinit(void) GLfloat light_position = 1.0,
17、1.0, 1.0, 0.1 ; GLfloat light_color = 1.0, 0.0, 0.0, 1.0 ; glLightfv(GL_LIGHT0, GL_POSITION, light_position); glLightfv(GL_LIGHT0, GL_AMBIENT, light_color); glLightfv(GL_LIGHT0, GL_DIFFUSE, light_color); glLightfv(GL_LIGHT0, GL_SPECULAR, light_color); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEn
18、able(GL_DEPTH_TEST); void display(void) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); auxSolidSphere(1.0);/繪制球體繪制球體 glFlush();2411.1 簡單光照模型簡單光照模型void myReshape(int w, int h) glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if (w = h) glOrtho (-1.5, 1.5, -1.5*(GLfloat)h/(G
19、Lfloat)w, 1.5*(GLfloat)h/(GLfloat)w, -10.0, 10.0); else glOrtho (-1.5*(GLfloat)w/(GLfloat)h, 1.5*(GLfloat)w/(GLfloat)h, -1.5, 1.5, -10.0, 10.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity();2511.1 簡單光照模型簡單光照模型void main(void) glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);glutInitWindowSize (250, 250);
20、 glutInitWindowPosition (300, 300);glutCreateWindow (Simple Lighting); myinit(); glutReshapeFunc (myReshape);glutDisplayFunc(display); glutMainLoop();2611.1 簡單光照模型簡單光照模型(5)聚光)聚光 定位光源可以定義成聚光燈形式,即將光的形狀限制在一個(gè)定位光源可以定義成聚光燈形式,即將光的形狀限制在一個(gè)圓錐內(nèi)。圓錐內(nèi)。 一、定義聚光源位置。一、定義聚光源位置。 因?yàn)榫酃庠匆彩嵌ㄏ蚬庠矗驗(yàn)榫酃庠匆彩嵌ㄏ蚬庠矗?所以他的位置同一般定向光一樣。
21、所以他的位置同一般定向光一樣。如:如: GLfloat light_position=1.0,1.0,1.0,1.0; glLightfv(GL_LIGHT0,LIGHT_POSITION, light_position);2711.1 簡單光照模型簡單光照模型二、定義聚光截止角二、定義聚光截止角 參數(shù)參數(shù)GL_SPOT_CUTOFF給定光錐的軸與中給定光錐的軸與中 心線的夾角,也可心線的夾角,也可說成是光錐頂角的一半。說成是光錐頂角的一半。 缺省時(shí),這個(gè)參數(shù)為缺省時(shí),這個(gè)參數(shù)為180.0,即頂角為,即頂角為360度,度,光向所有的方向發(fā)射,因此聚光關(guān)閉。光向所有的方向發(fā)射,因此聚光關(guān)閉。 一
22、般在聚光啟動(dòng)情況下,聚光截止角限制在一般在聚光啟動(dòng)情況下,聚光截止角限制在0.0,90.0之間,如下面一行代碼設(shè)置截止角為之間,如下面一行代碼設(shè)置截止角為45度:度: glLightf(GL_LIGHT0,GL_SPOT_CUTOFF,45.0);2811.1 簡單光照模型簡單光照模型三、定義聚光方向三、定義聚光方向 聚光方向決定光錐的軸,它齊次坐標(biāo)定義,其缺省值為聚光方向決定光錐的軸,它齊次坐標(biāo)定義,其缺省值為(0.0,0.0,-1.0 ),即指向即指向Z負(fù)軸。聚光方向也要進(jìn)行幾何變換,其結(jié)果保存在視點(diǎn)坐標(biāo)中。負(fù)軸。聚光方向也要進(jìn)行幾何變換,其結(jié)果保存在視點(diǎn)坐標(biāo)中。 定義如下:定義如下: G
23、Lfloat spot_direction=-1.0,-1.0,0.0,-1; glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION, spot_direction);四、定義聚光指數(shù)四、定義聚光指數(shù) 參數(shù)參數(shù)GL_SPOT_EXPONENT控制光的集中控制光的集中程度,光錐中心的光強(qiáng)最大,越靠邊的光強(qiáng)越小,程度,光錐中心的光強(qiáng)最大,越靠邊的光強(qiáng)越小,缺省時(shí)為缺省時(shí)為0。如:。如: glLightf(GL_LIGHT0,GL_SPOT_EXPONENT,2.0);2911.1 簡單光照模型簡單光照模型(6)例:多光源)例:多光源 #include #include #pr
24、agma comment (lib,glaux.lib)/* 初始化光源、材質(zhì)等初始化光源、材質(zhì)等 */void myinit(void) GLfloat mat_ambient= 0.2, 0.2, 0.2, 1.0 ; GLfloat mat_diffuse= 0.8, 0.8, 0.8, 1.0 ; GLfloat mat_specular = 1.0, 1.0, 1.0, 1.0 ; GLfloat mat_shininess = 50.0 ; GLfloat light0_diffuse= 0.0, 0.0, 1.0, 1.0; GLfloat light0_position = 1
25、.0, 1.0, 1.0, 0.0 ; GLfloat light1_ambient= 0.2, 0.2, 0.2, 1.0 ; GLfloat light1_diffuse= 1.0, 0.0, 0.0, 1.0 ; GLfloat light1_specular = 1.0, 0.6, 0.6, 1.0 ; GLfloat light1_position = -3.0, -3.0, 3.0, 1.0 ; GLfloat spot_direction= 1.0,1.0,-1.0; glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); glMater
26、ialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); / 轉(zhuǎn)下頁轉(zhuǎn)下頁3011.1 簡單光照模型簡單光照模型 /接上頁接上頁 glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_diffuse); glLightfv(GL_LIGHT0, GL_POSITION,light0_position); glLightfv(GL_LIGH
27、T1, GL_AMBIENT, light1_ambient); glLightfv(GL_LIGHT1, GL_DIFFUSE, l ight1_diffuse); glLightfv(GL_LIGHT1, GL_SPECULAR,light1_specular); glLightfv(GL_LIGHT1, GL_POSITION,light1_position); glLightf (GL_LIGHT1, GL_SPOT_CUTOFF, 30.0); glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, spot_direction); glEnable(GL_L
28、IGHTING); glEnable(GL_LIGHT0); glEnable(GL_LIGHT1); glDepthFunc(GL_LESS); glEnable(GL_DEPTH_TEST);3111.1 簡單光照模型簡單光照模型void display(void) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glPushMatrix(); glTranslated (-3.0, -3.0, 3.0);/光源光源1位置位置 glDisable (GL_LIGHTING); glColor3f (1.0, 0.0, 0.0); aux
29、WireCube (0.1);/繪制光源繪制光源1 glEnable (GL_LIGHTING);glPopMatrix (); auxSolidSphere(2.0);glFlush();3211.1 簡單光照模型簡單光照模型void myReshape(GLsizei w, GLsizei h) glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if (w = h)glOrtho (-5.5, 5.5, -5.5*(GLfloat)h/(GLfloat)w, 5.5*(GLfloat)h/(GLfl
30、oat)w, -10.0, 10.0); else glOrtho (-5.5*(GLfloat)w/(GLfloat)h, 5.5*(GLfloat)w/(GLfloat)h, -5.5, 5.5, -10.0, 10.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity();void main(void) glutInitDisplayMode (GLUT_SINGLE GLUT_RGBA); glutInitWindowSize (250, 250); glutInitWindowPosition (300, 300); glutCreateWin
31、dow (Multi_lights); myinit(); glutReshapeFunc (myReshape); glutDisplayFunc(display); glutMainLoop();33第第11章章 真實(shí)感圖形的繪制真實(shí)感圖形的繪制l簡單光照模型簡單光照模型l多邊形繪制方法多邊形繪制方法l紋理映射紋理映射l陰影陰影3411.2 多邊形繪制方法多邊形繪制方法11.2.1 均勻著色均勻著色(Flat Shading)n方法方法u任取多邊形上一點(diǎn),利用光照明方程計(jì)算出它的顏色任取多邊形上一點(diǎn),利用光照明方程計(jì)算出它的顏色u用這個(gè)顏色填充整個(gè)多邊形用這個(gè)顏色填充整個(gè)多邊形n適合于如下
32、情況適合于如下情況u光源在無窮遠(yuǎn)處,光源在無窮遠(yuǎn)處,LN 相等相等u視點(diǎn)在無窮遠(yuǎn)處,視點(diǎn)在無窮遠(yuǎn)處,HN 相等相等u多邊形是物體表面的精確表示多邊形是物體表面的精確表示n特點(diǎn)特點(diǎn)u優(yōu)點(diǎn):每個(gè)多邊形只需計(jì)算一次光照明方程,速度快優(yōu)點(diǎn):每個(gè)多邊形只需計(jì)算一次光照明方程,速度快u缺點(diǎn):相鄰多邊形顏色過渡不光滑缺點(diǎn):相鄰多邊形顏色過渡不光滑3511.2 多邊形繪制方法多邊形繪制方法11.2.2 光滑著色(光滑著色(Smooth Shading)n采用插值方法采用插值方法nGouraud(高洛德高洛德 )方法方法u用多邊形頂點(diǎn)的顏色進(jìn)行插值生成中間點(diǎn)的顏色用多邊形頂點(diǎn)的顏色進(jìn)行插值生成中間點(diǎn)的顏色nPh
33、one(馮馮)方法方法u對頂點(diǎn)的法向量進(jìn)行插值計(jì)算出中間點(diǎn)的法向量對頂點(diǎn)的法向量進(jìn)行插值計(jì)算出中間點(diǎn)的法向量3611.2 多邊形繪制方法多邊形繪制方法11.2.3 Gouraud 著色方法(顏色插值方法)著色方法(顏色插值方法)主要步驟主要步驟1、計(jì)算多邊形的單位法向量、計(jì)算多邊形的單位法向量2、計(jì)算多邊形頂點(diǎn)的單位法向量(共享頂點(diǎn)的多邊形法向量的平均值)、計(jì)算多邊形頂點(diǎn)的單位法向量(共享頂點(diǎn)的多邊形法向量的平均值)3、利用光照明方程計(jì)算頂點(diǎn)顏色、利用光照明方程計(jì)算頂點(diǎn)顏色4、對多邊形頂點(diǎn)顏色進(jìn)行雙線性插值,獲得多邊形內(nèi)部各點(diǎn)的顏色、對多邊形頂點(diǎn)顏色進(jìn)行雙線性插值,獲得多邊形內(nèi)部各點(diǎn)的顏色37
34、11.2 多邊形繪制方法多邊形繪制方法(1)計(jì)算多邊形頂點(diǎn)的單位法)計(jì)算多邊形頂點(diǎn)的單位法向向量量 近似取頂點(diǎn)近似取頂點(diǎn)v的法向量為共享該頂點(diǎn)的多邊形單位法向的法向量為共享該頂點(diǎn)的多邊形單位法向量的平均值量的平均值niiniivNNN113811.2 多邊形繪制方法多邊形繪制方法(2)內(nèi)部點(diǎn)顏色計(jì)算:雙線性插值)內(nèi)部點(diǎn)顏色計(jì)算:雙線性插值 已知已知P1(x1, y1)、 P2(x2, y2)、 P3(x3, y3),顏色分別為,顏色分別為I1、I2和和I3。A( xA, yA)和和B( xB, yB)為交點(diǎn),為交點(diǎn),P(x , y)為)為AB上一上一點(diǎn),計(jì)算點(diǎn),計(jì)算P點(diǎn)的顏色點(diǎn)的顏色22111
35、212IyyyyIyyyyIAAA33111313IyyyyIyyyyIBBBBABAAABBPIxxxxIxxxxI3911.2 多邊形繪制方法多邊形繪制方法增量法優(yōu)化計(jì)算增量法優(yōu)化計(jì)算IA,IB,IP(1)掃描線)掃描線 y 遞增為遞增為 y+1,IA和和IB的增量分別為的增量分別為IA和和IB(2)當(dāng))當(dāng)x遞增一個(gè)單位(遞增一個(gè)單位(P點(diǎn)沿掃描線右移一個(gè)單位)時(shí),點(diǎn)沿掃描線右移一個(gè)單位)時(shí),IP的增量為的增量為IP13131212,-,-yyIIIyyIIIIIIIIIBAByByBAyAyA其中其中11ABABPPxPxPxxIIIIII-,其中其中14011.2 多邊形繪制方法多邊形
36、繪制方法11.2.3 Phong 著色方法(法向插值著色方法)著色方法(法向插值著色方法)方法:通過對多邊形頂點(diǎn)法向量進(jìn)行插值,獲得多邊形內(nèi)方法:通過對多邊形頂點(diǎn)法向量進(jìn)行插值,獲得多邊形內(nèi) 部各點(diǎn)的法向量,再利用光照方程計(jì)算各點(diǎn)的亮度部各點(diǎn)的法向量,再利用光照方程計(jì)算各點(diǎn)的亮度主要步驟:主要步驟:1、計(jì)算多邊形單位法向量、計(jì)算多邊形單位法向量2、計(jì)算多邊形頂點(diǎn)單位法向量、計(jì)算多邊形頂點(diǎn)單位法向量(以上兩步同(以上兩步同Gouraud著色方法)著色方法)3、對多邊形頂點(diǎn)法向量進(jìn)行雙線性插值,、對多邊形頂點(diǎn)法向量進(jìn)行雙線性插值, 獲得內(nèi)部各點(diǎn)的法向量獲得內(nèi)部各點(diǎn)的法向量4、利用光照明方程計(jì)算多邊
37、形內(nèi)部各點(diǎn)顏色、利用光照明方程計(jì)算多邊形內(nèi)部各點(diǎn)顏色4111.2 多邊形繪制方法多邊形繪制方法l法向量雙線性插值法向量雙線性插值22111212NyyyyNyyyyNAAA33111313NyyyyNyyyyNBBBBABAAABBPNxxxxNxxxxN4211.2 多邊形繪制方法多邊形繪制方法l法向量雙線性插值計(jì)算優(yōu)化法向量雙線性插值計(jì)算優(yōu)化(1)掃描線)掃描線 y 遞增為遞增為 y+1,NA和和NB的增量分別為的增量分別為NA和和NB(2)當(dāng))當(dāng)x遞增一個(gè)單位(遞增一個(gè)單位(P點(diǎn)沿掃描線右移一個(gè)單位)時(shí),點(diǎn)沿掃描線右移一個(gè)單位)時(shí),NP的增的增量為量為NP13131212,-,-NNNN
38、NyyNNNNNNNNNBAByByBAyAyA其中其中11ABABPPxPxPxxNNNNNN-,其中其中143第第11章章 真實(shí)感圖形的繪制真實(shí)感圖形的繪制l簡單光照模型簡單光照模型l多邊形繪制方法多邊形繪制方法l紋理映射紋理映射l陰影陰影4411.3 紋理映射l背景背景n光照模型只能生成光滑的物體表面光照模型只能生成光滑的物體表面n自然界中的物體表面具有豐富的細(xì)節(jié),如木紋、桔子凹凸自然界中的物體表面具有豐富的細(xì)節(jié),如木紋、桔子凹凸表面、沙礫路面表面、沙礫路面n豐富的表面細(xì)節(jié)難以用計(jì)算機(jī)圖形方法生成豐富的表面細(xì)節(jié)難以用計(jì)算機(jī)圖形方法生成n采用將圖片貼到物體表面上的方法繪制采用將圖片貼到物體
39、表面上的方法繪制櫻桃木櫻桃木桔子凹凸面桔子凹凸面沙礫路面沙礫路面4511.3 紋理映射l紋理(紋理(Texture)n紋理是物體表面的細(xì)小結(jié)構(gòu),它可以是光滑表面的花紋理是物體表面的細(xì)小結(jié)構(gòu),它可以是光滑表面的花紋、圖案,即顏色紋理紋、圖案,即顏色紋理(2D)n紋理也可以是物體表面的三維結(jié)構(gòu)紋理也可以是物體表面的三維結(jié)構(gòu)n紋理還可以是粗糙的表面紋理還可以是粗糙的表面(如桔子表面的皺紋如桔子表面的皺紋),稱為,稱為幾何紋理,是基于物體表面的微觀幾何形狀的表面紋幾何紋理,是基于物體表面的微觀幾何形狀的表面紋理理4611.3 紋理映射l紋理(續(xù))紋理(續(xù))n紋理空間:紋理圖案所在空間,記為紋理空間:紋
40、理圖案所在空間,記為st坐標(biāo)系(一般是平坐標(biāo)系(一般是平面)面)n紋素(紋素(texel):紋理最小單元,位置由紋理坐標(biāo)():紋理最小單元,位置由紋理坐標(biāo)(s,t)標(biāo)識標(biāo)識n兩種來源兩種來源u數(shù)字圖像,用二維數(shù)組表示數(shù)字圖像,用二維數(shù)組表示u數(shù)學(xué)公式定義得紋理函數(shù)數(shù)學(xué)公式定義得紋理函數(shù)4711.3 紋理映射l紋理映射(紋理映射(Texture Mapping)n將一塊紋理圖案映射到物體表面上,產(chǎn)生物體表面的細(xì)將一塊紋理圖案映射到物體表面上,產(chǎn)生物體表面的細(xì)節(jié)節(jié)n顏色計(jì)算方法顏色計(jì)算方法u用表面上點(diǎn)對應(yīng)的紋素值代替該點(diǎn)的漫反射系數(shù)用表面上點(diǎn)對應(yīng)的紋素值代替該點(diǎn)的漫反射系數(shù)u紋理與物體表面的對應(yīng)關(guān)
41、系紋理與物體表面的對應(yīng)關(guān)系n紋理坐標(biāo):紋理坐標(biāo):s,t變化范圍變化范圍0,122110021010tsctsbtsatscbacbacPbPaPP,PT4811.3 紋理映射l實(shí)例:圓柱面映射實(shí)例:圓柱面映射 圓柱面上的點(diǎn)圓柱面上的點(diǎn)對應(yīng)的紋理坐標(biāo)對應(yīng)的紋理坐標(biāo)hhyts2360/styxz22hyhryryP)cos,sin(),(rh4911.3 紋理映射l實(shí)例:球面映射實(shí)例:球面映射 和和變化范圍分別變化范圍分別0,3600,360和和-90,90-90,90(1)(2)球面垂直向外映射到柱面上,再將柱面球面垂直向外映射到柱面上,再將柱面展開到矩形上展開到矩形上212360sin,ts2
42、1180360ts,)coscos,sin,cossin(),(rrrP5011.3 紋理映射紋理映射l實(shí)例:圓環(huán)面映射實(shí)例:圓環(huán)面映射R是環(huán)的主半徑,是環(huán)的主半徑,r是次半徑;是次半徑;和和變化范圍變化范圍0,3600,360)cos)cos( ,sin,sin)cos(),(rRrrRP360360ts,Rr對應(yīng)的紋理坐標(biāo)對應(yīng)的紋理坐標(biāo)5111.3 紋理映射紋理映射lOpenGL函數(shù)函數(shù)n紋理映射是一個(gè)相當(dāng)復(fù)雜的過程,最基本的執(zhí)行紋理映紋理映射是一個(gè)相當(dāng)復(fù)雜的過程,最基本的執(zhí)行紋理映射所需的步驟?;静襟E如下:射所需的步驟?;静襟E如下: 一、定義紋理;一、定義紋理; 二、控制濾波;二、控
43、制濾波; 三、說明映射方式;三、說明映射方式; 四、激活紋理;四、激活紋理; 五、繪制圖形,即給出頂點(diǎn)的紋理坐標(biāo)和幾何坐標(biāo)。五、繪制圖形,即給出頂點(diǎn)的紋理坐標(biāo)和幾何坐標(biāo)。 注意:紋理映射只能在注意:紋理映射只能在RGBA方式下執(zhí)行,不能運(yùn)用方式下執(zhí)行,不能運(yùn)用于顏色表方式。于顏色表方式。 5211.3 紋理映射紋理映射一、定義紋理一、定義紋理 二維紋理定義的函數(shù):二維紋理定義的函數(shù): void glTexImage2D(GLenum target, GLint level, Glint components, GLsizei width, glsizei height, GLint borde
44、r, GLenum format, GLenum type, const GLvoid *pixels);ltarget是常數(shù)是常數(shù)GL_TEXTURE_2D ;level表示多級分辨率的紋理圖像的級數(shù),若只有一種分辨表示多級分辨率的紋理圖像的級數(shù),若只有一種分辨率,則率,則level設(shè)為設(shè)為0;lcomponents是一個(gè)從是一個(gè)從1到到4的整數(shù),指出選擇了的整數(shù),指出選擇了R、G、B、A中的哪些分量用于調(diào)整和混合,中的哪些分量用于調(diào)整和混合,1表示選擇了表示選擇了R分量,分量,2表表示選擇了示選擇了R和和A兩個(gè)分量,兩個(gè)分量,3表示選擇了表示選擇了R、G、B三個(gè)分量,三個(gè)分量,4表示選擇了
45、表示選擇了R、G、B、A四個(gè)分量;四個(gè)分量; 5311.3 紋理映射紋理映射lwidth和和height給出了紋理圖像的長度和寬度;給出了紋理圖像的長度和寬度;border為紋理邊界為紋理邊界寬度,它通常為寬度,它通常為0,width和和height必須是必須是2m+2b,這里,這里m是整數(shù),是整數(shù),長和寬可以有不同的值,長和寬可以有不同的值,b是是border的值。紋理映射的最大尺寸的值。紋理映射的最大尺寸依賴于依賴于OpenGL,但它至少必須是使用,但它至少必須是使用64x64(若帶邊界為(若帶邊界為66x66),若),若width和和height設(shè)置為設(shè)置為0,則紋理映射有效地關(guān)閉;,則
46、紋理映射有效地關(guān)閉;l參數(shù)參數(shù)format和和type描述了紋理映射的格式和數(shù)據(jù)類型,參數(shù)描述了紋理映射的格式和數(shù)據(jù)類型,參數(shù)format可以是可以是GL_RGB、GL_RGBA、GL_RED、GL_GREEN、GL_BLUE、GL_ALPHA、GL_LUMINANCE或或GL_LUMINANCE_ALPHA;參數(shù);參數(shù)type是是GL_BYPE、GL_UNSIGNED_BYTE、GL_SHORT、GL_UNSIGNED_SHORT、GL_INT、GL_UNSIGNED_INT、GL_FLOAT或或GL_BITMAP;l參數(shù)參數(shù)pixels包含了紋理圖像數(shù)據(jù),這個(gè)數(shù)據(jù)描述了紋理圖像本身包含了紋
47、理圖像數(shù)據(jù),這個(gè)數(shù)據(jù)描述了紋理圖像本身和它的邊界。和它的邊界。5411.3 紋理映射紋理映射二、控制濾波;二、控制濾波; void glTexParameterifv(GLenum target, GLenum pname, TYPE param); l參數(shù)參數(shù)target可以是可以是GL_TEXTURE_1D或或GL_TEXTURE_2DlPname和和paramPnameparamGL_TEXTURE_WRAP_SGL_CLAM或或GL_REPEATGL_TEXTURE_WRAP_TGL_CLAM或或GL_REPEATGL_TEXTURE_MAG_FILTERGL_NEAREST或或GL_
48、LINEARGL_TEXTURE_MIN_FILTERGL_NEAREST或或GL_LINEAR.5511.3 紋理映射紋理映射三、設(shè)置紋理映射方式三、設(shè)置紋理映射方式l可以用紋理中的值來取代多邊形(曲面)原來的顏色,或可以用紋理中的值來取代多邊形(曲面)原來的顏色,或用紋理圖像中的顏色與多邊形(曲面)原來的顏色進(jìn)行混用紋理圖像中的顏色與多邊形(曲面)原來的顏色進(jìn)行混合。合。lvoid glTexEnvifv(GLenum target, GLenum pname, TYPE param);l參數(shù)參數(shù)target必須是必須是GL_TEXTURE_ENV;l若參數(shù)若參數(shù)pname是是GL_TEX
49、TURE_ENV_MODE,則參數(shù),則參數(shù)param可可以是以是GL_DECAL、GL_MODULATE或或GL_BLEND,以說明紋,以說明紋理值怎樣與原來表面顏色的處理方式;若參數(shù)理值怎樣與原來表面顏色的處理方式;若參數(shù)pname是是GL_TEXTURE_ENV_COLOR,則參數(shù),則參數(shù)param是包含四個(gè)浮點(diǎn)是包含四個(gè)浮點(diǎn)數(shù)(分別是數(shù)(分別是R、G、B、a分量)的數(shù)組,這些值只在采用分量)的數(shù)組,這些值只在采用GL_BLEND紋理函數(shù)時(shí)才有用。紋理函數(shù)時(shí)才有用。5611.3 紋理映射紋理映射四、激活紋理;四、激活紋理; glEnable(GL_TEXTURE_2D);五、定義紋理坐標(biāo)五
50、、定義紋理坐標(biāo)n在繪制紋理映射圖形時(shí),不僅要給每個(gè)頂點(diǎn)定義幾何坐在繪制紋理映射圖形時(shí),不僅要給每個(gè)頂點(diǎn)定義幾何坐標(biāo),而且也要定義紋理坐標(biāo)。標(biāo),而且也要定義紋理坐標(biāo)。 nvoid glTexCoord1234sifdv(TYPE coords); 設(shè)置當(dāng)前紋理坐標(biāo),此后調(diào)用設(shè)置當(dāng)前紋理坐標(biāo),此后調(diào)用glVertex*()所產(chǎn)生的頂所產(chǎn)生的頂點(diǎn)都賦予當(dāng)前的紋理坐標(biāo)。點(diǎn)都賦予當(dāng)前的紋理坐標(biāo)。 5711.3 紋理映射紋理映射l例:簡單紋理映射例:簡單紋理映射#include #include #define nRows 128#define nCols 128GLubyte Image3*nRows*
51、nCols;/生成黑白棋盤格圖像數(shù)據(jù)生成黑白棋盤格圖像數(shù)據(jù)void makeCheckerboard(void) long count=0; for (int i=0; i nRows; i+) for (int j=0; j nCols; j+) GLubyte c=(i/8)+(j/8)%2) * 255;Imagecount+ = c; Imagecount+ = c;Imagecount+ = c; 5811.3 紋理映射紋理映射/紋理初始化紋理初始化void myinit(void) glClearColor (0.0, 0.0, 0.0, 0.0); makeCheckerboar
52、d(); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);/GL_REPEAT glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);/GL_CLAMP glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameterf(GL_TEXTURE_2D,
53、 GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, nRows, nCols,0,GL_RGB, GL_UNSIGNED_BYTE, Image); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LESS); glEnable(GL_TEXTURE_2D); 5911.3 紋理映射紋理映射/繪制圖形繪制圖形void drawRect()/正方形正方形glBegin(GL_POLYGON);glTexCoord2f(1,0);glVertex3f(-2,2,0);g
54、lTexCoord2f(1,1);glVertex3f(2,2,0);glTexCoord2f(0,1);glVertex3f(2,-2,0);glTexCoord2f(0,0);glVertex3f(-2,-2,0);glEnd();6011.3 紋理映射紋理映射#define nH 30#define nC 30void drawClinder(float r,float h) /繪制圓柱面繪制圓柱面 float dh = (float)h/nH; float dc = 2*3.14/nC; float xnC+1,znC+1,y1,y2; float snC+1,t1,t2; for (
55、int j=0; j=nC; j+) xj=r*sin(j*dc); zj=r*cos(j*dc); sj=j*dc/3.14/2; for(int i=0; i=nH; i+) if (i!=0) y1=y2; t1=t2; y2=i*dh-0.5*h; t2=(y1+0.5*h)/h; if (i=0) continue; for (j=0;jnC; j+) glBegin(GL_POLYGON); glTexCoord2f(sj,t1); glVertex3f(xj,y1,zj); glTexCoord2f(sj+1,t1); glVertex3f(xj+1,y1,zj+1); glTe
56、xCoord2f(sj+1,t2); glVertex3f(xj+1,y2,zj+1); glTexCoord2f(sj,t2); glVertex3f(xj,y2,zj); glEnd(); 6111.3 紋理映射紋理映射void drawTorus(float r,float R)/繪制圓環(huán)繪制圓環(huán) float dh = 6.28/nH; float dc = 6.28/nC; float s; for(int i=0; inC; i+) for (int j=0;jnH; j+) glBegin(GL_POLYGON); s=i*dc/6.28; float sx=r*cos(j*dh)
57、; float sx1=r*cos(j*dh+dh); glTexCoord2f(s,j*dh/6.28); glVertex3f(R+sx)*sin(i*dc),r*sin(j*dh),(R+sx)*cos(i*dc); glTexCoord2f(s,(j+1)*dh/6.28); glVertex3f(R+sx1)*sin(i*dc),r*sin(j*dh+dh),(R+sx1)*cos(i*dc); s=(i+1)*dh/3.14/2; glTexCoord2f(s,(j*dh+dh)/6.28); glVertex3f(R+sx1)*sin(i+1)*dc),r*sin(j*dh+dh),(R+sx1)*cos(i+1)*dc); glTexCoord2f(s,(j*dh)/6.28); glVertex3f(R+sx)*si
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年2-氯-5-甲基吡啶項(xiàng)目發(fā)展計(jì)劃
- 2024土地買賣合同
- 蘇教版四年級下冊數(shù)學(xué)第三單元 三位數(shù)乘兩位數(shù) 測試卷有答案解析
- 2024年高純砷及氧化砷項(xiàng)目建議書
- 鹽城師范學(xué)院《射箭》2022-2023學(xué)年第一學(xué)期期末試卷
- 鹽城師范學(xué)院《三維場景制作》2021-2022學(xué)年第一學(xué)期期末試卷
- 鹽城師范學(xué)院《節(jié)能原理與技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年人工心肺機(jī)項(xiàng)目建議書
- 2024年管業(yè):地暖專用管合作協(xié)議書
- 家政服務(wù)清潔工小時(shí)工合同
- JTG∕T L80-2014 高速公路改擴(kuò)建交通工程及沿線設(shè)施設(shè)計(jì)細(xì)則
- 五年級上冊小學(xué)高年級學(xué)生讀本第11講《國家安全是頭等大事》教學(xué)設(shè)計(jì)
- 2024年全國注冊消防工程師之消防技術(shù)綜合能力考試重點(diǎn)試題(詳細(xì)參考解析)
- 2024年北京工業(yè)職業(yè)技術(shù)學(xué)院高職單招筆試歷年職業(yè)技能測驗(yàn)典型例題與考點(diǎn)解析含答案
- Unit 7 Section A(2a-2e)課件人教版2024新教材七年級上冊英語
- 訴求申請書范文
- 《小型水庫雨水情測報(bào)和大壩安全監(jiān)測設(shè)施建設(shè)與運(yùn)行管護(hù)技術(shù)指南》
- 建筑施工現(xiàn)場作業(yè)人員應(yīng)急救援培訓(xùn)內(nèi)容
- 2024年中國郵政集團(tuán)限公司海南省分公司社會(huì)招聘124人【重點(diǎn)基礎(chǔ)提升】模擬試題(共500題)附帶答案詳解
- 2024年建筑《主體結(jié)構(gòu)及裝飾裝修》考試習(xí)題庫(濃縮500題)
- 幼兒園小班科學(xué)課件:《菊花開了》
評論
0/150
提交評論