![圖形學試驗報告_第1頁](http://file4.renrendoc.com/view/a9405d37dff739bc10ccc9118472bbf7/a9405d37dff739bc10ccc9118472bbf71.gif)
![圖形學試驗報告_第2頁](http://file4.renrendoc.com/view/a9405d37dff739bc10ccc9118472bbf7/a9405d37dff739bc10ccc9118472bbf72.gif)
![圖形學試驗報告_第3頁](http://file4.renrendoc.com/view/a9405d37dff739bc10ccc9118472bbf7/a9405d37dff739bc10ccc9118472bbf73.gif)
![圖形學試驗報告_第4頁](http://file4.renrendoc.com/view/a9405d37dff739bc10ccc9118472bbf7/a9405d37dff739bc10ccc9118472bbf74.gif)
![圖形學試驗報告_第5頁](http://file4.renrendoc.com/view/a9405d37dff739bc10ccc9118472bbf7/a9405d37dff739bc10ccc9118472bbf75.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
本文格式為Word版,下載可任意編輯——圖形學試驗報告
計算機圖形學
試驗報告
姓名:張曉波
學號:09008132
2023年12月
試驗4通過層級建模,建立可交互三維物體試驗目的
1.2.3.
進一步了解OpenGL程序的結構。
理解運用OpenGL進行層級建模的思想。
利用層級建模方式建立可以實現(xiàn)簡單交互控制的三維物體。
試驗要求
1.2.3.
明確試驗目的,按試驗內(nèi)容及基本步驟完成試驗。
在試驗過程中,結合思考與探究中的問題,通過試驗進行理解。理解并把握本試驗的內(nèi)容。
試驗內(nèi)容及基本步驟
1.模型設計
考慮到可以表達層級建模的概念,設計了一個由6個圓形組成的“玩具蛇〞,每個圓形代表一個關節(jié),形彼此相切,半徑逐漸減小,最初狀態(tài)是組成一個直線,讓用戶可以交互控制每一個關節(jié),控制其X、Y、Z三軸的旋轉。與機器手臂的概念類似。要讓物體具有層次感,則考慮讓每一節(jié)的材質(zhì)都不同。
繪制前準備:
-(void)drawRect:(NSRect)rect{=4;vy=4;vz=4;glViewport(0,0,610,610);glMatrixMode(GL_PROJECTION);glFrustum(-2,2,-2,2,3,20);glMatrixMode(GL_MODELVIEW);glLoadIdentity();gluLookAt(,vy,vz,0,0,0,0,1,0);glEnable(GL_CULL_FACE);glFrontFace(GL_CW);
}
glCullFace(GL_BACK);//繪圖控制glShadeModel(GL_SMOOTH);glEnable(GL_DEPTH_TEST);
x1=x2=x3=x4=x5=x6=y1=y2=y3=y4=y5=y6=z1=z2=z3=z4=z5=z6=0;
分析:采用18個變量來保存各個關節(jié)的旋轉狀況。因此每次繪制之前先單位化模型視圖矩陣,然后從底層的圓形畫起。由于每個關節(jié)之間的平移量是固定的,因此再畫下一個關節(jié)時,只把前面關節(jié)的旋轉作為增量,而位移不需要,因此乘上視圖矩陣之后,應先壓棧,然后在乘上平移矩陣,再繪制;循環(huán)下去則旋轉就成為增量,當下次全部重繪之前在清除前面的狀態(tài),由于由變量x1~x6,y1~y6,z1~z6,保存著當前的狀態(tài),所以可以正確繪制。此方法是基于棧的遍歷方法。在Mac的Cocoa環(huán)境里面提供的控件Slide來設置旋轉矩陣等的值,這些空間再改變值的時候可以連續(xù)的觸發(fā)函數(shù),因此將所有空間關聯(lián)到同一個繪制函數(shù)里,這樣有任何值改變就將調(diào)用繪制函數(shù),函數(shù)如下:
-(IBAction)controlsnake:(id)sender{=4;vy=4;vz=4;//視點初始值vrotatey=[ViewRotateYfloatValue];vzoom=[ViewZoomfloatValue];floatyline=pow((*+vz*vz),0.5);=yline*sin(((vrotatey+45)/180*pi));vz=yline*cos(((vrotatey+45)/180*pi));//繞Y軸旋轉=*(20-vzoom)/10;vy=vy*(20-vzoom)/10;vz=vz*(20-vzoom)/10;glMatrixMode(GL_MODELVIEW);glLoadIdentity();gluLookAt(,vy,vz,0,0,0,0,1,0);x1=[X1floatValue];x2=[X2floatValue];x3=[X3floatValue];x4=[X4floatValue];x5=[X5floatValue];x6=[X6floatValue];y1=[Y1floatValue];y2=[Y2floatValue];y3=[Y3floatValue];y4=[Y4floatValue];y5=[Y5floatValue];y6=[Y6floatValue];z1=[Z1floatValue];z2=[Z2floatValue];z3=[Z3floatValue];z4=[Z4floatValue];z5=[Z5floatValue];z6=[Z6floatValue];//保存六個圓形的旋轉矩陣glRotated(x1,1,0,0);glRotated(y1,0,1,0);glRotated(z1,0,0,1);glPushMatrix();GLfloatmat_ambient[]={ar,ag,ab,aa};GLfloatmat_diffuse[]={dr,dg,db,da};GLfloatmat_specular[]={sr,sg,sb,sa};GLfloatmat_shininess[]={ss};glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient);//材料環(huán)境光顏色glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);//材料漫反射光顏色
}
glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);//材料鏡面反射光顏色glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess);//鏡面指數(shù)glutSolidSphere(0.6,30,30);glPopMatrix();//1
glTranslated(0,1.1,0);glRotated(x2,1,0,0);glRotated(y2,0,1,0);glRotated(z2,0,0,1);glPushMatrix();
GLfloatmat_ambient2[]={ar2,ag2,ab2,aa2};GLfloatmat_diffuse2[]={dr2,dg2,db2,da2};GLfloatmat_specular2[]={sr2,sg2,sb2,sa2};GLfloatmat_shininess2[]={ss2};
glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient2);//材料環(huán)境光顏色glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse2);//材料漫反射光顏色
glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular2);//材料鏡面反射光顏色glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess2);//鏡面指數(shù)glutSolidSphere(0.5,30,30);glPopMatrix();//2
。。。。。。glFlush();
函數(shù)每次調(diào)用都會進行所有參數(shù)的獲取,包括光照、材質(zhì)、視點等,為了便于觀測,添加了一個繞Y軸旋轉視點,以及移近移遠視點的參數(shù),這樣可以更明白的看到模型的細節(jié)。程序界面如下:
2.實用手冊:
程序左側是glView,右側是所有控件。可以調(diào)理光照位置,以及視點。中間的選擇框中先確定要調(diào)理的圓形,從1~6對應的圓形從下至上。可以調(diào)理每一個圓形的材質(zhì),在Rotate框中可以選擇每一個圓形在三個軸方向上旋轉的角度。
右側最下方的兩個Slide可以使視點繞Y軸旋轉,或者移近移遠。下面是不同參數(shù)下的幾種效果:
試驗小結:
這次是在上次的基礎上完成的,所以GUI的界面的主題還是延續(xù)下來了,不過稍微作了改進,使操作起來比較便利。其實考慮用控件來交互的同時,直接通過鍵盤也是不錯的選擇,但是不足就是只能看到當前的物體,而關于它的各種參數(shù)是看不到的,而且交互時控制較慢。這次的試驗使用的層級建模遍歷是基于棧的,這個實現(xiàn)起來比較便利一點,但是最大的毛病就是結構比較固定,代碼都
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 部編初中歷史八下第12課民族大團結教案
- 年產(chǎn)50萬套中醫(yī)醫(yī)療器械生產(chǎn)線技術改造項目可行性研究報告模板-立項拿地
- 中藥烏藥課件
- 2025-2030全球數(shù)字道路行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球SCR 尿素系統(tǒng)行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國鉺鐿共摻光纖行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國魚塘凈水器行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球汽車出風口空氣清新劑行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國IG100氣體滅火系統(tǒng)行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國電子學習開發(fā)服務行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2024年全國現(xiàn)場流行病學調(diào)查職業(yè)技能競賽考試題庫-上部分(600題)
- (一模)晉城市2025年高三年第一次模擬考試 物理試卷(含AB卷答案解析)
- 安徽省蚌埠市2025屆高三上學期第一次教學質(zhì)量檢查考試(1月)數(shù)學試題(蚌埠一模)(含答案)
- 醫(yī)院工程施工重難點分析及針對性措施
- 2025年春節(jié)安全專題培訓(附2024年10起重特大事故案例)
- 2023年春節(jié)后建筑施工復工復產(chǎn)專項方案
- 電梯設備維護保養(yǎng)合同模板范本
- 叉車操作規(guī)程
- 綜合布線類項目施工圖解(共21頁)
- 圓錐曲線方程復習
- 教科版九年級物理上冊期末考試(真題)
評論
0/150
提交評論