版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 本科畢業(yè)論文</b></p><p> (科研訓(xùn)練、畢業(yè)設(shè)計(jì))</p><p> 題 目:墓石設(shè)計(jì)系統(tǒng)渲染功能的ObjectARX實(shí)現(xiàn)</p><p><b> 姓 名:</b></p><p> 學(xué) 院:軟件學(xué)院</p><p
2、><b> 系: /</b></p><p> 專 業(yè):軟件工程</p><p><b> 年 級(jí):</b></p><p><b> 學(xué) 號(hào):</b></p><p> 指導(dǎo)教師(校內(nèi)): 職稱:教授</p>&
3、lt;p> 指導(dǎo)教師(校外): 職稱:</p><p> 2005年 05月 29 日</p><p> 墓石設(shè)計(jì)系統(tǒng)渲染功能的ObjectARX實(shí)現(xiàn)</p><p> [摘要] 近些年來,隨著墓石設(shè)計(jì)行業(yè)的快速發(fā)展,墓石制品公司間爭奪客戶的競爭越來越激烈。對(duì)于不懂圖紙?jiān)O(shè)計(jì)的客戶來講,一張色彩斑斕的設(shè)計(jì)效果圖往往比一堆縱橫交
4、錯(cuò)的黑線來得更直觀和真實(shí)。而要渲染出一張美侖美奐的效果圖,往往要耗費(fèi)設(shè)計(jì)人員大量寶貴的時(shí)間。在此應(yīng)用背景下,本文利用VC++和Autodesk公司提供的CAD二次開發(fā)工具ObjectARX,針對(duì)渲染圖片庫管理和渲染要素的參數(shù)化設(shè)定兩個(gè)方面進(jìn)行設(shè)計(jì),以達(dá)到節(jié)省設(shè)計(jì)人員工作時(shí)間的目的。</p><p> [關(guān)鍵字] 墓石設(shè)計(jì)系統(tǒng) AutoCAD ObjectARX Render API 渲染</p&g
5、t;<p> Programming Render Functions For Stone Design Using ObjectARX</p><p> [Abstract] As Stone industry develops rapidly in recent years,stone product companies try their best to shoot customers i
6、n fierce competition. Compared to a mass of black curves,a colorful picture is more attractive to customers.But it takes designers a lot of time to render a model into a shining picture.The paper,which is based on VC++ a
7、nd ObjectARX progrmme language,chiefly researchs how to manage databases of render materials and how to conveniently configure render preferences.</p><p> [Keywords] Stone CAD Design System AutoCAD Objec
8、tARX Render API Render</p><p> 墓石設(shè)計(jì)系統(tǒng)渲染功能的ObjectARX實(shí)現(xiàn)</p><p><b> 目錄</b></p><p><b> 第一章 引 言5</b></p><p> 第一節(jié) 什么是墓石設(shè)計(jì)系統(tǒng)5</p><p&
9、gt; 第二節(jié) 什么是墓石渲染6</p><p> 第三節(jié) 本文主要內(nèi)容7</p><p> 第二章 系統(tǒng)總體設(shè)計(jì)8</p><p> 第一節(jié) 系統(tǒng)功能模塊圖和需求分析8</p><p> 第二節(jié) 開發(fā)工具(Object ARX)介紹11</p><p> 第三節(jié) AutoCAD數(shù)據(jù)庫介紹11&
10、lt;/p><p> 第四節(jié) Render API庫結(jié)構(gòu)解析12</p><p> 第三章 系統(tǒng)詳細(xì)設(shè)計(jì)18</p><p> 第一節(jié) 三類文本庫的設(shè)計(jì)18</p><p> 第二節(jié) 數(shù)據(jù)庫(access)設(shè)計(jì)20</p><p> 第三節(jié) 各功能模塊詳細(xì)設(shè)計(jì)20</p><p>
11、; 第四章 系統(tǒng)運(yùn)行結(jié)果演示26</p><p><b> 結(jié)束語和感想31</b></p><p><b> 致謝語32</b></p><p><b> 參考文獻(xiàn)33</b></p><p><b> 引言</b></p>
12、<p> 第一節(jié) 什么是墓石設(shè)計(jì)系統(tǒng)</p><p> 墓石指的用石頭建成的陵墓。要建成漂亮的陵墓,不僅要在石材加工廠里把粗糙、不規(guī)則的石頭磨成方圓有形的石種,還要在設(shè)計(jì)室里費(fèi)盡心思地進(jìn)行造型設(shè)計(jì),后一種工作就叫做墓石設(shè)計(jì)。在墓石行業(yè)發(fā)展的初期,設(shè)計(jì)者采用手工制圖,主要依賴的工具是紙和筆,畫過的局部造型往往沒有可重用性,因此設(shè)計(jì)過程中存在許多重復(fù)勞動(dòng)。隨著計(jì)算機(jī)技術(shù)的發(fā)展,石材設(shè)計(jì)行業(yè)引進(jìn)了計(jì)算
13、機(jī)輔助設(shè)計(jì)( Computer Aided Design,簡稱CAD )技術(shù),從此進(jìn)入了無紙化設(shè)計(jì)時(shí)代。</p><p> 計(jì)算機(jī)輔助設(shè)計(jì)( Computer Aided Design,簡稱CAD )技術(shù),是指設(shè)計(jì)人員(或用戶〕在產(chǎn)品或工程設(shè)計(jì)過程中借助于CAD系統(tǒng)(硬件、軟件)的幫助來完成設(shè)計(jì)任務(wù),并達(dá)到提高設(shè)計(jì)質(zhì)量和縮短設(shè)計(jì)周期的目的的技術(shù)。而在所有的CAD軟件系統(tǒng)中,由美國Autodesk公司開發(fā)的Aut
14、oCAD是目前國內(nèi)外最廣泛使用的計(jì)算機(jī)輔助繪圖和設(shè)計(jì)軟件包。本文所進(jìn)行的二次開發(fā)也正是以AutoCAD為平臺(tái)的。</p><p> 在墓石設(shè)計(jì)中,固然包含著需要由人來完成的創(chuàng)造性的工作,但是同時(shí)也包含了很多重復(fù)性的工作,如大量的計(jì)算、繪圖等工作。在CAD技術(shù)出現(xiàn)以前,工程設(shè)計(jì)的全過程都是由人來完成的.而計(jì)算機(jī)具有運(yùn)算速度快、存儲(chǔ)數(shù)據(jù)多、精確度高、有記憶和邏輯判斷的能力、可處理圖形等特點(diǎn),這些重復(fù)性的工作可以由計(jì)
15、算機(jī)更快、更好地去完成,這就是把CAD技術(shù)應(yīng)用在墓石設(shè)計(jì)領(lǐng)域的意義所在。</p><p> 總結(jié)起來CAD技術(shù)在墓石設(shè)計(jì)領(lǐng)域具有如下優(yōu)勢:</p><p> 提高效率,采用CAD技術(shù)后的結(jié)構(gòu)設(shè)計(jì)和工程制圖的速度大大提高,對(duì)于復(fù)雜構(gòu)件和工程細(xì)部的設(shè)計(jì)實(shí)現(xiàn)無級(jí)縮放,分級(jí)設(shè)計(jì)。</p><p> 有利于成組設(shè)計(jì),可以廣泛應(yīng)用標(biāo)準(zhǔn)圖和標(biāo)準(zhǔn)設(shè)計(jì)。</p>
16、<p> 修改設(shè)計(jì)方便,只需對(duì)己存儲(chǔ)的圖紙做局部修改就可成為新圖。</p><p> 易于實(shí)現(xiàn)產(chǎn)品數(shù)據(jù)的標(biāo)準(zhǔn)化。設(shè)計(jì)單位的產(chǎn)品數(shù)據(jù)包括設(shè)計(jì)、圖文、技術(shù)文檔等,標(biāo)準(zhǔn)化,易于設(shè)計(jì)單位積累產(chǎn)品資源,易于繼承歷史的知識(shí)財(cái)富,方便產(chǎn)品數(shù)據(jù)的存儲(chǔ)、傳遞、轉(zhuǎn)換和理解。</p><p> 降低設(shè)計(jì)成本,提高設(shè)計(jì)質(zhì)量。</p><p> 目前,在墓石設(shè)計(jì)業(yè)中,CAD
17、技術(shù)得到了廣泛的應(yīng)用,CAD技術(shù)極大的提高了設(shè)計(jì)效率和設(shè)計(jì)精度,減少了設(shè)計(jì)過程中的差錯(cuò),并且顯著的縮短了設(shè)計(jì)周期和降低了設(shè)計(jì)成本。</p><p> 但是,新的東西往往會(huì)帶來新的問題。CAD技術(shù)的出現(xiàn)意味著設(shè)計(jì)人員不僅要懂得設(shè)計(jì),還要懂得計(jì)算機(jī)相關(guān)操作知識(shí),而不再是筆一揮就能在圖紙上看到所想的東西。再者,AutoCAD并不是針對(duì)單個(gè)設(shè)計(jì)行業(yè)開發(fā)的,所以很多功能都無法滿足設(shè)計(jì)人員工作的需要。比如AutoCAD提供
18、了一個(gè)渲染庫,但卻沒有提供分類存儲(chǔ),無法進(jìn)行方便高效的圖片庫管理。以上二點(diǎn)促使了CAD二次開發(fā)的興起,開始出現(xiàn)了為墓石行業(yè)量身定做的CAD軟件,即本文所稱的墓石設(shè)計(jì)系統(tǒng)。經(jīng)過二次設(shè)計(jì)的CAD軟件不需要軟件操作員有電腦與CAD的專業(yè)操作知識(shí),就可以快速、簡便地制成設(shè)計(jì)圖紙,把設(shè)計(jì)人員的構(gòu)思真實(shí)、完美地表現(xiàn)出來。對(duì)于完成后的圖紙,系統(tǒng)將自動(dòng)完成報(bào)價(jià)與原價(jià)管理等工作。</p><p> 第二節(jié) 什么是墓石渲染<
19、/p><p> 用CAD軟件制圖,輸出的一堆具有幾何意義的線條,并不具有直接的視覺沖擊力。比如畫一塊長方體的墓碑,顯示在屏幕上的就是一個(gè)由十二條直線構(gòu)成的長方體,很難讓人們把它和現(xiàn)實(shí)生活中見到的有顏色、有質(zhì)感的墓碑聯(lián)系起來。對(duì)于非專業(yè)設(shè)計(jì)人員來講,一張色彩斑斕設(shè)計(jì)效果圖往往比一堆縱橫交錯(cuò)的黑線來得更直觀和真實(shí)。所以,當(dāng)設(shè)計(jì)者設(shè)計(jì)完墓石造型后,往往要擔(dān)當(dāng)起“畫家”的角色,把畫出來的每一塊石頭貼附上與石種相配的圖片,并
20、在墓石周圍畫上相宜的景物。這個(gè)工作過程實(shí)際上就是模擬現(xiàn)實(shí)場景對(duì)設(shè)計(jì)圖進(jìn)行渲染。</p><p> 渲染完成后,就可以通過網(wǎng)絡(luò)傳輸給客戶觀看了,如圖1所示。</p><p><b> 圖1</b></p><p> 第三節(jié) 本文主要內(nèi)容</p><p> 渲染工作并不是一件簡單的事情,要模擬出真實(shí)的場景,不僅要能模
21、擬出石料品種、石料花紋疏密、石料加工外理方式(磨光面或者粗糙面)等內(nèi)部屬性,還要能模擬出太陽光照、花草樹木人等外部屬性。而要模擬出這些屬性,就要設(shè)定大量不同的參數(shù)。所以AutoCAD軟件提供的渲染功能不可避免地具有參數(shù)多,設(shè)定繁瑣,渲染效果不好的缺點(diǎn)。</p><p> 本文針對(duì)墓石設(shè)計(jì)過程中的渲染工作進(jìn)行分析和設(shè)計(jì),提取墓石渲染過程中主要的工作流程,對(duì)以下這兩個(gè)方面進(jìn)行了設(shè)計(jì):第一,通過建立石料圖片庫、外部景
22、觀圖片庫、背景圖片庫板、地板料圖片庫、燈光庫這五大文本數(shù)據(jù)庫,對(duì)渲染圖片進(jìn)行方便高效的管理;第二,把一部分渲染參數(shù)固定化,提供精簡了參數(shù)的MFC界面,用于設(shè)定各種渲染配置,從而達(dá)到節(jié)省設(shè)計(jì)人員工作時(shí)間的目的。</p><p><b> 系統(tǒng)總體設(shè)計(jì)</b></p><p> 第一節(jié) 系統(tǒng)功能模塊圖和需求分析</p><p><b>
23、; 圖2</b></p><p> 系統(tǒng)功能模塊圖如圖2所示。以下,將給出各個(gè)模塊的具體需求,每一點(diǎn)描述一個(gè)子模塊。</p><p><b> 1.部材石料選擇</b></p><p> 部材石料指的是要在石頭上貼附的材質(zhì)圖片。選擇圖片時(shí),要從石料庫中選擇對(duì)應(yīng)的石料名稱。所有的石頭分為三大類:墓碑,周邊,外柵。所有的墓碑用一
24、種材質(zhì)來渲染,周邊、外珊也各用一種材質(zhì)渲染。根據(jù)需要,也可以對(duì)個(gè)別的石頭選擇特殊的材質(zhì)來渲染。同時(shí)為了擴(kuò)充石料種類庫,要求提供石料種類的刪除,添加,修改功能。另外,要求可以記錄下最近使用的材質(zhì),和上一次渲染時(shí)三大類分別用的是什么材質(zhì)。</p><p><b> 2.渲染精度設(shè)定</b></p><p> 設(shè)定渲染精度,精度高則圖片清晰度高,精度低則清晰度低。如果把
25、渲染效果選擇為粗糙面,則材質(zhì)的效果偏暗淡,如果選擇為光面,則材質(zhì)的效果偏亮。要求記住上次渲染選定的精度和效果。</p><p><b> 3.燈光設(shè)定</b></p><p> 模擬外部燈光,使效果圖中出現(xiàn)陰影等效果,增加效果圖真實(shí)感。主要設(shè)定如下:</p><p><b> 周圍光設(shè)定 </b></p>
26、<p><b> 太陽光設(shè)定 </b></p><p><b> 環(huán)境光設(shè)定 </b></p><p> 自定義模式:手動(dòng)設(shè)定外部燈光,并提供燈光效果記憶功能,即可見本次的燈光設(shè)定命名保存,下次需要時(shí)調(diào)入使用。</p><p> 固定組合模式:提供多種常用各種光源的組合模式。</p>&
27、lt;p><b> 4.背景設(shè)定</b></p><p> 選擇渲染時(shí)要用的背景圖片,使場景更真實(shí),比如一片天空或一個(gè)陵園的景象等。同時(shí)為了擴(kuò)充背景庫,要求提供背景種類的刪除,添加,修改功能。</p><p><b> 5.地板料鋪設(shè)</b></p><p> 設(shè)定渲染所需的內(nèi)部鋪設(shè)石料,實(shí)際上是鋪設(shè)地板料,
28、同時(shí)提供地板料的添加,刪除,修改功能。</p><p><b> 6.外部景觀設(shè)定</b></p><p> 外部景觀,是指樹,人,佛像等為了模擬實(shí)際效果而加入的圖片。在選擇外部景觀時(shí)可改變高度,修改其相關(guān)屬性。系統(tǒng)要求提供外部景觀的添加,刪除,修改功能。</p><p> 第二節(jié) 開發(fā)工具(Object ARX)介紹</p>
29、<p> 第一小節(jié) ObjectARX簡介</p><p> 第一章中介紹的AutoCAD是目前在微機(jī)中應(yīng)用最為廣泛的CAD系統(tǒng),這不僅是因?yàn)樗δ艿膹?qiáng)大,更因?yàn)槠淞己玫拈_放性。Autodesk公司己經(jīng)提供了四種二次開發(fā)手段: AutoLISP, ADS,ActiveX/VBA(Visual Basic for Application)及ARX。AutoLISP是一種解釋型語言,只能簡單地為Au
30、toCAD添加新的命令。ADS應(yīng)用程序是用C語言編寫且編譯過的,作為外部函數(shù)能通過AutoLISP解釋器加載并執(zhí)行。ActiveX/VBA是通過ActiveX技術(shù)向開發(fā)人員提供的在第三方開發(fā)環(huán)境下進(jìn)行AutoCAD二次開發(fā)的應(yīng)用集,該應(yīng)用集簡單易用、功能強(qiáng)大。</p><p> ARX(Acad Runtime eXtend)應(yīng)用程序是在VC++環(huán)境下編寫且編譯過的動(dòng)態(tài)連接庫,與AutoCAD共享內(nèi)存空間,是在
31、AutoCAD中運(yùn)行的高效的二次開發(fā)應(yīng)用程序。ARX是Autodesk公司推出的最強(qiáng)大的二次開發(fā)工具,它不但支持面向?qū)ο蟮某绦蛟O(shè)計(jì),而且提供了許多應(yīng)用程序接口(如ODBC)。具體而言,ARX具有以下顯著特征:</p><p> 功能強(qiáng)勁。ARX充分利用AutoCAD的開放式體系結(jié)構(gòu),可以監(jiān)控和處理AutoCAD各種事件,可以定義AutoCAD命令(包括可透明使用的命令),可以定義數(shù)據(jù)庫對(duì)象,等等。可以說,ARX
32、是在兼具了Autolisp良好交互性和ADS良好綜合性的基礎(chǔ)上,提高了應(yīng)用程序的智能化程度。</p><p> 面向?qū)ο蟆RX繼承了標(biāo)準(zhǔn)C++面向?qū)ο蟮奶匦?,提供了訪問和控制AutoCAD及處理CAD常見事務(wù)的六個(gè)主要類庫。它不但可以像標(biāo)準(zhǔn)C++一樣自定義或由派生得到新類,而且允許定義參與運(yùn)行時(shí)類型識(shí)別的新類。</p><p> 運(yùn)行性能好。由于每個(gè)ARX應(yīng)用都是一個(gè)動(dòng)態(tài)鏈接庫,它與
33、AutoCAD系統(tǒng)共享同一內(nèi)存地址空間,所以ARX應(yīng)用能夠直接訪問AutoCAD的各種內(nèi)存對(duì)象,既節(jié)省了內(nèi)存開銷,又提高了應(yīng)用程序的運(yùn)行速度。</p><p> ARX上述特性無疑使它成為集成CAD圖形軟件和標(biāo)準(zhǔn)數(shù)據(jù)庫的編程接口中最佳可選的開發(fā)工具。ARX技術(shù)將是CAD軟件開發(fā)的一個(gè)方向。</p><p> 第二小節(jié) ARX類庫</p><p> ARX類庫集
34、是用C++編譯的類的集合。利用ARX進(jìn)行開發(fā),必須通過ARX類庫集來訪問AutoCAD數(shù)據(jù)庫。ObjectARX環(huán)境由以下類庫和函數(shù)庫構(gòu)成:</p><p><b> 1.AcRx類庫</b></p><p> AcRx庫提供了系統(tǒng)級(jí)的類,用于動(dòng)態(tài)連接庫的初試化和連接、運(yùn)行時(shí)類的注冊(cè)、識(shí)別。這個(gè)庫的基類是AcRcObject,它提供了以下工具:</p>
35、<p> 對(duì)象運(yùn)行時(shí)類的識(shí)別和派生分析。</p><p> 在運(yùn)行時(shí)向己有的類附加新的協(xié)議。</p><p> 對(duì)象的相等和關(guān)系測試。</p><p><b> 對(duì)象拷貝。</b></p><p><b> 2.AcEd類庫</b></p><p>
36、 AcEd庫提供用于定義和注冊(cè)新的AutoCAD命令的類,采用與AutoCAD定義內(nèi)部命令一樣的方式。定義的新命令成為“本地命令”,和AutoCAD內(nèi)部命令一樣放在同一個(gè)內(nèi)部結(jié)構(gòu)(AcEdConunandstack)中。該庫中有一個(gè)重要的類AcEditorReactor,它監(jiān)視著AutoCAD編輯器的狀態(tài),并在指定事件發(fā)生時(shí)通知應(yīng)用程序,如一個(gè)命令的開始、結(jié)束或取消。</p><p><b> 3.A
37、cDb類庫</b></p><p> AcDb類庫提供組成AutoCAD數(shù)據(jù)庫的類。這個(gè)數(shù)據(jù)庫存儲(chǔ)了組成AutoCAD圖的所有圖形對(duì)象(稱為實(shí)體)的所有信息,還存儲(chǔ)了非圖形對(duì)象(例如圖層、線型、字型等)的信息。利用AcDb庫,可以查詢、處理已有的AutoCAD實(shí)體和對(duì)象的實(shí)例,也可以創(chuàng)建新的實(shí)體和對(duì)象的實(shí)例。</p><p><b> 4.AcGi類庫</b
38、></p><p> AcGi庫提供用于繪制AutoCAD實(shí)體的圖形界面。這個(gè)庫由AcDbEntity的成員函數(shù)worldDraw()、viewportDraw() 和saveas ()使用,這些函數(shù)是標(biāo)準(zhǔn)實(shí)體函數(shù)的一部分。所有實(shí)體類必須定義worldDraw()函數(shù)。AcGiWorldDraw()對(duì)象提供一個(gè)應(yīng)用程序編程界面(API)通過它AcDbEntity worldDraw()可以在所有視窗中同步
39、處理這個(gè)對(duì)象的圖形表示。同樣,AcDbEntity對(duì)象也提供API界面AcDbEntity:: viewportDraw(),可以在單個(gè)視窗中對(duì)實(shí)體進(jìn)行特別處理。</p><p><b> 5.AcGe類庫</b></p><p> AcGe庫由AcDb庫使用,并提供使用工具類如矢量、點(diǎn)、矩陣等,用來提供通用的2D和3D幾何操作。它也提供了簡單的幾何對(duì)象,如點(diǎn)、線
40、、面等。</p><p><b> 6.ADS庫</b></p><p> ADS庫是一個(gè)C函數(shù)庫,一般ARX應(yīng)用程序通過ADS庫函數(shù)完成諸如實(shí)體選擇、選擇集操作、數(shù)據(jù)獲取等任務(wù)。ADS庫是開發(fā)時(shí)充分利用AutoCAD界面的很好工具。</p><p> 第三節(jié) AutoCAD數(shù)據(jù)庫介紹</p><p> 在Aut
41、oCAD平臺(tái)上開發(fā)應(yīng)用程序,就必須要操作AutoCAD的數(shù)據(jù)庫(AutoCAD DataBase,簡稱AcDb。AutoCAD數(shù)據(jù)庫是按一定結(jié)構(gòu)組織的AutoCAD圖形全部有關(guān)數(shù)據(jù)的集合。</p><p> 存儲(chǔ)在AutoCAD數(shù)據(jù)庫中的數(shù)據(jù)稱為數(shù)據(jù)庫對(duì)象(AcDbObject),它是一幅AutoCAD圖形的基本組成部分,包括可見幾何實(shí)體對(duì)象和不可見的非幾何對(duì)象等。幾何實(shí)體對(duì)象在圖形中具有圖形顯示,如line,
42、 circle, arc, text, solid, region等。非幾何對(duì)象的例子如圖層、線型、文字樣式等。符號(hào)表(BlockTable)和有名對(duì)象字典(Named object Dictionary)是AutoCAD數(shù)據(jù)庫的關(guān)鍵組成部分,由于它們又包含了其它對(duì)象,因而稱為容器對(duì)象(Container Object)。容器對(duì)象的作用是組織和管理數(shù)據(jù)庫對(duì)象。</p><p> 第四節(jié) Render API庫結(jié)
43、構(gòu)解析</p><p> 第一小節(jié) Render API簡介</p><p> Autodesk公司提供的AutoCAD Render API是一個(gè)專門為AutoCAD渲染功能進(jìn)行二次開發(fā)的應(yīng)用開發(fā)包。它的設(shè)計(jì)包括了兩個(gè)部分:動(dòng)態(tài)鏈接庫acRender.arx和編程庫avlib.lib。在程序?qū)崿F(xiàn)過程中,acRender.arx負(fù)責(zé)與AutoCAD進(jìn)行通信,而avlib.lib則包含了
44、與acRender.arx通信的各種編程接口。</p><p> 第二小節(jié) Render API結(jié)構(gòu)模式</p><p> Render API函數(shù)庫提供了20個(gè)函數(shù),每個(gè)函數(shù)都實(shí)現(xiàn)一個(gè)特定的功能,如燈光設(shè)定。與這20個(gè)函數(shù)配套的是20個(gè)不同的結(jié)構(gòu)體,這些結(jié)構(gòu)體有一個(gè)共同的字段mode:mode 表示要調(diào)用本函數(shù)的哪個(gè)具體功能,比如燈光設(shè)定有多種模式:燈光刪除,燈光添加,燈光編輯等,m
45、ode 取值A(chǔ)vLightDelete,就表示調(diào)用刪除燈光的功能。以下有一段avlib.h函數(shù)庫示例(以函數(shù)av_light為例)。</p><p> av_light()</p><p><b> GENERAL</b></p><p> The av_light command is used to create, modify, a
46、nd query lights and establish North in the drawing</p><p><b> SYNOPSIS</b></p><p> #include "avlib.h"</p><p> AvErrorCode av_light(AvLightParam *p);</p&g
47、t;<p> typedef enum {</p><p> AvLightIntensity = 0x000001,</p><p> AvLightColor = 0x000002,</p><p> AvLightName = 0x000004,</p><p> AvLigh
48、tFrom = 0x000008,</p><p> AvLightTo = 0x000010,</p><p> AvLightShadowmap = 0x000020,</p><p> AvLightHotspot = 0x000040,</p><p> AvLightFal
49、loff = 0x000080,</p><p> AvLightShadowsoft = 0x000100,</p><p> AvLightShadowObject = 0x000200,</p><p> AvLightShadows = 0x000400,</p><p> AvLightMonth
50、 = 0x000800,</p><p> AvLightDay = 0x001000,</p><p> AvLightHour = 0x002000,</p><p> AvLightMinute = 0x004000,</p><p> AvLightDaylight
51、 = 0x008000,</p><p> AvLightLatitude = 0x010000,</p><p> AvLightLongitude = 0x020000,</p><p> AvLightTimezone = 0x040000,</p><p> AvLightAttenuation =
52、0x080000,</p><p> AvLightNewName = 0x100000,</p><p> AvLightNorthUCS = 0x200000,</p><p> AvLightNRotation = 0x400000,</p><p> AvLightTypeFlag = 0x80
53、0000</p><p> } AvLightFlags;</p><p> typedef enum {</p><p> AvLightNewDistant = 0,</p><p> AvLightNewPoint,</p><p> AvLightNewSpot,</p><p&g
54、t; AvLightAmbient,</p><p> AvLightAmbientList,</p><p> AvLightModify,</p><p> AvLightDelete,</p><p> AvLightRename,</p><p> AvLightNorthLocator,</
55、p><p> AvLightNorthLocatorList,</p><p> AvLightList,</p><p> AvLightListAll,</p><p><b> AvLightUI</b></p><p> } AvLightMode;</p><p
56、> typedef enum {</p><p> AvAttenuationNone,</p><p> AvAttenuationInverse,</p><p> AvAttenuationInverseSquare</p><p> } AvAttenType;</p><p> typede
57、f enum {</p><p> AvLightDistant,</p><p> AvLightPoint,</p><p> AvLightSpot</p><p> } AvLightType;</p><p> typedef struct {</p><p> AvLig
58、htMode mode;</p><p> double intensity;</p><p> AvColor color;</p><p> char *name;</p><p> ads_point from;</p><p> ads_
59、point to;</p><p> int shadowmapSize;</p><p> double hotspot;</p><p> double falloff;</p><p> double shadowSoftness;</p>
60、;<p> AvBoolean shadows;</p><p> ads_name shadowObjects;</p><p> int month;</p><p> int day;</p><p> int hour;&l
61、t;/p><p> int minute;</p><p> AvBoolean daylight;</p><p> double latitude;</p><p> double longitude;</p><p> int
62、 timezone;</p><p> AvAttenType attenuation;</p><p> char *newName;</p><p> char *northUCS;</p><p> double northRotation;</p>&
63、lt;p> AvLightType type;</p><p> struct resbuf *stringList;</p><p> unsigned long flags;</p><p> } AvLightParam;</p><p> DESCRIPTION</p><p> av
64、_light() has 13 modes:(篇幅所限,本文只列舉其中二種模式)</p><p> AvLightNewDistant</p><p> Create a new distant light. If any of the sun angle parameters are supplied (month, day, hour, minute, daylight, lati
65、tude, longitude, timezone) then calculate the light location using the calculated sun angle.</p><p> AvLightParam:</p><p><b> AvLightUI</b></p><p> Invoke the Lights
66、dialog.</p><p> 第三小節(jié) 渲染函數(shù)的使用</p><p> 以第二小節(jié)中的函數(shù)為例,要新建一個(gè)遠(yuǎn)燈光時(shí),首先聲明一個(gè)結(jié)構(gòu)體AvLightParam的實(shí)例lightParam,設(shè)定模式為AvLightNewDistant:lightParam.mode = AvLightNewDistant,</p><p> 再向lightParam填充各項(xiàng)
67、數(shù)據(jù):燈光名稱,強(qiáng)度,顏色,角度,陰影選擇,是否日照等等( Req'd一欄中為yes的是必須填充的數(shù)據(jù)項(xiàng),no的是選擇填充的數(shù)據(jù)項(xiàng) )。然后再調(diào)用燈光設(shè)定函數(shù)av_light( &lightParam )。這樣就在AutoCAD中新建成了一個(gè)燈光。此外,也可以通過AvLightUI模式直接調(diào)用系統(tǒng)設(shè)定燈光的對(duì)話框。</p><p><b> 系統(tǒng)詳細(xì)設(shè)計(jì)</b></p
68、><p> 第一節(jié) 三類文本庫的設(shè)計(jì)</p><p> 1.石料庫、地板料庫、背景庫</p><p> 利用AutoCAD提供的材質(zhì)庫Render material libraries ( .mli 文件 ),對(duì)石料庫和地板料庫進(jìn)行管理。.mli文件類似于一個(gè)access數(shù)據(jù)庫,里面存放各種石料的名稱、對(duì)應(yīng)圖片名稱、渲染比例、反射系數(shù)、粗糙系數(shù)等材質(zhì)屬性。但由于.
69、mli文本一般記錄的是材質(zhì)的圖片名稱,無法記錄材質(zhì)的中文名稱,所以要利用文本操作從另一文本文件Render pattern ( .pat 文件 )中讀出材質(zhì)名稱。為此設(shè)計(jì)一個(gè)讀取文本文件的類CText。</p><p> .pat文本文件示例:</p><p><b> [DATA]</b></p><p> MT_JP01=大理石<
70、;/p><p> MT_JP02=中國山崎</p><p> MT_JP03=黑石</p><p> MT_JP04=白石</p><p><b> 2.燈光庫</b></p><p> 把燈光各項(xiàng)參數(shù)配置記錄在文本文件.lit中,記錄格式如下:</p><p>&l
71、t;b> [data]</b></p><p><b> num=1</b></p><p><b> [ambient]</b></p><p> intensity=0.3</p><p> color=1,1,1</p><p><b&
72、gt; [1]</b></p><p> name=SIGHT</p><p><b> type=D</b></p><p> intensity=0.2</p><p> color=1 1 1</p><p> from=2061.92 2060.21 0.30076
73、7</p><p> to=2061.92 2061.92 0</p><p> shadowmapsize=128</p><p><b> 0</b></p><p><b> 0</b></p><p> shadowsoftness=3</p>
74、<p> shadow=OFF</p><p> timezone=9</p><p> 以上這段文本表示本燈光由一種光源組成,周圍光強(qiáng)度為0.3,周圍光顏色為( 1,1,1 )(RGB顏色編碼),光源名稱為SIGHT,類型為遠(yuǎn)光源,強(qiáng)度為0.2,顏色為( 1,1,1 )(RGB顏色編碼),光源點(diǎn)坐標(biāo)為(2061.92,2060.21,0.300767),目標(biāo)照射點(diǎn)為(
75、2061.92,2061.92,0 )。剩下的參數(shù)表示燈光陰影和時(shí)區(qū)設(shè)定。</p><p> 燈光文本以燈光的名稱命名,所有的燈光文本放在同一文件夾lights下。當(dāng)啟用燈光庫時(shí),利用CFileFind類讀取lights下所有燈光文本名稱,顯示給用戶選擇,當(dāng)選定了一種燈光后,用CText類讀取燈光文本中數(shù)據(jù),從而生成一個(gè)新的燈光。</p><p><b> 3.外部景觀庫&l
76、t;/b></p><p> 利用AutoCAD提供的外部景觀庫landscape library information ( .lli 文件 ),對(duì)外部景觀進(jìn)行管理。AutoCAD使用的景物需要兩個(gè)圖像文件來完成,一個(gè)是外部景觀圖像文件,另一個(gè)則是顯示景物的蒙板(AutoCAD稱為不透明貼圖文件),所以.lli文本主要用于記錄各種景觀的這兩種圖片的名稱。</p><p> .l
77、li文本文件示例:(最后一個(gè)字段表示景觀的類別)</p><p> # AutoVision Landscape library</p><p> # Entries are of the form:</p><p> # Landscape Object Name</p><p> # Texture Map</p>
78、<p> # Opacity Map</p><p> # Alignment (0 = camera aligned one face, 1 = one face, 2 = crossing faces, 3 = camera aligned crossing faces)</p><p><b> Bush #1</b></p>&l
79、t;p> 8bush02l.tga</p><p> 8bush02o.tga</p><p><b> 0</b></p><p> 第二節(jié) 數(shù)據(jù)庫(access)設(shè)計(jì)</p><p> 對(duì)于與具體設(shè)計(jì)工程有關(guān),或與使用頻率有關(guān)的數(shù)據(jù),采用access數(shù)據(jù)庫進(jìn)行記錄,設(shè)計(jì)二張表,一張表表名為projec
80、tini,記錄本工程上一次渲染所采用的三大材質(zhì)、效果(粗面或光澤)和渲染精度。分別用ws,ms,zb, wss,mss,zbs,precision七個(gè)字段來存儲(chǔ)。一張表表名為renderMat,記錄最近使用過的材質(zhì)名稱,設(shè)計(jì)一個(gè)字段count記錄使用頻率。查詢最近使用的二十種材質(zhì)時(shí),按count字段降序排列取出前二十列即可。</p><p> 第三節(jié) 各功能模塊詳細(xì)設(shè)計(jì)</p><p>
81、<b> 1.石料錄入</b></p><p><b> 2.地板料錄入</b></p><p><b> 3.景觀錄入</b></p><p><b> 4.燈光錄入與刪除</b></p><p><b> 5.渲染石料選擇</
82、b></p><p><b> 6.地板料選擇</b></p><p><b> 7.景觀選擇</b></p><p><b> 8.燈光選擇</b></p><p> 9.背景錄入,刪除 </p><p><b> 10.背景
83、選擇</b></p><p> 系統(tǒng)(運(yùn)行)結(jié)果演示</p><p><b> 1.石料庫</b></p><p><b> 2.地板料庫</b></p><p><b> 3.背景庫</b></p><p> 4.石料庫、地板料庫
84、、背景庫添加功能</p><p><b> 5.外部景觀庫</b></p><p><b> 6.外部景觀添加</b></p><p><b> 7.燈光庫</b></p><p> 8.渲染石料,精度選擇</p><p><b>
85、9.最近使用石料</b></p><p> 10.最近使用石料一覽</p><p><b> 11.渲染效果圖</b></p><p><b> 結(jié)束語和感想</b></p><p> 本文針對(duì)墓石設(shè)計(jì)過程中的渲染工作展開設(shè)計(jì),主要用access 數(shù)據(jù)庫和三種不同類型的文本數(shù)據(jù)庫
86、建立石料圖片庫、外部景觀圖片庫、背景圖片庫板、地板料圖片庫、燈光庫,對(duì)渲染圖片進(jìn)行方便高效的管理。除了本模塊以外,我還參與了本模塊所屬項(xiàng)目的出圖模塊設(shè)計(jì)和高級(jí)建模模塊的伸縮部材實(shí)現(xiàn)等工作,礙于篇輻,無法在本文中給予詳細(xì)描述。</p><p> 以下,想談一下我的感想。在本項(xiàng)目的詳細(xì)設(shè)計(jì)結(jié)束后,我很快一頭扎進(jìn)編碼階段,卻在過程中遇到許多邏輯上的沖突和實(shí)現(xiàn)上的困難。如原本對(duì)石料庫、地板料庫、背景庫分別設(shè)計(jì)了三種不同
87、的文本數(shù)據(jù)庫,管理起來十分混亂,后來重新進(jìn)行設(shè)計(jì)才理順了思路,把三者歸一,提高了代碼的重用性,也更深刻地體驗(yàn)了概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)的重要性。還有,剛開始在學(xué)習(xí)Render API時(shí),成篇密密麻麻的英文文檔很讓我卻步,但硬著頭皮度過了適應(yīng)期后,發(fā)現(xiàn)并沒有想象中那么可怕。在結(jié)合MFC和ObjectARX進(jìn)行編程的過程中,我還發(fā)現(xiàn)扎實(shí)的編程基礎(chǔ)是一切學(xué)習(xí)的起點(diǎn)和保障,在編碼過程中,我隨時(shí)都在復(fù)習(xí)C和C++語言的知識(shí)點(diǎn)??梢哉f在此工程中,我得到了
88、很好的編程能力訓(xùn)練,更明白投機(jī)取巧地繞開問題只是偶而生效的“小聰明”而已,更重要的是認(rèn)真學(xué)習(xí)的態(tài)度和鍥而不舍的鉆研精神。</p><p><b> 致謝語</b></p><p> 本論文是在教授的指導(dǎo)下完成的,感謝朱教授在VC++的學(xué)習(xí)上給予的方法教導(dǎo)和工程管理方面的思想教導(dǎo)。他嚴(yán)謹(jǐn)?shù)墓ぷ鲬B(tài)度,細(xì)致認(rèn)真的研究精神令我受益匪淺。在此,謹(jǐn)對(duì)老師的培育和關(guān)懷致以衷心的
89、感謝和崇高的敬意。</p><p> 感謝同實(shí)驗(yàn)室的丁學(xué)清,黃永剛,陳云,徐良等同學(xué)的在項(xiàng)目研發(fā)中對(duì)我的支持和幫助。</p><p> 感謝父母及弟弟的鼓勵(lì)與支持,是他們給予我“既然要做了,就做到最好”的信念。</p><p> 感謝一直關(guān)心和幫助我的師長、朋友和同學(xué)們!</p><p> 最后向熱心評(píng)審本論文和參與論文答辯的老師們致
90、以衷心的感謝!</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 吳目誠,精彩AutoCAD2002 3D繪圖[M],科學(xué)出版社,2002年.</p><p> [2] 譚浩強(qiáng),C程序設(shè)計(jì)(第二版)[M],清華大學(xué)出版社,1999年.</p><p> [3] autodesk公司,AutoC
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 墓石設(shè)計(jì)系統(tǒng)渲染功能的objectarx實(shí)現(xiàn)-畢業(yè)論文
- 墓石cad設(shè)計(jì)系統(tǒng)出圖模塊的objectarx實(shí)現(xiàn)-畢業(yè)論文
- 墓石cad設(shè)計(jì)系統(tǒng)出圖模塊的objectarx實(shí)現(xiàn)-畢業(yè)論文
- high購系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)-本科畢業(yè)論文
- 本科畢業(yè)論文(設(shè)計(jì))
- 基于.net的本科畢業(yè)論文管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 本科畢業(yè)論文-基于nodejs的博客系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 本科畢業(yè)論文-基于nodejs的博客系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
- 本科畢業(yè)論文自動(dòng)澆花系統(tǒng)的設(shè)計(jì)
- 本科畢業(yè)論文《管理互動(dòng)系統(tǒng)的設(shè)計(jì)》
- 個(gè)人博客的設(shè)計(jì)與實(shí)現(xiàn)_本科畢業(yè)論文
- 本科畢業(yè)論文-基于java的聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 本科畢業(yè)論文
- 本科畢業(yè)論文——停車場管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 網(wǎng)上書店銷售系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)-本科畢業(yè)論文
- 本科畢業(yè)論文-高校學(xué)生管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 本科畢業(yè)論文設(shè)計(jì)范本
- 本科畢業(yè)論文(設(shè)計(jì))正文
- 本科畢業(yè)論文(設(shè)計(jì))模板
- 基于ObjectArx的墓石產(chǎn)品參數(shù)化建模系統(tǒng)的研究與實(shí)現(xiàn).pdf
評(píng)論
0/150
提交評(píng)論