墓石設計系統(tǒng)渲染功能的objectarx實現(xiàn)-本科畢業(yè)論文_第1頁
已閱讀1頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  本科畢業(yè)論文</b></p><p>  (科研訓練、畢業(yè)設計)</p><p>  題 目:墓石設計系統(tǒng)渲染功能的ObjectARX實現(xiàn)</p><p><b>  姓 名:</b></p><p>  學 院:軟件學院</p><p

2、><b>  系: /</b></p><p>  專 業(yè):軟件工程</p><p><b>  年 級:</b></p><p><b>  學 號:</b></p><p>  指導教師(校內(nèi)): 職稱:教授</p>&

3、lt;p>  指導教師(校外): 職稱:</p><p>  2005年 05月 29 日</p><p>  墓石設計系統(tǒng)渲染功能的ObjectARX實現(xiàn)</p><p>  [摘要] 近些年來,隨著墓石設計行業(yè)的快速發(fā)展,墓石制品公司間爭奪客戶的競爭越來越激烈。對于不懂圖紙設計的客戶來講,一張色彩斑斕的設計效果圖往往比一堆縱橫交

4、錯的黑線來得更直觀和真實。而要渲染出一張美侖美奐的效果圖,往往要耗費設計人員大量寶貴的時間。在此應用背景下,本文利用VC++和Autodesk公司提供的CAD二次開發(fā)工具ObjectARX,針對渲染圖片庫管理和渲染要素的參數(shù)化設定兩個方面進行設計,以達到節(jié)省設計人員工作時間的目的。</p><p>  [關鍵字] 墓石設計系統(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>  墓石設計系統(tǒng)渲染功能的ObjectARX實現(xiàn)</p><p><b>  目錄</b></p><p><b>  第一章 引 言5</b></p><p>  第一節(jié) 什么是墓石設計系統(tǒng)5</p><p&

9、gt;  第二節(jié) 什么是墓石渲染6</p><p>  第三節(jié) 本文主要內(nèi)容7</p><p>  第二章 系統(tǒng)總體設計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é)構解析12</p><p>  第三章 系統(tǒng)詳細設計18</p><p>  第一節(jié) 三類文本庫的設計18</p><p>  第二節(jié) 數(shù)據(jù)庫(access)設計20</p><p>  第三節(jié) 各功能模塊詳細設計20</p><p>

11、;  第四章 系統(tǒng)運行結(jié)果演示26</p><p><b>  結(jié)束語和感想31</b></p><p><b>  致謝語32</b></p><p><b>  參考文獻33</b></p><p><b>  引言</b></p>

12、<p>  第一節(jié) 什么是墓石設計系統(tǒng)</p><p>  墓石指的用石頭建成的陵墓。要建成漂亮的陵墓,不僅要在石材加工廠里把粗糙、不規(guī)則的石頭磨成方圓有形的石種,還要在設計室里費盡心思地進行造型設計,后一種工作就叫做墓石設計。在墓石行業(yè)發(fā)展的初期,設計者采用手工制圖,主要依賴的工具是紙和筆,畫過的局部造型往往沒有可重用性,因此設計過程中存在許多重復勞動。隨著計算機技術的發(fā)展,石材設計行業(yè)引進了計算

13、機輔助設計( Computer Aided Design,簡稱CAD )技術,從此進入了無紙化設計時代。</p><p>  計算機輔助設計( Computer Aided Design,簡稱CAD )技術,是指設計人員(或用戶〕在產(chǎn)品或工程設計過程中借助于CAD系統(tǒng)(硬件、軟件)的幫助來完成設計任務,并達到提高設計質(zhì)量和縮短設計周期的目的的技術。而在所有的CAD軟件系統(tǒng)中,由美國Autodesk公司開發(fā)的Aut

14、oCAD是目前國內(nèi)外最廣泛使用的計算機輔助繪圖和設計軟件包。本文所進行的二次開發(fā)也正是以AutoCAD為平臺的。</p><p>  在墓石設計中,固然包含著需要由人來完成的創(chuàng)造性的工作,但是同時也包含了很多重復性的工作,如大量的計算、繪圖等工作。在CAD技術出現(xiàn)以前,工程設計的全過程都是由人來完成的.而計算機具有運算速度快、存儲數(shù)據(jù)多、精確度高、有記憶和邏輯判斷的能力、可處理圖形等特點,這些重復性的工作可以由計

15、算機更快、更好地去完成,這就是把CAD技術應用在墓石設計領域的意義所在。</p><p>  總結(jié)起來CAD技術在墓石設計領域具有如下優(yōu)勢:</p><p>  提高效率,采用CAD技術后的結(jié)構設計和工程制圖的速度大大提高,對于復雜構件和工程細部的設計實現(xiàn)無級縮放,分級設計。</p><p>  有利于成組設計,可以廣泛應用標準圖和標準設計。</p>

16、<p>  修改設計方便,只需對己存儲的圖紙做局部修改就可成為新圖。</p><p>  易于實現(xiàn)產(chǎn)品數(shù)據(jù)的標準化。設計單位的產(chǎn)品數(shù)據(jù)包括設計、圖文、技術文檔等,標準化,易于設計單位積累產(chǎn)品資源,易于繼承歷史的知識財富,方便產(chǎn)品數(shù)據(jù)的存儲、傳遞、轉(zhuǎn)換和理解。</p><p>  降低設計成本,提高設計質(zhì)量。</p><p>  目前,在墓石設計業(yè)中,CAD

17、技術得到了廣泛的應用,CAD技術極大的提高了設計效率和設計精度,減少了設計過程中的差錯,并且顯著的縮短了設計周期和降低了設計成本。</p><p>  但是,新的東西往往會帶來新的問題。CAD技術的出現(xiàn)意味著設計人員不僅要懂得設計,還要懂得計算機相關操作知識,而不再是筆一揮就能在圖紙上看到所想的東西。再者,AutoCAD并不是針對單個設計行業(yè)開發(fā)的,所以很多功能都無法滿足設計人員工作的需要。比如AutoCAD提供

18、了一個渲染庫,但卻沒有提供分類存儲,無法進行方便高效的圖片庫管理。以上二點促使了CAD二次開發(fā)的興起,開始出現(xiàn)了為墓石行業(yè)量身定做的CAD軟件,即本文所稱的墓石設計系統(tǒng)。經(jīng)過二次設計的CAD軟件不需要軟件操作員有電腦與CAD的專業(yè)操作知識,就可以快速、簡便地制成設計圖紙,把設計人員的構思真實、完美地表現(xiàn)出來。對于完成后的圖紙,系統(tǒng)將自動完成報價與原價管理等工作。</p><p>  第二節(jié) 什么是墓石渲染<

19、/p><p>  用CAD軟件制圖,輸出的一堆具有幾何意義的線條,并不具有直接的視覺沖擊力。比如畫一塊長方體的墓碑,顯示在屏幕上的就是一個由十二條直線構成的長方體,很難讓人們把它和現(xiàn)實生活中見到的有顏色、有質(zhì)感的墓碑聯(lián)系起來。對于非專業(yè)設計人員來講,一張色彩斑斕設計效果圖往往比一堆縱橫交錯的黑線來得更直觀和真實。所以,當設計者設計完墓石造型后,往往要擔當起“畫家”的角色,把畫出來的每一塊石頭貼附上與石種相配的圖片,并

20、在墓石周圍畫上相宜的景物。這個工作過程實際上就是模擬現(xiàn)實場景對設計圖進行渲染。</p><p>  渲染完成后,就可以通過網(wǎng)絡傳輸給客戶觀看了,如圖1所示。</p><p><b>  圖1</b></p><p>  第三節(jié) 本文主要內(nèi)容</p><p>  渲染工作并不是一件簡單的事情,要模擬出真實的場景,不僅要能模

21、擬出石料品種、石料花紋疏密、石料加工外理方式(磨光面或者粗糙面)等內(nèi)部屬性,還要能模擬出太陽光照、花草樹木人等外部屬性。而要模擬出這些屬性,就要設定大量不同的參數(shù)。所以AutoCAD軟件提供的渲染功能不可避免地具有參數(shù)多,設定繁瑣,渲染效果不好的缺點。</p><p>  本文針對墓石設計過程中的渲染工作進行分析和設計,提取墓石渲染過程中主要的工作流程,對以下這兩個方面進行了設計:第一,通過建立石料圖片庫、外部景

22、觀圖片庫、背景圖片庫板、地板料圖片庫、燈光庫這五大文本數(shù)據(jù)庫,對渲染圖片進行方便高效的管理;第二,把一部分渲染參數(shù)固定化,提供精簡了參數(shù)的MFC界面,用于設定各種渲染配置,從而達到節(jié)省設計人員工作時間的目的。</p><p><b>  系統(tǒng)總體設計</b></p><p>  第一節(jié) 系統(tǒng)功能模塊圖和需求分析</p><p><b>

23、;  圖2</b></p><p>  系統(tǒng)功能模塊圖如圖2所示。以下,將給出各個模塊的具體需求,每一點描述一個子模塊。</p><p><b>  1.部材石料選擇</b></p><p>  部材石料指的是要在石頭上貼附的材質(zhì)圖片。選擇圖片時,要從石料庫中選擇對應的石料名稱。所有的石頭分為三大類:墓碑,周邊,外柵。所有的墓碑用一

24、種材質(zhì)來渲染,周邊、外珊也各用一種材質(zhì)渲染。根據(jù)需要,也可以對個別的石頭選擇特殊的材質(zhì)來渲染。同時為了擴充石料種類庫,要求提供石料種類的刪除,添加,修改功能。另外,要求可以記錄下最近使用的材質(zhì),和上一次渲染時三大類分別用的是什么材質(zhì)。</p><p><b>  2.渲染精度設定</b></p><p>  設定渲染精度,精度高則圖片清晰度高,精度低則清晰度低。如果把

25、渲染效果選擇為粗糙面,則材質(zhì)的效果偏暗淡,如果選擇為光面,則材質(zhì)的效果偏亮。要求記住上次渲染選定的精度和效果。</p><p><b>  3.燈光設定</b></p><p>  模擬外部燈光,使效果圖中出現(xiàn)陰影等效果,增加效果圖真實感。主要設定如下:</p><p><b>  周圍光設定 </b></p>

26、<p><b>  太陽光設定 </b></p><p><b>  環(huán)境光設定 </b></p><p>  自定義模式:手動設定外部燈光,并提供燈光效果記憶功能,即可見本次的燈光設定命名保存,下次需要時調(diào)入使用。</p><p>  固定組合模式:提供多種常用各種光源的組合模式。</p>&

27、lt;p><b>  4.背景設定</b></p><p>  選擇渲染時要用的背景圖片,使場景更真實,比如一片天空或一個陵園的景象等。同時為了擴充背景庫,要求提供背景種類的刪除,添加,修改功能。</p><p><b>  5.地板料鋪設</b></p><p>  設定渲染所需的內(nèi)部鋪設石料,實際上是鋪設地板料,

28、同時提供地板料的添加,刪除,修改功能。</p><p><b>  6.外部景觀設定</b></p><p>  外部景觀,是指樹,人,佛像等為了模擬實際效果而加入的圖片。在選擇外部景觀時可改變高度,修改其相關屬性。系統(tǒng)要求提供外部景觀的添加,刪除,修改功能。</p><p>  第二節(jié) 開發(fā)工具(Object ARX)介紹</p>

29、<p>  第一小節(jié) ObjectARX簡介</p><p>  第一章中介紹的AutoCAD是目前在微機中應用最為廣泛的CAD系統(tǒng),這不僅是因為它功能的強大,更因為其良好的開放性。Autodesk公司己經(jīng)提供了四種二次開發(fā)手段: AutoLISP, ADS,ActiveX/VBA(Visual Basic for Application)及ARX。AutoLISP是一種解釋型語言,只能簡單地為Au

30、toCAD添加新的命令。ADS應用程序是用C語言編寫且編譯過的,作為外部函數(shù)能通過AutoLISP解釋器加載并執(zhí)行。ActiveX/VBA是通過ActiveX技術向開發(fā)人員提供的在第三方開發(fā)環(huán)境下進行AutoCAD二次開發(fā)的應用集,該應用集簡單易用、功能強大。</p><p>  ARX(Acad Runtime eXtend)應用程序是在VC++環(huán)境下編寫且編譯過的動態(tài)連接庫,與AutoCAD共享內(nèi)存空間,是在

31、AutoCAD中運行的高效的二次開發(fā)應用程序。ARX是Autodesk公司推出的最強大的二次開發(fā)工具,它不但支持面向?qū)ο蟮某绦蛟O計,而且提供了許多應用程序接口(如ODBC)。具體而言,ARX具有以下顯著特征:</p><p>  功能強勁。ARX充分利用AutoCAD的開放式體系結(jié)構,可以監(jiān)控和處理AutoCAD各種事件,可以定義AutoCAD命令(包括可透明使用的命令),可以定義數(shù)據(jù)庫對象,等等??梢哉f,ARX

32、是在兼具了Autolisp良好交互性和ADS良好綜合性的基礎上,提高了應用程序的智能化程度。</p><p>  面向?qū)ο蟆RX繼承了標準C++面向?qū)ο蟮奶匦?,提供了訪問和控制AutoCAD及處理CAD常見事務的六個主要類庫。它不但可以像標準C++一樣自定義或由派生得到新類,而且允許定義參與運行時類型識別的新類。</p><p>  運行性能好。由于每個ARX應用都是一個動態(tài)鏈接庫,它與

33、AutoCAD系統(tǒng)共享同一內(nèi)存地址空間,所以ARX應用能夠直接訪問AutoCAD的各種內(nèi)存對象,既節(jié)省了內(nèi)存開銷,又提高了應用程序的運行速度。</p><p>  ARX上述特性無疑使它成為集成CAD圖形軟件和標準數(shù)據(jù)庫的編程接口中最佳可選的開發(fā)工具。ARX技術將是CAD軟件開發(fā)的一個方向。</p><p>  第二小節(jié) ARX類庫</p><p>  ARX類庫集

34、是用C++編譯的類的集合。利用ARX進行開發(fā),必須通過ARX類庫集來訪問AutoCAD數(shù)據(jù)庫。ObjectARX環(huán)境由以下類庫和函數(shù)庫構成:</p><p><b>  1.AcRx類庫</b></p><p>  AcRx庫提供了系統(tǒng)級的類,用于動態(tài)連接庫的初試化和連接、運行時類的注冊、識別。這個庫的基類是AcRcObject,它提供了以下工具:</p>

35、<p>  對象運行時類的識別和派生分析。</p><p>  在運行時向己有的類附加新的協(xié)議。</p><p>  對象的相等和關系測試。</p><p><b>  對象拷貝。</b></p><p><b>  2.AcEd類庫</b></p><p> 

36、 AcEd庫提供用于定義和注冊新的AutoCAD命令的類,采用與AutoCAD定義內(nèi)部命令一樣的方式。定義的新命令成為“本地命令”,和AutoCAD內(nèi)部命令一樣放在同一個內(nèi)部結(jié)構(AcEdConunandstack)中。該庫中有一個重要的類AcEditorReactor,它監(jiān)視著AutoCAD編輯器的狀態(tài),并在指定事件發(fā)生時通知應用程序,如一個命令的開始、結(jié)束或取消。</p><p><b>  3.A

37、cDb類庫</b></p><p>  AcDb類庫提供組成AutoCAD數(shù)據(jù)庫的類。這個數(shù)據(jù)庫存儲了組成AutoCAD圖的所有圖形對象(稱為實體)的所有信息,還存儲了非圖形對象(例如圖層、線型、字型等)的信息。利用AcDb庫,可以查詢、處理已有的AutoCAD實體和對象的實例,也可以創(chuàng)建新的實體和對象的實例。</p><p><b>  4.AcGi類庫</b

38、></p><p>  AcGi庫提供用于繪制AutoCAD實體的圖形界面。這個庫由AcDbEntity的成員函數(shù)worldDraw()、viewportDraw() 和saveas ()使用,這些函數(shù)是標準實體函數(shù)的一部分。所有實體類必須定義worldDraw()函數(shù)。AcGiWorldDraw()對象提供一個應用程序編程界面(API)通過它AcDbEntity worldDraw()可以在所有視窗中同步

39、處理這個對象的圖形表示。同樣,AcDbEntity對象也提供API界面AcDbEntity:: viewportDraw(),可以在單個視窗中對實體進行特別處理。</p><p><b>  5.AcGe類庫</b></p><p>  AcGe庫由AcDb庫使用,并提供使用工具類如矢量、點、矩陣等,用來提供通用的2D和3D幾何操作。它也提供了簡單的幾何對象,如點、線

40、、面等。</p><p><b>  6.ADS庫</b></p><p>  ADS庫是一個C函數(shù)庫,一般ARX應用程序通過ADS庫函數(shù)完成諸如實體選擇、選擇集操作、數(shù)據(jù)獲取等任務。ADS庫是開發(fā)時充分利用AutoCAD界面的很好工具。</p><p>  第三節(jié) AutoCAD數(shù)據(jù)庫介紹</p><p>  在Aut

41、oCAD平臺上開發(fā)應用程序,就必須要操作AutoCAD的數(shù)據(jù)庫(AutoCAD DataBase,簡稱AcDb。AutoCAD數(shù)據(jù)庫是按一定結(jié)構組織的AutoCAD圖形全部有關數(shù)據(jù)的集合。</p><p>  存儲在AutoCAD數(shù)據(jù)庫中的數(shù)據(jù)稱為數(shù)據(jù)庫對象(AcDbObject),它是一幅AutoCAD圖形的基本組成部分,包括可見幾何實體對象和不可見的非幾何對象等。幾何實體對象在圖形中具有圖形顯示,如line,

42、 circle, arc, text, solid, region等。非幾何對象的例子如圖層、線型、文字樣式等。符號表(BlockTable)和有名對象字典(Named object Dictionary)是AutoCAD數(shù)據(jù)庫的關鍵組成部分,由于它們又包含了其它對象,因而稱為容器對象(Container Object)。容器對象的作用是組織和管理數(shù)據(jù)庫對象。</p><p>  第四節(jié) Render API庫結(jié)

43、構解析</p><p>  第一小節(jié) Render API簡介</p><p>  Autodesk公司提供的AutoCAD Render API是一個專門為AutoCAD渲染功能進行二次開發(fā)的應用開發(fā)包。它的設計包括了兩個部分:動態(tài)鏈接庫acRender.arx和編程庫avlib.lib。在程序?qū)崿F(xiàn)過程中,acRender.arx負責與AutoCAD進行通信,而avlib.lib則包含了

44、與acRender.arx通信的各種編程接口。</p><p>  第二小節(jié) Render API結(jié)構模式</p><p>  Render API函數(shù)庫提供了20個函數(shù),每個函數(shù)都實現(xiàn)一個特定的功能,如燈光設定。與這20個函數(shù)配套的是20個不同的結(jié)構體,這些結(jié)構體有一個共同的字段mode:mode 表示要調(diào)用本函數(shù)的哪個具體功能,比如燈光設定有多種模式:燈光刪除,燈光添加,燈光編輯等,m

45、ode 取值AvLightDelete,就表示調(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ù)為例,要新建一個遠燈光時,首先聲明一個結(jié)構體AvLightParam的實例lightParam,設定模式為AvLightNewDistant:lightParam.mode = AvLightNewDistant,</p><p>  再向lightParam填充各項

67、數(shù)據(jù):燈光名稱,強度,顏色,角度,陰影選擇,是否日照等等( Req'd一欄中為yes的是必須填充的數(shù)據(jù)項,no的是選擇填充的數(shù)據(jù)項 )。然后再調(diào)用燈光設定函數(shù)av_light( &lightParam )。這樣就在AutoCAD中新建成了一個燈光。此外,也可以通過AvLightUI模式直接調(diào)用系統(tǒng)設定燈光的對話框。</p><p><b>  系統(tǒng)詳細設計</b></p

68、><p>  第一節(jié) 三類文本庫的設計</p><p>  1.石料庫、地板料庫、背景庫</p><p>  利用AutoCAD提供的材質(zhì)庫Render material libraries ( .mli 文件 ),對石料庫和地板料庫進行管理。.mli文件類似于一個access數(shù)據(jù)庫,里面存放各種石料的名稱、對應圖片名稱、渲染比例、反射系數(shù)、粗糙系數(shù)等材質(zhì)屬性。但由于.

69、mli文本一般記錄的是材質(zhì)的圖片名稱,無法記錄材質(zhì)的中文名稱,所以要利用文本操作從另一文本文件Render pattern ( .pat 文件 )中讀出材質(zhì)名稱。為此設計一個讀取文本文件的類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>  把燈光各項參數(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>  以上這段文本表示本燈光由一種光源組成,周圍光強度為0.3,周圍光顏色為( 1,1,1 )(RGB顏色編碼),光源名稱為SIGHT,類型為遠光源,強度為0.2,顏色為( 1,1,1 )(RGB顏色編碼),光源點坐標為(2061.92,2060.21,0.300767),目標照射點為(

75、2061.92,2061.92,0 )。剩下的參數(shù)表示燈光陰影和時區(qū)設定。</p><p>  燈光文本以燈光的名稱命名,所有的燈光文本放在同一文件夾lights下。當啟用燈光庫時,利用CFileFind類讀取lights下所有燈光文本名稱,顯示給用戶選擇,當選定了一種燈光后,用CText類讀取燈光文本中數(shù)據(jù),從而生成一個新的燈光。</p><p><b>  3.外部景觀庫&l

76、t;/b></p><p>  利用AutoCAD提供的外部景觀庫landscape library information ( .lli 文件 ),對外部景觀進行管理。AutoCAD使用的景物需要兩個圖像文件來完成,一個是外部景觀圖像文件,另一個則是顯示景物的蒙板(AutoCAD稱為不透明貼圖文件),所以.lli文本主要用于記錄各種景觀的這兩種圖片的名稱。</p><p>  .l

77、li文本文件示例:(最后一個字段表示景觀的類別)</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)設計</p><p>  對于與具體設計工程有關,或與使用頻率有關的數(shù)據(jù),采用access數(shù)據(jù)庫進行記錄,設計二張表,一張表表名為projec

80、tini,記錄本工程上一次渲染所采用的三大材質(zhì)、效果(粗面或光澤)和渲染精度。分別用ws,ms,zb, wss,mss,zbs,precision七個字段來存儲。一張表表名為renderMat,記錄最近使用過的材質(zhì)名稱,設計一個字段count記錄使用頻率。查詢最近使用的二十種材質(zhì)時,按count字段降序排列取出前二十列即可。</p><p>  第三節(jié) 各功能模塊詳細設計</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)(運行)結(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>  本文針對墓石設計過程中的渲染工作展開設計,主要用access 數(shù)據(jù)庫和三種不同類型的文本數(shù)據(jù)庫

86、建立石料圖片庫、外部景觀圖片庫、背景圖片庫板、地板料圖片庫、燈光庫,對渲染圖片進行方便高效的管理。除了本模塊以外,我還參與了本模塊所屬項目的出圖模塊設計和高級建模模塊的伸縮部材實現(xiàn)等工作,礙于篇輻,無法在本文中給予詳細描述。</p><p>  以下,想談一下我的感想。在本項目的詳細設計結(jié)束后,我很快一頭扎進編碼階段,卻在過程中遇到許多邏輯上的沖突和實現(xiàn)上的困難。如原本對石料庫、地板料庫、背景庫分別設計了三種不同

87、的文本數(shù)據(jù)庫,管理起來十分混亂,后來重新進行設計才理順了思路,把三者歸一,提高了代碼的重用性,也更深刻地體驗了概要設計和詳細設計的重要性。還有,剛開始在學習Render API時,成篇密密麻麻的英文文檔很讓我卻步,但硬著頭皮度過了適應期后,發(fā)現(xiàn)并沒有想象中那么可怕。在結(jié)合MFC和ObjectARX進行編程的過程中,我還發(fā)現(xiàn)扎實的編程基礎是一切學習的起點和保障,在編碼過程中,我隨時都在復習C和C++語言的知識點??梢哉f在此工程中,我得到了

88、很好的編程能力訓練,更明白投機取巧地繞開問題只是偶而生效的“小聰明”而已,更重要的是認真學習的態(tài)度和鍥而不舍的鉆研精神。</p><p><b>  致謝語</b></p><p>  本論文是在教授的指導下完成的,感謝朱教授在VC++的學習上給予的方法教導和工程管理方面的思想教導。他嚴謹?shù)墓ぷ鲬B(tài)度,細致認真的研究精神令我受益匪淺。在此,謹對老師的培育和關懷致以衷心的

89、感謝和崇高的敬意。</p><p>  感謝同實驗室的丁學清,黃永剛,陳云,徐良等同學的在項目研發(fā)中對我的支持和幫助。</p><p>  感謝父母及弟弟的鼓勵與支持,是他們給予我“既然要做了,就做到最好”的信念。</p><p>  感謝一直關心和幫助我的師長、朋友和同學們!</p><p>  最后向熱心評審本論文和參與論文答辯的老師們致

90、以衷心的感謝!</p><p><b>  參考文獻</b></p><p>  [1] 吳目誠,精彩AutoCAD2002 3D繪圖[M],科學出版社,2002年.</p><p>  [2] 譚浩強,C程序設計(第二版)[M],清華大學出版社,1999年.</p><p>  [3] autodesk公司,AutoC

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論