freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于opengl的屏幕對象拾取_本科畢業(yè)論文(完整版)

2025-08-30 14:24上一頁面

下一頁面
  

【正文】 對 物體進(jìn)行拾取,鼠標(biāo)左鍵點(diǎn) 擊待 拾取的物體,物體被拾取時(shí)的效果如下: 23 圖 12 第一只對象被拾取效果 圖 13 第二只對象被拾取效果 24 圖 14 第三只對象被拾取效 25 5 結(jié)論與展望 結(jié)論 本文 分析了基于 CPU 的射線求交拾取技術(shù)、基于 GPU 的重繪式拾取技術(shù)、 OpenGL 的選擇機(jī)制技術(shù)三種拾取的實(shí)現(xiàn)原理和優(yōu)缺點(diǎn), 本文考慮到只是簡單地拾取三個(gè)不同的物體,分別是一個(gè)一個(gè)拾取,而不是同時(shí)拾取的過程且拾取物體是簡單的選擇體的原因,采 用了 OpenGL 本身自帶的選擇機(jī)制拾取實(shí)現(xiàn)了簡單的三個(gè)不同物體拾取,實(shí)驗(yàn)表明本文的方法是有效的。1e。 建立一個(gè)投影矩陣用于將繪制限制在視口的一個(gè)小區(qū)域里,并將這個(gè)矩陣乘到當(dāng)前矩陣棧上。然后 允許某種形式的輸入,如點(diǎn)擊鼠標(biāo)的一個(gè)鍵,引發(fā)選擇模式的初始化。 void glPopName(void)。這樣,如果第三或第四個(gè)物體中的一個(gè)或全部引起一個(gè)選擇命中,只有一個(gè)命中記錄返回給你。 drawSomeObject()。如設(shè)定溢了出標(biāo)識則返回值是 1。當(dāng)然,命中記錄不保證會被寫進(jìn)數(shù)組中直到 glRenderMode()被調(diào)用。類似的,進(jìn) 入反饋模式之前要調(diào)用 glFeedbackBuffer()指定反饋數(shù)組。 系統(tǒng)的 選擇機(jī)制 選擇機(jī)制分以下幾個(gè)部分來進(jìn)行: ( 1) 進(jìn)入選擇模式之前; ( 2) 獲取當(dāng)前選擇模式 ; ( 3) 退出當(dāng)前選擇模式; ( 4)拾取。然而,一旦進(jìn)入了選擇模式,幀緩沖的內(nèi)容將保存不變,直到退出選擇模式。 完成,因此不必要為每個(gè)物體命名。 對拾取對象為點(diǎn)或簡單的選擇體較為方便,速度快。 各種拾取技術(shù)比較 各種拾取技術(shù)比較 表如下: 表 2 各種拾取技術(shù)比較 原理 優(yōu)點(diǎn) 局限性 OpenGL的選擇機(jī)制 先把場景畫進(jìn)幀緩沖,然后進(jìn)入選擇模式 并重新繪制這個(gè)場景。在 Pixel Shader 中,將物體指針信息作為顏色的 Alpha 值,加上 Vertex Shader 輸出的顏色,輸出為最終的渲染顏色。在 CPU 上 C++程序的任務(wù)是建立一個(gè)后臺的 表面,然后調(diào)用 GPU 上的程序?qū)ξ矬w進(jìn)行特殊的 RTT(Rallderto Texture,渲染到紋理 ),再根據(jù)渲染結(jié)果讀取表面某坐標(biāo)的顏色并還原信息。第 1 次繪圖為虛擬繪 圖,通過在 OpenGL 幀緩存中繪制一些輔助圖形來幫助選取物體。但當(dāng)拾取曲線、復(fù)雜折線等 圖元時(shí) , 計(jì)算量會非常大。設(shè)要和拾取對象求交的線段為 AB, 針對不同的情況 , 下面對兩種 求交過程分別加以描述。 采用向量法來判斷線段和包圍盒相對位置,該算法的基本思想為:將線段看成一個(gè)由起點(diǎn)指向終點(diǎn)的向量,求向量各分量和離起點(diǎn)最近的三個(gè)包圍盒側(cè)面所在平面的交點(diǎn) ,如果各分量與平面的交點(diǎn)都在包圍盒側(cè)面上或者在包圍盒內(nèi)且在各分量上,則該線段和包圍盒相交 (本文中我們把線段與包圍盒相交和線段在包圍盒內(nèi)這兩種情況統(tǒng)稱為相交 )。 基于射線求交拾取技術(shù) 其基本原理是 : 獲取屏幕坐標(biāo)并轉(zhuǎn)換成圖形系統(tǒng)的視口坐標(biāo),根據(jù)不同圖形 API(應(yīng)用程序編程接口 )的實(shí)現(xiàn)給該點(diǎn)加上適當(dāng)?shù)纳疃戎?(如 OpenGL 標(biāo)準(zhǔn)的深度值介于 01),反算出該拾取點(diǎn)的世界空間坐標(biāo), 將相機(jī)焦點(diǎn)坐標(biāo)轉(zhuǎn)換為屏幕坐標(biāo),過相機(jī)位置點(diǎn)向鼠標(biāo)選中點(diǎn)作一條射線 在三維空間中對射線和物體進(jìn)行求交 , 離相機(jī)位置點(diǎn)最近的 實(shí)體就是被選中的實(shí)體 。 第三步:創(chuàng)建渲染場境。 (三)初始化 OpenGL 具體編程步驟 : 第一步:修改窗口風(fēng)格設(shè)置。 ( 3)文檔邊框窗口 (CMDIChildWnd) 文檔邊框窗口類從 CMDIChildWnd 類派生, MDI 應(yīng)用程序使用文檔邊框窗口來包含視窗口。 應(yīng)用程序的構(gòu)成 圖 2 解釋了該應(yīng)用程序的結(jié)構(gòu) 與對象 ,箭頭 表示信息流向。 MFC 中,任何可以處理消息的類都從 CCmdTarget 派生。 MFC 類庫是 C++類庫。起初, MFC 是作為一個(gè)應(yīng)用程序框架開發(fā)的,所以定名為 Application FrameworkX (AFX)。 片元處理 這個(gè)階段的輸 入為經(jīng)過插值計(jì)算后的最終片元信息,經(jīng)過處理后,輸出信息為片元的深 度和顏色值。然后,圖像被放入幀緩沖區(qū)中。當(dāng)應(yīng)用程序進(jìn)行OpenGL API 調(diào)用時(shí),這些命令被放置在一個(gè)命令緩沖區(qū)中。 20xx 年的 7月 28 日, SGI 和 ARB 公布了 OpenGL 。 OpenGL 實(shí)用函數(shù)庫( GLU)提供了許多建模特性,例如二次曲面以及 NURBS 曲線和表面。它 是個(gè)專業(yè)的圖形程序接口,是一個(gè)功能強(qiáng)大,調(diào)用方便的 底層圖形庫 , Opengl 用于三維圖象(二維的亦可)。第一種 是 基于射線求交的拾取技術(shù),1992 年, Mark Segul, Carl Korobkin, Rolf van Widenfelt 等 人首次 采用了基于射線求交的拾取技術(shù)原理實(shí)現(xiàn)了對衣服的拾取 [1]; 1998年 Michael Deering, Step hanie Winner and Bic Schediwy等 也才采用了同樣的技術(shù)成功做到了人物的拾取 [2]; 20xx 年,龔堰玨,顏敏等人采用了基于射線求交的拾取技術(shù)實(shí)現(xiàn)對幾個(gè)簡單物體的拾取 [3];同年,韋宇煒也是用此技術(shù)實(shí)現(xiàn)對游戲中各類的拾取,如對技能的釋放,對地上物品的撿起來,對別的玩家人物屬性的查看等等 [4]; 20xx 年, 姚繼權(quán) ,李曉豁 等人也采用了這種拾取技術(shù)成功地做到了對 3D 網(wǎng)游游戲中的各種各樣的拾取 [5],等等。這就需要終端用戶確定單擊的位置是構(gòu)成對象的圖元上,還是對象附近的位置以及考慮如果選取點(diǎn)落在兩個(gè)以上物體交集部分如何處理等等問題,本文利用了 OpenGL 中的選擇模式進(jìn)行有效的對象判別和拾取 。 在使用 OpenGL 工具包開發(fā)圖形處理系統(tǒng)時(shí),物體的拾取有多種方法,其中包括 OpenGL 提供的選擇機(jī)制、射線拾取法、重繪式拾取法等。 、圖表要求: 1)文字通順,語言流暢,書寫字跡工整,打印 字體及大小符合要求,無錯別字,不準(zhǔn)請他人代寫 2)工程設(shè)計(jì)類題目的圖紙,要求部分用尺規(guī)繪制,部分用計(jì)算機(jī)繪制,所有圖紙應(yīng)符合國家技術(shù)標(biāo)準(zhǔn)規(guī)范。據(jù)我所知, 除文中已經(jīng)注明引用的內(nèi)容外,本論文(設(shè)計(jì))不包含其他個(gè)人已經(jīng)發(fā)表或撰寫過的研究成果。保密的論文(設(shè)計(jì))在解密后適用本規(guī)定。有效區(qū)的定義由 glPick2Matix()函數(shù)來完成。對于這些操作而言,首先 我們要做的是能讓用戶使用鼠標(biāo)來選擇他所希望操作的對象,這就是本文要討論的一個(gè)重點(diǎn):拾取,這是一種在許多交互性程序中有基礎(chǔ)地位的操作,是對屏幕中對象進(jìn)行定位,并確定所選擇的是哪個(gè)物體。 拾取技術(shù)國內(nèi)外研究 隨 著網(wǎng)絡(luò)科技越來越發(fā)達(dá), 拾取操作也越來越方便了,有的只要鼠標(biāo)點(diǎn)點(diǎn)就可以。 隨后出現(xiàn)的各個(gè)版本,使自帶的拾取機(jī)制越來越完善,操作越來越方便,應(yīng)用范圍越來越廣泛。 這類函數(shù)可能允許你指定相對較為復(fù)雜的形狀,例如汽車、身體的某 個(gè)部位、飛機(jī)或分子等。因而以制作《雷神之錘》等經(jīng)典 3D 射擊游戲而著名的 id 公司同其它一些游戲開發(fā)公司一同強(qiáng)烈要求微軟在Windows95 中加入對 OpenGL 的支持。 20xx 年 8 月 Khronos 小組發(fā)布了 OpenGL ,這是一年以來 OpenGL 進(jìn)行的第三次重要升級。 6 同時(shí)所進(jìn)行的光照計(jì)算將確定每個(gè)頂點(diǎn)應(yīng)該具有的顏色亮度。 圖 元組裝 這個(gè)階段主要是按照輸入的變換后的頂點(diǎn)屬性和關(guān)聯(lián)信息,組裝形成圖元。因?yàn)榭傮w上, MFC 框架定義了應(yīng)用程序的輪廓,并提供了用戶接口的標(biāo)準(zhǔn)實(shí)現(xiàn)方法,程序員所要做的就是通過預(yù)定義的接口把具體應(yīng)用程序特有的東西填入這個(gè)輪廓。微軟在 Windows Vista 和 Windows 7 發(fā)布之后在 MFC 中增加了對 新的 Windows API 支持。 CObject 實(shí)現(xiàn)了一些重要的特性,包括動態(tài)類信息、動態(tài)創(chuàng)建、對象序列化、 對程序調(diào)試的支持,等等。例如, CWnd 封裝 Windows 窗口對象時(shí),每一條 Windows 消息對應(yīng)一個(gè)成員函數(shù),這些成員函數(shù)為派生類所繼承。 ( 2)邊框窗口 (CMDIFrameWnd) 如果是 SDI 應(yīng)用程序,從 CFrameWnd 類派生邊框窗口類,邊框窗口的客戶子窗口 (MDIClient)直接包含視窗口;如果是 MDI 應(yīng)用程序,從 CMDIFrameWnd 類派生邊框窗口類,邊框窗口的客戶子窗口 (MDIClient)直接包含文檔邊框窗口。 用圖的形式可直觀地表示所涉及的 MFC 類的繼承或者派生關(guān)系 ,如下: 圖 3 MFC 的層次 基于 OpenGL+MFC 的三維模擬的編程環(huán)境配置 用 MFC 調(diào)用 OpenGL 函數(shù)來進(jìn)行三維模擬的編程環(huán)境配置: (一)創(chuàng)建 MFC 項(xiàng)目 (1) 創(chuàng)建項(xiàng)目文件:選擇 File/New 菜單選項(xiàng),建立一個(gè)名為 MyTest 的單文檔 (SDI) 應(yīng)用程序; (二)配置 OpenGL 開發(fā)環(huán)境 ( 1) 將 91. h, glu. h, glaux. h 和 glut. h 拷貝到 ???(即盤符 +路徑 )\ Microsoft Visual Studio\ VC98\ Include\ GL 目錄中; ( 2) 將 opengl32. 1ib, glu32. 1ib, glaux. 1ib 和 glut32. 1ib 拷貝到 ???(即盤符 +路徑 )\ Microsoft 10 Visual Studio\ Vc98\ Lib 目錄中; ( 3) 將 , , , , 文件拷貝到操作系統(tǒng)安裝目錄 C:\ WINDOWS\ system32 目錄下 ; ( 4)選擇 Project/Setting 菜單選項(xiàng)。 b. 調(diào)用函數(shù) ChoosePixelFormat() ,將 填 寫 好的 像 素 格 式結(jié) 構(gòu) 傳 遞給 該 函 數(shù) ,函 數(shù)ChoosePixelFormat()返回一個(gè)整型的序號。 (四 )清理工作 CGLView:: OnDestroy()函數(shù) 該函數(shù)完成的功能是:在視圖窗口被釋放時(shí),用于清除當(dāng)前的渲染場境,并釋放設(shè)備場境。 在上述算法中,判斷線段 AB 和實(shí)體包圍盒的相對位置及線段 AB 和實(shí)體的求交是算法實(shí)現(xiàn)的關(guān)鍵。)如果交點(diǎn)在盒上,則 AB 和包圍盒相交 ,否則, AB 和包圍盒相離。當(dāng)所有的點(diǎn)處理完畢 ,當(dāng)前的最近點(diǎn)就是該實(shí)體和線段 AB 的交點(diǎn)。當(dāng)發(fā)現(xiàn)象素點(diǎn)顏色有別于背景色時(shí) ,終止讀點(diǎn) ,標(biāo)識拾取成功。 該方法的核心是把圖元的幾何信息、指針等相關(guān)信息作為它的顏色渲染到后臺的一張 Render Target 型表面上對應(yīng)幀緩沖做一次特殊的“渲染”。 Struct VSResult { Float4 pos:POSITION。 16 =mul(worldpos,ViewProjection)。當(dāng)名字清單被返回后, 可以用它來確定屏幕上的哪個(gè)圖元可能被用戶選中了。第 1次繪圖為虛擬繪圖,通過在OpenGL 幀緩存中繪制一些輔助圖形來幫助選取物體。為了 解決這個(gè)問題 , OpenGL 提供了一個(gè)選 擇 機(jī)制可惟自動告訴你哪個(gè)物體被繪制在窗口的提定區(qū)域里。這樣,當(dāng)名字清單被返回后,就可以用它來確定屏幕上的哪個(gè)圖元可能被用戶選中了。mode 參數(shù)可以是 GL_RENDER(默認(rèn))、 GL_SELECT 或 GL_FEEDBACK 之一。 定義用于選擇的視見體 通常它與原來用于繪制場景的視見體不同,也可以用 glPushMatrix()和 glPopMatrix()來保存 19 和 恢復(fù)當(dāng)前的變換矩陣;在選擇模式下,被視見體裁剪的每個(gè)圖元引起一個(gè)選擇命中。每寫入一個(gè)命中記錄,指針相應(yīng)更新。 glPushName(1)。 drawJustOneMoreObject()。 將 name 壓入名字棧 壓入名字超過棧容量時(shí)將生成一個(gè) GL_STACK_OVERFLOW 錯誤。為避免這種情況,如果棧初始時(shí)是空的,那么在調(diào)用 glLoadName()之前至少調(diào)用一次 glPushName()以在名字棧中放上點(diǎn)東西。 用例程 gluPickMatrix()將一個(gè)特殊的投影矩陣乘到當(dāng)前矩陣上。1e。因?yàn)樽儞Q是任意的, 所以 可以讓拾取為 不同類型的領(lǐng)域工作-如,用于旋轉(zhuǎn)窗口的矩形區(qū)域。 1998. [31]Heran D, Baker M P. 計(jì)算機(jī)圖形學(xué) . 北京:清華大學(xué)出版社, 1998. [32]蔡士杰,等譯. Computer Graphics with OpenGL(ThirdEdition)[M]. 北京:電子工業(yè)出版社,20xx. [33]吳斌 .OpenGL 編程權(quán)威指南 [M]. 北京:中國電力出版社, 20xx. [34]彭群生,等.計(jì)算機(jī)真實(shí)感圖形的算法基礎(chǔ) [M]. 北京:北京科學(xué)出版社, 20xx. 27 [35]江早. OpenGL 圖形編程 [M]. 科學(xué)出版社, 20xx. [36]喬林,費(fèi)廣正等.程序設(shè)計(jì) 0peoGL[Ⅵ ]. 清華大學(xué)出版杜, 20xx. [37]曾建超,俞志和.虛擬現(xiàn)實(shí)的技術(shù)及其應(yīng)用Ⅶ. 北京:清華大學(xué)出版社,
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1