计算机图形学真实感显示代码,计算机图形学实验 - 真实感图形场景的生成
《計算機圖形學實驗 - 真實感圖形場景的生成》由會員分享,可在線閱讀,更多相關《計算機圖形學實驗 - 真實感圖形場景的生成(4頁珍藏版)》請在人人文庫網上搜索。
1、計算機圖形學實驗 - 真實感圖形場景的生成實驗四 真實感圖形的生成 一、 實驗內容 ? ? ? ? 創建一個簡單場景 場景中有一個復雜的三維幾何體 通過一系列處理使得場景和幾何體具有真實感 可以通過變換視點觀察場景 二、 程序結構 創建Win32 Console Application,使用OpenGL的控制臺應用程序框架。其中: ? init()函數進行場景初始化工作; ? reshape(GLsizei width, GLsizei height)函數設置窗口的視口大小,同時設置透視深度和透視角度等參數; ? display()函數構建坐標系并通過調用具體的繪制圖形函數來繪制具體場景和幾何。
2、圖形; ? LoadBMP()函數導入紋理位圖文件; ? LoadTexture()函數加載紋理到內存空間中; ? generateShadow(GLfloat shadow44, const GLfloat ground4, const GLfloat light4)函數來計算空間中物體上任意一點的平面陰影投射矩陣 ? keyboard(unsigned char key, int x, int y)函數處理鍵盤按鍵消息; ? mouseButton(int button, int state, int x, int y)函數處理鼠標按鍵消息; 最后由主函數main(int argc, ch。
3、ar* argv)中調用OpenGL函數來顯示窗口,并進行繪圖和處理事件消息函數。 三、 代碼說明 1. 加載位圖紋理 首先,編寫LoadBMP()函數導入位圖文件,代碼截圖如下: 然后,編寫LoadEarthTexture()函數加載導入的位圖并設置相關參數,代碼截圖如下: 2. 繪制房間場景 在drawScene()函數中調用OpenGL基本幾何元素繪制過程glBegin(GL_QUADS)繪制4個平面,并為每個平面綁定相應的紋理圖片,主要代碼截圖如下: 3. 繪制地球儀模型 編寫drawEarth()函數繪制地球儀模型,并為地球儀模型綁定對應的紋理貼圖,同時增加光照和材質的處理,代碼截圖。
4、如下: 4. 繪制模擬點光源 編寫drawBulb()函數繪制模擬點光源及燈罩,首先調用glBegin(GL_TRIANGLE_STRIP)繪制4個三角形面構成棱錐形燈罩的4個側面,然后調用gluSphere()函數繪制球形燈泡并增加光照和材質處理效果,代碼截圖如下: 5. 生成陰影 根據點光源、物體上的任意一點、物體在平面上的投影點“三點共線”的幾何原理,以及投影點在平面上的位置關系,通過平面方程求得其法向量,然后利用點光源和物體上一點的坐標進行計算,得出物體上該點的平面陰影投射矩陣。因此編寫generateShadow(GLfloat shadow44, const GLfloat gro。
5、und4, const GLfloat light4)來實現該矩陣的計算,代碼截圖如下: 然后在display()函數中調用上面的函數計算出地球儀模型的陰影投射矩陣,然后與模型矩陣進行相乘,進而繪制模型的陰影,代碼截圖如下: 6. 場景初始化參數設置,重繪窗口及視點設置 在init()函數中首先清除屏幕顏色和深度緩存,然后設置明暗處理和啟用光照等參數,進行整個場景的初始化設置,代碼截圖如下: 在reshape(GLsizei width, GLsizei height)函數中設置視點的初始位置,以及透視投影的深度和角度,代碼截圖如下: 7. 鍵盤按鍵、鼠標按鍵消息處理 編寫keyboard()函數處理鍵盤按鍵消息,對相關參數變量修改其步長,最后調用glutPostRedisplay()函數進行重繪窗口,部分代碼截圖如下: 編寫mouseButton()函數處理鼠標按鍵消息,通過鼠標左鍵可控制地球儀是否自動繞地軸旋轉,在此之前編寫myIdle()函數實現地球儀旋轉角度的步長增加,代碼截圖如下:。
總結
以上是生活随笔為你收集整理的计算机图形学真实感显示代码,计算机图形学实验 - 真实感图形场景的生成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CS224n笔记13 卷积神经网络
- 下一篇: 总结面试时没有回答上的内存对齐问题