亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

與二維或三維幾何實(shí)體相關(guān)的數(shù)據(jù)的輸出方法和系統(tǒng)的制作方法

文檔序號(hào):6608550閱讀:268來(lái)源:國(guó)知局
專利名稱:與二維或三維幾何實(shí)體相關(guān)的數(shù)據(jù)的輸出方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及信息數(shù)據(jù)的輸出,更具體涉及從計(jì)算機(jī)程序,比如計(jì)算機(jī)輔助設(shè)計(jì)軟件(CAD)或視頻游戲的軟件輸出與幾何實(shí)體有關(guān)的數(shù)據(jù)。
背景技術(shù)
目前,在各種工業(yè)領(lǐng)域中,通過(guò)仿真程序,比如飛行仿真器,進(jìn)行比如CAD和視頻游戲等幾何實(shí)體的建模和/或處理技術(shù)和系統(tǒng)是很普遍的,這可從諸如小轎車或飛行器的計(jì)算機(jī)輔助設(shè)計(jì)到3D虛擬現(xiàn)實(shí)的活動(dòng)游戲。
雖然CAD比較年輕,還不到20年,盡管信息技術(shù)有了飛速的進(jìn)展,然而由于必須與早先的CAD系統(tǒng)向上相容,導(dǎo)致要保持歷史數(shù)據(jù)的結(jié)構(gòu),只是部分開發(fā)被新的信息系統(tǒng)所提供的可能性。
另外,在CAD或視頻游戲領(lǐng)域中,使用的數(shù)據(jù)結(jié)構(gòu)的格式普遍是具有知識(shí)產(chǎn)權(quán)的,這就是說(shuō),對(duì)所涉及的軟件是專有的,至少對(duì)涉及的軟件的編寫者是專有的。但是,至少在CAD領(lǐng)域中,這些圖形軟件一般具有輸入與幾何實(shí)體相關(guān)的不同格式數(shù)據(jù)的功能。
相反,由于要保持客戶的明顯的原因,這些軟件的編寫者,很少公布他們使用的數(shù)據(jù)格式規(guī)范,基于同樣的想法,對(duì)于提出能夠從他們的軟件將數(shù)據(jù)整體輸出到流行軟件中的實(shí)用程序,他們一般是很有保留的。
這種情況導(dǎo)致很難把這些軟件使用的數(shù)據(jù)從幾何數(shù)據(jù)的建模和/或處理信息系統(tǒng)完全轉(zhuǎn)移到類似的信息系統(tǒng)中。然而,這樣的轉(zhuǎn)移經(jīng)常是很必要的,比如對(duì)于在不同機(jī)種的CAD系統(tǒng)進(jìn)行的數(shù)據(jù)轉(zhuǎn)移,比如在同一個(gè)企業(yè)內(nèi)部,在同級(jí)提供者的不同子處理器中所遇到的,比如特別是由于歷史原因在長(zhǎng)時(shí)間使用CAD的大企業(yè)中所發(fā)生的情況。
同樣,可以預(yù)見到,視頻游戲技術(shù)的進(jìn)展使得定期地在視頻游戲中輸入人物或物體,此時(shí)這將重新引起從另一個(gè)視頻游戲中輸出此類實(shí)體的問(wèn)題。
由于沒(méi)有涉及有關(guān)數(shù)據(jù)庫(kù)格式的精確的規(guī)范,在與幾何實(shí)體有關(guān)的數(shù)據(jù)建模和/或處理的不同機(jī)種系統(tǒng)之間進(jìn)行數(shù)據(jù)轉(zhuǎn)移的必要性導(dǎo)致在這些數(shù)據(jù)轉(zhuǎn)移的實(shí)用程序中要很高的開發(fā)費(fèi)用,另外,當(dāng)所涉及的系統(tǒng)數(shù)據(jù)庫(kù)的結(jié)構(gòu)進(jìn)行改進(jìn)或變化時(shí),這些實(shí)用程序徑應(yīng)該完全或部分重新建立。另外,由于缺乏涉及待轉(zhuǎn)換數(shù)據(jù)格式的精確規(guī)范,這樣的轉(zhuǎn)換一般是不完整的。
另外,在CAD系統(tǒng)的用戶企業(yè)里,對(duì)普遍和很好確定的開放數(shù)據(jù)的結(jié)構(gòu)和格式,同時(shí)作為不同CAD系統(tǒng)之間交換的手段,但也為了保證企業(yè)所使用的CAD軟件編寫者之間盡可能低的獨(dú)立性,假設(shè)所用CAD軟件的編寫者終止活動(dòng)的情況下,一般須要從一個(gè)軟件到另一個(gè)軟件來(lái)重新處理CAD的數(shù)據(jù)。
經(jīng)過(guò)前面的考慮,很顯然對(duì)于具有良好市場(chǎng)而且可靠的可從任何與幾何實(shí)體有關(guān)的數(shù)據(jù)建模和/或處理軟件中輸出與幾何實(shí)體有關(guān)數(shù)據(jù)的方法和系統(tǒng)是有需求的,而且無(wú)須知道此軟件使用的數(shù)據(jù)結(jié)構(gòu),也無(wú)須以任何方式對(duì)此軟件進(jìn)行任何改變,而且不用開發(fā)對(duì)所涉及軟件特殊的界面。
在實(shí)用程序的先有技術(shù)中存在著比如glTrace或glAnalysePro等,它們能夠截取和存儲(chǔ)由應(yīng)用圖形所進(jìn)行的調(diào)取函數(shù)或原函數(shù)。但是,這些實(shí)用程序只具有將涉及的圖形應(yīng)用的調(diào)試功能,完全不能把與幾何實(shí)體有關(guān)的數(shù)據(jù)輸出到同樣性質(zhì)的另一個(gè)系統(tǒng)中。

發(fā)明內(nèi)容
因此,本發(fā)明的目的是使用為幾何實(shí)體建模和/或處理的計(jì)算機(jī)系統(tǒng),提供一種與幾何實(shí)體有關(guān)的數(shù)據(jù)輸出方法,所述幾何實(shí)體建模和/或處理計(jì)算機(jī)系統(tǒng)包括至少一個(gè)能夠執(zhí)行計(jì)算機(jī)程序的中央處理單元、一個(gè)能夠在執(zhí)行所述計(jì)算機(jī)程序的過(guò)程中存儲(chǔ)所述計(jì)算機(jī)程序和與幾何實(shí)體有關(guān)的數(shù)據(jù)的存儲(chǔ)器和至少一個(gè)能夠永久存儲(chǔ)與幾何實(shí)體有關(guān)的數(shù)據(jù)的存儲(chǔ)器,所述計(jì)算機(jī)系統(tǒng)包括至少一個(gè)幾何實(shí)體建模和/或處理程序和至少一個(gè)與幾何實(shí)體有關(guān)的數(shù)據(jù)的顯示程序,所述至少一個(gè)建模和處理程序,通過(guò)調(diào)用位于所述至少一個(gè)顯示程序中的顯示函數(shù)將待顯示的與幾何實(shí)體有關(guān)的數(shù)據(jù)傳遞到至少一個(gè)顯示程序中,待由所述顯示程序顯示的所述數(shù)據(jù),以由所述至少一個(gè)幾何實(shí)體建模和/或處理程序調(diào)用的所述顯示函數(shù)的參數(shù)形式被所述至少一個(gè)建模和/或處理程序傳遞到所述至少一個(gè)顯示程序中,所述顯示函數(shù)能夠顯示一定量的與幾何實(shí)體有關(guān)的數(shù)據(jù),其特征在于,與幾何實(shí)體有關(guān)的數(shù)據(jù)的輸出程序被代入所述至少一個(gè)顯示程序,所述輸出程序具有和所述顯示程序相同的與幾何實(shí)體有關(guān)數(shù)據(jù)的顯示函數(shù),所述輸出程序的所述與幾何實(shí)體有關(guān)數(shù)據(jù)的顯示函數(shù)具有與所述至少一個(gè)顯示程序的相應(yīng)函數(shù)相同的參數(shù),所述至少一個(gè)幾何實(shí)體建模和/或處理程序以明顯的方式調(diào)用所述輸出程序的函數(shù)以代入所述至少一個(gè)顯示程序的相應(yīng)函數(shù)。
在本發(fā)明的方法中,所述至少一個(gè)建模和/或處理程序中的至少一個(gè)是比如計(jì)算機(jī)輔助設(shè)計(jì)類,即CAD類的程序,或者是視頻游戲類的程序。
另外,當(dāng)把所述至少一個(gè)建模和/或處理程序時(shí)調(diào)用到所述輸出程序的所述一個(gè)顯示函數(shù)中時(shí),所述輸出程序以適當(dāng)?shù)母袷綄?shù)據(jù)存儲(chǔ)在所述至少一個(gè)存儲(chǔ)單元中,該數(shù)據(jù)來(lái)源于由所述輸出程序把所述至少一個(gè)建模和/或處理程序調(diào)用到所述輸出程序的所述顯示函數(shù)中的處理。
而且,當(dāng)將所述至少一個(gè)建模和/或處理程序調(diào)用到所述輸出程序的所述顯示函數(shù)中之一時(shí),所述輸出程序可以將相應(yīng)的所述顯示程序的顯示函數(shù)調(diào)用到在所述輸出程序中調(diào)用的,具有與在調(diào)用到所述輸出程序的所述函數(shù)時(shí)存在的參數(shù)相同的調(diào)用參數(shù)的所述顯示函數(shù)中。
在此情況下,所述被調(diào)用的顯示程序可以是其中所述輸出程序已被代入的所述顯示程序,或者相反,是與其中所述輸出程序被代入的程序不同的顯示程序。
另外,所述計(jì)算機(jī)系統(tǒng)還可包括至少一個(gè)圖形顯示裝置,所述至少一個(gè)顯示裝置包括至少一個(gè)圖像刷新和/或顯示存儲(chǔ)器,所述至少一個(gè)顯示程序給所述至少一個(gè)顯示裝置中指令,使由所述顯示程序接收的顯示函數(shù)的所述調(diào)用呈點(diǎn)狀數(shù)值化,所述顯示裝置將所述點(diǎn)存儲(chǔ)在所述圖像刷新和/或顯示存儲(chǔ)器中,此點(diǎn)來(lái)源于由所述至少一個(gè)顯示程序接收的顯示函數(shù)調(diào)用時(shí)的所述數(shù)值化。
在此情況下,所述計(jì)算機(jī)系統(tǒng)還可包括至少一個(gè)圖形顯示器,而且其中所述圖像刷新和/或顯示存儲(chǔ)器使所述至少一個(gè)顯示裝置發(fā)光,所述至少一個(gè)顯示裝置在所述至少一個(gè)圖形顯示器上顯示出從所述圖像刷新和/或顯示存儲(chǔ)器所重新讀出的點(diǎn)。
此時(shí),由所述輸出程序進(jìn)行的數(shù)據(jù)輸出可以被至少一個(gè)特別的圖形指令所啟動(dòng),此指令是被所述至少一個(gè)建模和/或處理程序傳遞到所述輸出程序中的,所述啟動(dòng)所述數(shù)據(jù)輸出的至少一個(gè)特別的圖形指令是比如促使完成所述調(diào)用在所述圖像刷新和/或顯示存儲(chǔ)器中的所述點(diǎn)接收的圖形函數(shù)的所述數(shù)值化的指令。
在實(shí)施方案中,所述至少一個(gè)顯示裝置包括至少兩個(gè)圖像刷新和/或顯示存儲(chǔ)器,而且其中所述促使所述輸出的指令是促使將所述至少兩個(gè)圖像刷新和/或顯示存儲(chǔ)器中的一個(gè)切換到所述至少兩個(gè)圖像刷新和/或顯示存儲(chǔ)器中的另一個(gè)的指令。
另外,當(dāng)將所述建模和/或處理程序調(diào)用到所述輸出程序的所述顯示函數(shù)中時(shí),所述輸出程序可以已適當(dāng)?shù)母袷酱鎯?chǔ)在來(lái)源于由所述輸出程序調(diào)用到所述輸出程序的所述顯示函數(shù)所進(jìn)行處理的數(shù)據(jù)的所述存儲(chǔ)器中。在此情況下,所述計(jì)算機(jī)系統(tǒng)還可執(zhí)行在來(lái)源于由所述輸出程序進(jìn)行處理的數(shù)據(jù)存儲(chǔ)器中重新讀出的實(shí)用程序。另外,此時(shí)重讀所述存儲(chǔ)器的所述實(shí)用程序可以以適當(dāng)?shù)母袷酱鎯?chǔ)在所述至少一個(gè)所述來(lái)源于被從所述存儲(chǔ)器中重新讀出的所述輸出程序進(jìn)行處理的數(shù)據(jù)的存儲(chǔ)單元中。
另外,所述實(shí)用程序還可以借助于適當(dāng)?shù)卣{(diào)用到所述至少一個(gè)顯示程序的顯示函數(shù)來(lái)顯示從所述存儲(chǔ)器中重新讀出的所述數(shù)據(jù)。
在其中代入所述輸出程序的所述至少一個(gè)顯示程序中之一將要符合比如Silicon Graphics公司的OpenGL規(guī)范。在此情況下,所述至少一個(gè)促使所述輸出的指令將是指令OpenGL“wglSwapBuffer”和/或指令OpenGL“glFlush”。
同樣,其中所述輸出程序被代入的所述至少一個(gè)顯示程序中之一將要符合Microsoft公司的DirectX規(guī)范。
通常,在本發(fā)明的方法中,所述與幾何實(shí)體有關(guān)的數(shù)據(jù)要包括幾何數(shù)據(jù)。在此情況下,幾何數(shù)據(jù)將是二維類型和/或三維類型的。另外,此時(shí)所述幾何數(shù)據(jù)可包括點(diǎn)數(shù)據(jù)和/或具有兩個(gè)點(diǎn)的線段數(shù)據(jù)和/或涉及三角形的數(shù)據(jù)和/或涉及四邊形的數(shù)據(jù)和/或涉及多邊形的數(shù)據(jù)。
同樣,所述幾何數(shù)據(jù)可以與線型和/或表面型和/或體型幾何實(shí)體有關(guān)。此時(shí),與幾何實(shí)體有關(guān)的所述幾何數(shù)據(jù)還包括與至少一個(gè)與至少一個(gè)所述線形和/或表面型和/或體型實(shí)體正交的向量有關(guān)的幾何數(shù)據(jù)。
同樣,所述與幾何實(shí)體有關(guān)的數(shù)據(jù)可包括色彩數(shù)據(jù)和/或結(jié)構(gòu)數(shù)據(jù)。
本發(fā)明還提供一個(gè)與幾何實(shí)體有關(guān)的使用幾何實(shí)體建模和/或處理計(jì)算機(jī)系統(tǒng)的數(shù)據(jù)輸出系統(tǒng),所述幾何實(shí)體的建模和處理計(jì)算機(jī)系統(tǒng)包括至少一個(gè)能夠執(zhí)行計(jì)算機(jī)程序的中央處理單元、一個(gè)在執(zhí)行所述計(jì)算機(jī)程序的過(guò)程中能夠存儲(chǔ)所述計(jì)算機(jī)程序和與幾何實(shí)體有關(guān)數(shù)據(jù)的存儲(chǔ)器,以及至少一個(gè)能夠永久存儲(chǔ)與幾何實(shí)體有關(guān)數(shù)據(jù)的存儲(chǔ)單元,所述計(jì)算機(jī)系統(tǒng)包括至少一個(gè)幾何實(shí)體的建模和/或處理程序和至少一個(gè)與幾何實(shí)體有關(guān)數(shù)據(jù)的顯示程序,通過(guò)調(diào)用位于所述至少一個(gè)顯示程序中的顯示函數(shù),所述至少一個(gè)建模和/或處理程序?qū)⒋@示的與幾何實(shí)體有關(guān)的數(shù)據(jù)傳遞到所述至少一個(gè)顯示程序中,所述待由所述顯示程序顯示的數(shù)據(jù)被所述至少一個(gè)建模和/或處理程序以調(diào)用被所述至少一個(gè)幾何實(shí)體建模和/或處理程序調(diào)用的所述顯示函數(shù)參數(shù)的形式轉(zhuǎn)移到至少一個(gè)顯示程序中,所述顯示函數(shù)能夠顯示出一定量的與幾何實(shí)體有關(guān)的數(shù)據(jù),而且其特征在于,它使用了按照前面任何一項(xiàng)權(quán)利要求的方法。


下面僅作為舉例,參照

本發(fā)明的兩個(gè)實(shí)施模式,其中圖1是不使用本發(fā)明的輸出方法,借助于標(biāo)準(zhǔn)的顯示函數(shù)程序庫(kù),在計(jì)算機(jī)顯示器上顯示幾何模型的功能示意圖;
圖2是使用按照本發(fā)明的與幾何實(shí)體有關(guān)的數(shù)據(jù)輸出方法,在計(jì)算機(jī)顯示器上顯示幾何模型的功能示意圖;圖3是按照本發(fā)明的與幾何實(shí)體有關(guān)的數(shù)據(jù)輸出方法的組織圖;圖4是在本發(fā)明的第一個(gè)實(shí)施模式中圖3的方塊40的詳細(xì)組織圖;圖5是在本發(fā)明的第二個(gè)實(shí)施模式中圖3的方塊40的詳細(xì)組織圖;具體實(shí)施方式
本發(fā)明的方法在與幾何實(shí)體有關(guān)的數(shù)據(jù)建模和/或處理計(jì)算機(jī)系統(tǒng)1中運(yùn)行。
此計(jì)算機(jī)系統(tǒng)1可以由沒(méi)有顯示出的與幾何實(shí)體有關(guān)的數(shù)據(jù)建模和/或處理程序11的用戶使用,在此計(jì)算機(jī)系統(tǒng)1上可使用或不使用本發(fā)明的方法。此計(jì)算機(jī)系統(tǒng)1還可以在圖形顯示器14上顯示來(lái)源于被圖形函數(shù)程序庫(kù)12控制的圖形界面13卡的圖形信號(hào)。
在此敘述的后面,為了更加簡(jiǎn)化,與幾何實(shí)體有關(guān)的數(shù)據(jù)建模和/或處理11的程序11也可以表示為圖形應(yīng)用11。
在本發(fā)明的優(yōu)選實(shí)施模式中,用來(lái)運(yùn)行本發(fā)明方法的計(jì)算機(jī)系統(tǒng)1是一臺(tái)計(jì)算機(jī),該計(jì)算機(jī)能夠使用Microsoft公司的Windows操作系統(tǒng),在此操作系統(tǒng)中,幾何數(shù)據(jù)的顯示程序是通過(guò)編輯符合比如SiliconGraphics公司的OpenGL規(guī)范的動(dòng)態(tài)鏈接庫(kù)(DLL)執(zhí)行的圖形API(對(duì)于高級(jí)編程界面)。此DLL通常位于Windows系統(tǒng)目錄中,被命名為opengl32.dll。
OpenGL程序庫(kù)包括許多函數(shù),在此敘述中,作為例子使用的整個(gè)OpenGL函數(shù),不管是使用本發(fā)明的方法,還是不使用本發(fā)明方法的,都有意局限于OpenGL的很簡(jiǎn)化的子集,以在此敘述中能夠保持合理的總量。然而,由此應(yīng)該很好地理解,本發(fā)明的原理不但限于在此敘述中存在的OpenGL函數(shù),而且同樣應(yīng)用于在OpenGL規(guī)范中存在的各種函數(shù)。
參見圖1,現(xiàn)在敘述不使用本發(fā)明的數(shù)據(jù)輸出方法,在圖形顯示器14上顯示幾何模型10的運(yùn)行原理。
當(dāng)希望的圖形應(yīng)用11在圖形顯示器14上顯示一個(gè)幾何模型時(shí),它將圖形界面12調(diào)用到位于DLL中的圖形函數(shù)中。此圖形界面12將向量型的指令經(jīng)過(guò)其相關(guān)的控制軟件送往圖形卡13。
所述的顯示器由陰極射線管或類似的裝置組成,通過(guò)視頻型的掃描進(jìn)行顯示,因此,必須存儲(chǔ)被顯示的圖形數(shù)據(jù)的二進(jìn)制影像,以使使用者2能夠保持顯示圖形數(shù)據(jù)在視覺上的保留。對(duì)于顯示器14的每個(gè)可顯示點(diǎn),這個(gè)由一定量的二進(jìn)制數(shù)字組成的二進(jìn)制影像就被存儲(chǔ)在被稱為圖像刷新存儲(chǔ)器的圖形卡13的內(nèi)存儲(chǔ)器中。通過(guò)每秒20多次重新讀出此二進(jìn)制影像,和由存儲(chǔ)在圖形卡13的圖像刷新存儲(chǔ)器中的影像的代表性視頻信號(hào)重讀的信息產(chǎn)生,就由圖形卡得到了對(duì)于使用者2的數(shù)據(jù)視覺保留。圖形卡13就把這些視頻信號(hào)送到圖形顯示器14上,在這里它們使以二進(jìn)制形式存儲(chǔ)在圖形卡13的圖像刷新存儲(chǔ)器中的影像得以顯示出來(lái)。
因此,希望在計(jì)算機(jī)顯示器14上顯示幾何模型10的圖形應(yīng)用11將執(zhí)行一系列存在于DLL OpenGL中的圖形函數(shù)的調(diào)用。在OpenGL規(guī)范中,此一系列圖形函數(shù)的調(diào)用終止于特定函數(shù)的調(diào)用,這將結(jié)束把送到卡13的指令轉(zhuǎn)換為在圖形顯示器14上顯示的二進(jìn)制點(diǎn)的過(guò)程。
比如,為了顯示由兩個(gè)分別通過(guò)坐標(biāo)的點(diǎn)ABC和BCD的三角形的片(strip)T1和T2組成的幾何模型10,它們的坐標(biāo)分別是A(0,10,0);B(0,10,-10);C(0,0,0);D(0,0,-10);按照DLL OpenGL圖形應(yīng)用11進(jìn)行圖形函數(shù)的調(diào)用glBegin(GL_TRIANGLES_STRIP)glVertex3fv(0.000,10.000,0.000)glVertex3fv(0.000,10.000,-10.000)glVertex3fv(0.000,0.000,0.000)glVertex3fv(0.000,0.000,-10.000)glEnd()wglSwapBuffers()在此一系列調(diào)用當(dāng)中,調(diào)用glBegin(GL_TRIANGLES_STRIP)表示三角形片的開始,而調(diào)用glEnd()表示其結(jié)束。函數(shù)glVertex3fv能夠由三個(gè)坐標(biāo)x、y和z定義三角形的頂點(diǎn)。
當(dāng)前面的全部元素被圖形應(yīng)用11經(jīng)過(guò)調(diào)用上述函數(shù)而轉(zhuǎn)變?yōu)锳PI圖形12時(shí),圖形應(yīng)用11就引起借助于API圖形12適當(dāng)?shù)暮瘮?shù),比如在上面的例子中指出的“glFlush”函數(shù)或“wglSwapBuffers”函數(shù)轉(zhuǎn)變的上述元素顯示的完成。這些函數(shù)促使完成全部?jī)蓚€(gè)前面接收的圖形指令轉(zhuǎn)變?yōu)樵趫D形卡13的電流圖像刷新存儲(chǔ)器中的比特影像,結(jié)果這就結(jié)束了前面接收的圖形接收指令在圖形顯示器14上的顯示。
在圖形卡13具有兩個(gè)幀存儲(chǔ)器的情況下,指令“wglSwapBuffers”還引起圖形卡13兩個(gè)幀存儲(chǔ)器的轉(zhuǎn)變。
在所述顯示例子的情況下,接收指令“wglSwapBuffers”的效果就是引起在圖形顯示器14上有效地顯示出被圖形應(yīng)用11通過(guò)圖形界面轉(zhuǎn)變到圖形卡13中的圖形指令。在此情況下,其效果就是在此顯示器14上完成了由兩個(gè)三角形T1和T2組成的幾何實(shí)體10的顯示。
現(xiàn)在參照?qǐng)D2和圖3,敘述使用本發(fā)明的方法進(jìn)行輸出幾何模型。
當(dāng)使用本發(fā)明的方法安裝圖形數(shù)據(jù)輸出程序時(shí),在Widows系統(tǒng)目錄中存在的原DLL“opengl32.dll”12被重新命名為比如“opengl32bis.dll”,而且它被實(shí)施本發(fā)明方法而且與原來(lái)的,即“opengl32.dll”相同的方式命名的DLL15取代。按照本發(fā)明的此DLL15在OpenGL規(guī)范中具有與原DLL 12相同的功能,即對(duì)于同樣的名稱和同樣的參數(shù),它賦予和原DLL OpenGL 12相同的界面函數(shù)。
當(dāng)沒(méi)有顯示出的操作者2希望輸出由圖形應(yīng)用11建立和/或處理的幾何模型10的數(shù)據(jù)時(shí),預(yù)先使用了實(shí)施本發(fā)明方法以及如上所述的DLL。此時(shí)要顯示圖形應(yīng)用11希望的幾何模型10。與在前面所述的使用計(jì)算機(jī)系統(tǒng)1而不使用本發(fā)明方法的方式相同,當(dāng)圖形應(yīng)用希望在顯示器上顯示一個(gè)幾何模型時(shí),使用了位于Windows系統(tǒng)目錄中被命名為“opengl32.dll”的DLL15,即按照在此DLL15中包含的OpenGL規(guī)范調(diào)用函數(shù)和原程序。
考慮到此,在安裝按照本發(fā)明的輸出與幾何實(shí)體有關(guān)的數(shù)據(jù)的程序時(shí),用使用本發(fā)明的DLL15代替了DLL12,此時(shí)顯然圖形應(yīng)用調(diào)用使用本發(fā)明方法的DLL15中存在的函數(shù)和原程序代替在原DLL12中存在的函數(shù)和原程序。
在另一個(gè)實(shí)施方案中,可以通過(guò)在特定的應(yīng)用11目錄中只安裝DLL15來(lái)只安裝命名為DLL15的opengl32.dll以便用來(lái)應(yīng)用特定的幾何建?;蛱幚怼?shí)際上,當(dāng)Windows操作系統(tǒng)尋找被應(yīng)用11所指定的DLL15時(shí),它首先在應(yīng)用11存在的同一個(gè)目錄中尋找此DLL15。如果沒(méi)有找到,Windows操作系統(tǒng)隨后就在特別包括安裝Windows操作系統(tǒng)的系統(tǒng)目錄的系統(tǒng)1的預(yù)先確定的目錄中尋找此DLL15。
因此,當(dāng)使用本發(fā)明的方法并重新處理如上所述的例子時(shí),本發(fā)明的DLL15代替原來(lái)的DLL OpenGL12,調(diào)用用于后者的圖形函數(shù)。在本發(fā)明當(dāng)前的實(shí)施模式中,此時(shí)本發(fā)明的DLL15把調(diào)用接收的函數(shù)轉(zhuǎn)變?yōu)樵瓉?lái)的DLL12,即它調(diào)用具有與在來(lái)源于圖形應(yīng)用11的調(diào)用中接受的函數(shù)具有相同參數(shù)的DLL12的相應(yīng)函數(shù)。
結(jié)果,本發(fā)明的DLL15接收了如下函數(shù)的調(diào)用glBegin(GL_TRIANGLES_STRIP)glVertex3fv(0.000,10.000,0.000)glVertex3fv(0.000,10.000,-10.000)glVertex3fv(0.000,0.000,0.000)glVertex3fv(0.000,0.000,-10.000)glEnd()wglSwapBuffers()為了輸出與幾何實(shí)體有關(guān)的數(shù)據(jù),在按照本發(fā)明的DLL15中包含的程序?qū)⒁欢康呐c幾何實(shí)體有關(guān)的數(shù)據(jù)表存儲(chǔ)在其存儲(chǔ)器16中并進(jìn)行管理,這些表非限定地是比如點(diǎn)的“點(diǎn)”表和三角形的“三角形”表。在開始時(shí),這兩個(gè)表是空的,即點(diǎn)表的N Point元素?cái)?shù)和三角形表的NTriangle的元素?cái)?shù)都是0。
在步驟30開始DLL15的程序,這里把點(diǎn)的N Point數(shù)和三角形的N Triangle數(shù)都初始化為0,然后等待接收來(lái)自圖形應(yīng)用11的圖形指令。當(dāng)接收到指令glBegin(GL_TRIANGLES_STRIP)時(shí),本發(fā)明的方法就到達(dá)步驟31,在這里檢測(cè)指令GL_BEGIN的參數(shù)值是否是表示由其頂點(diǎn)定義三角形片的圖形指令串GL_TRIANGLES_STRIP的預(yù)定值。如果回答是否定的,本方法就轉(zhuǎn)向步驟30,這就是說(shuō)如果參數(shù)值是GL_TRIANGLES_STRIP,本方法就轉(zhuǎn)向步驟32,在此等待一個(gè)圖形指令。
當(dāng)接收到一個(gè)圖形指令時(shí),本發(fā)明的方法就在步驟33中檢測(cè)接收到的指令是否是指令glVertex3fv,在本實(shí)施例的情況下,回答是肯定的,當(dāng)接收了調(diào)用glVertex3fv(0.000,10.000,0.000)時(shí),本發(fā)明的方法就到達(dá)步驟34。在步驟34中,當(dāng)接收了N Point的單位點(diǎn)時(shí),即N Point由其初始值0變?yōu)?時(shí),就將DLL15中的程序增量。此時(shí)將接收的點(diǎn)存儲(chǔ)在點(diǎn)表中,即在步驟34中,在數(shù)值為0.000、10.000和0.000的情況下,總是分別將接收到的指令glVertex3fv的第一、第二和第三參數(shù)存儲(chǔ)在點(diǎn)表第一點(diǎn)的坐標(biāo)x、y和z的位置上。然后本發(fā)明的方法就到達(dá)步驟35。
在步驟35中,本發(fā)明的方法檢測(cè)接收的點(diǎn)的N Point是否小于3。如果回答是肯定的,本發(fā)明的方法將轉(zhuǎn)向步驟32,否則本發(fā)明的方法就到達(dá)步驟36。
當(dāng)在步驟33中時(shí)的回答是否定的時(shí),這意味著至少有三個(gè)點(diǎn)被前面的指令glVertex3fv傳遞。按照對(duì)于GL_TRIANGLES_STRIP三角形片的OpenGL規(guī)范,這表明確定了一個(gè)由接收的后三個(gè)點(diǎn)組成的三角形片。
因此隨后在步驟36中,使用本發(fā)明方法的程序DLL15增加由一個(gè)單位接收的三角形的數(shù),即增加由一個(gè)單位接收的三角形的N Triangle數(shù)。此時(shí)把構(gòu)成如此接收的三角形的點(diǎn)的號(hào)碼n1、n2和n3,即按照OpenGL規(guī)范的接收的后三個(gè)點(diǎn),存儲(chǔ)在三角形表的相應(yīng)位置上,即把接收的后三個(gè)點(diǎn)的號(hào)碼N Triangle-2、N Triangle-1和N Triangle存儲(chǔ)在三角形表的N Triangle號(hào)碼位置的n1、n2和n3位置上。
此時(shí),DLL15中的程序轉(zhuǎn)向步驟32,為的是在這里等待由圖形應(yīng)用11傳遞的三角形片的另一個(gè)可能的點(diǎn)。
本發(fā)明的方法反復(fù)進(jìn)行步驟32到步驟36,直至在步驟32中的回答是否定的為止。
在所述的實(shí)施例當(dāng)中,在經(jīng)過(guò)4個(gè)“glVertex3fv”指令有了4個(gè)點(diǎn)以后,DLL15不再接收另外的“glVertex3fv”指令,而是代之以接收指令“glEnd”。然后在步驟33中,回答是否定的,此時(shí)DLL15就到達(dá)步驟37。
在OpenGL規(guī)范當(dāng)中,在GL_TRIANGLES_STRIP三角形片的情況下,指令“glEnd”意味著由前面的指令“glBegin”開始的圖形指令結(jié)束。
在步驟37中,DLL15檢測(cè)接收到的后一個(gè)調(diào)用是否是調(diào)用函數(shù)“glEnd”。如果回答是否定的,在DLL15中包含的程序就轉(zhuǎn)向步驟32。當(dāng)在步驟37中檢測(cè)的回答是肯定時(shí),DLL15中的程序就到達(dá)步驟38。在所述的實(shí)施例當(dāng)中,當(dāng)圖形應(yīng)用11在4個(gè)“glVetrex3fv”指令以后送出指令“glEnd”時(shí)就是這樣。
在步驟38中,在本發(fā)明的DLL15中包含的程序等待來(lái)自圖形應(yīng)用11的指令,然后當(dāng)接到這樣的指令時(shí),就到達(dá)步驟39。
在步驟39中,DLL15程序檢測(cè)接收到的圖形指令是否是OpenGL指令“wglSwapBuffers”或“glFlush”。如果回答是否定的,即如果接收到的指令既非“wglSwapBuffers”也非“glFlush”,此時(shí)按照本發(fā)明方法的DLL程序就結(jié)束了。如果在步驟39中的回答是肯定的,此時(shí)DLL15程序就到達(dá)步驟40。
在所述的實(shí)施例當(dāng)中,在送出指令“glEnd”以后,圖形應(yīng)用11此時(shí)向程序DLL15送出指令“wglSwapBuffers”,但也可以使用指令“glFlush”。
如同前面在使用計(jì)算機(jī)系統(tǒng)1而不用本發(fā)明的方法時(shí)所指出的,這些指令促使完成圖形指令的轉(zhuǎn)變及其在顯示器14上的所謂適當(dāng)?shù)娘@示,因此這些指令暗含著包括前面轉(zhuǎn)移的指令形成協(xié)調(diào)一致的整體的意思,因?yàn)樗鼞?yīng)該顯示在顯示器14上而不用等待其他圖形指令。
然后,在本發(fā)明的實(shí)施模式中,使用這些指令來(lái)確定前面接收到的哪一個(gè)指令形成協(xié)調(diào)一致的整體以及在此時(shí)用來(lái)將其輸出到存儲(chǔ)單元18。
然后,當(dāng)在步驟39在檢測(cè)時(shí)的回答是肯定的時(shí)候,即當(dāng)接收到指令“wglSwapBuffers”或“glFlush”時(shí),前面被DLL15中的程序接收到的指令就形成協(xié)調(diào)一致的整體,而且此時(shí)使用本發(fā)明方法的DLL15中的程序到達(dá)步驟40,在這里,一個(gè)名為Raider 3D的模塊17將存儲(chǔ)在存儲(chǔ)器16中的點(diǎn)和三角形表輸出到存儲(chǔ)單元18。
在本發(fā)明的方法中,在其中存儲(chǔ)點(diǎn)和三角形表的存儲(chǔ)器16是在實(shí)施本發(fā)明方法的計(jì)算機(jī)中的一個(gè)共享存儲(chǔ)器,這意味著它可以被DLL15寫入,同時(shí)由Raider 3D模塊17讀出。
在本發(fā)明的第一個(gè)實(shí)施模式中,點(diǎn)和三角形表以簡(jiǎn)單的文本文件的形式輸出到單元18,其中點(diǎn)和三角形被寫入在存儲(chǔ)單元18中的同名文件中。
現(xiàn)在再參見圖4敘述按照本發(fā)明方法的第一種實(shí)施模式的模塊Raider 3D17的運(yùn)行情況。
在此第一種實(shí)施模式中,在步驟41中,模塊Raider 3D17在存儲(chǔ)單元18中生成并打開一個(gè)點(diǎn)輸出文件,在所述實(shí)施例中其名稱是“點(diǎn)”,它把在文件“點(diǎn)”中寫入的點(diǎn)i的值初始化為數(shù)值0,然后就到達(dá)步驟42。
在步驟42中,模塊Raider3D17檢測(cè)在文件“點(diǎn)”中寫入的點(diǎn)i的值是否小于在共享存儲(chǔ)器中存在的點(diǎn)N Point的數(shù)值。如果在步驟42的回答是肯定的,模塊Raider 3D17就到達(dá)步驟43。在步驟43中,模塊Raider 3D17將點(diǎn)i的值增加一個(gè)單位,然后在文件“點(diǎn)”中寫入點(diǎn)i的新值,然后在同一行寫入對(duì)應(yīng)i的點(diǎn)的三個(gè)坐標(biāo)x、y和z,此點(diǎn)是由存儲(chǔ)在共享存儲(chǔ)器16中的“點(diǎn)”表的輸入i復(fù)制的。此時(shí)模塊Raider 3D17到達(dá)文件“點(diǎn)”中的一行,然后轉(zhuǎn)向步驟42。
如果在步驟42的回答是否定的,模塊Raider 3D17就到達(dá)步驟44。在步驟44中,模塊Raider 3D17關(guān)閉文件“點(diǎn)”,然后它就到達(dá)步驟45。在步驟45中,模塊Raider 3D17在存儲(chǔ)單元上生成并打開一個(gè)三角形輸出文件,在所述的實(shí)施例中將其命名為“三角形”,然后將在文件“三角形”中寫入的三角形i的值初始化為0。此時(shí)就到達(dá)步驟46。
在步驟46中,模塊raider 3D17檢測(cè)在文件“三角形”中寫入的三角形i的值是否小于在共享存儲(chǔ)器中存在的三角形N Triangle的數(shù)值。如果在步驟46中的回答是肯定的,模塊Raider 3D17就到達(dá)步驟47。在步驟47中,模塊Raider 3D17將三角形i的值增加一個(gè)單位,然后在文件“三角形”中寫入當(dāng)前三角形的號(hào)碼i,而且在文件“三角形”的同一行由存儲(chǔ)在共享存儲(chǔ)器中的表“三角形”的三角形i的值再?gòu)?fù)制組成號(hào)碼i的三角形的三個(gè)點(diǎn)的號(hào)碼n1、n2和n3。此時(shí)模塊17返回到步驟46中。
如果在步驟46中的回答是否定的,模塊Raider就到達(dá)步驟48,在這里它關(guān)閉輸出文件“三角形”。
此時(shí)在前面的實(shí)施例中得到的文本文件“點(diǎn)”和“三角形”將是分別在下面表1和表2中存在的形式。
表11 0.000,10.000,0.0002 0.000,10.000,-10.0003 0.000,0.000,0.0004 0.000,0.000,-10.000表21 1,2,32 2,3,4此時(shí),按照本發(fā)明的第一個(gè)實(shí)施模式的與幾何實(shí)體有關(guān)的數(shù)據(jù)輸出方法被終止,而且如同所看到的,這將能夠輸出由圖形應(yīng)用11所建立和/或處理的幾何模型10,而無(wú)須知道此應(yīng)用的數(shù)據(jù)格式,對(duì)此應(yīng)用無(wú)須進(jìn)行任何改變,也沒(méi)有開發(fā)任何對(duì)此應(yīng)用11來(lái)說(shuō)是特殊的程序。
在本發(fā)明的第二個(gè)實(shí)施模式中,使用的輸出格式是AutoDesk公司的DXF格式(Data eXchange格式),這在輸出與幾何實(shí)體有關(guān)的數(shù)據(jù)方面是市場(chǎng)參考格式。
DXF格式是一種按照逐行信息的文本格式。這些行被逐對(duì)分組,第一行的對(duì)包含指出出現(xiàn)在下一行數(shù)據(jù)類型的實(shí)體數(shù)字?jǐn)?shù)據(jù)。比如,當(dāng)數(shù)字?jǐn)?shù)據(jù)的類型是在0~9之間的實(shí)數(shù)時(shí),在下一行出現(xiàn)的數(shù)據(jù)將是字符串,而當(dāng)數(shù)字?jǐn)?shù)據(jù)的類型是10~59之間的實(shí)數(shù)時(shí),在下一行出現(xiàn)的數(shù)據(jù)將是兩倍精確度浮點(diǎn)型的三維點(diǎn)的坐標(biāo)。
另外,DXF文件被組織為節(jié)。節(jié)被引入一對(duì)行,行由引入字符串的數(shù)字0構(gòu)成,行由關(guān)鍵詞SECTION構(gòu)成,它們由一對(duì)行終止,其中第一行由數(shù)字0構(gòu)成,第二行由關(guān)鍵詞ENDSEC組成。
DXF文件包括一定量不同類型的節(jié),特別是描述幾何類實(shí)體的ENTITIES節(jié),以及一定量的其他節(jié),比如定義參數(shù)或分類的節(jié),它們都來(lái)源于本發(fā)明的范圍。
ENTITIES節(jié)由幾何模型的各種幾何實(shí)體構(gòu)成,每個(gè)實(shí)體都被指出實(shí)體類型的字符串引進(jìn),然后是定義相關(guān)實(shí)體所必需的參數(shù)。
比如,在空間定義一個(gè)面被一對(duì)行引入,其中第一行由引入字符串的數(shù)字0組成,然后是由關(guān)鍵詞3DFACE組成的一行。
在空間中的一個(gè)面由分別構(gòu)成三角形或四邊形的三個(gè)或四個(gè)點(diǎn)構(gòu)成,在用于指示時(shí),第四個(gè)點(diǎn)被規(guī)定為與第三個(gè)點(diǎn)是一樣的,習(xí)慣上更愿意是三角形而不是四邊形。面的四個(gè)點(diǎn)中的每一個(gè)都被三個(gè)坐標(biāo)x、y和z定義,如在前面所指出的,坐標(biāo)中的每一個(gè)都被一對(duì)行所定義,其中第一行是10~59的指示實(shí)數(shù),第二行是適當(dāng)?shù)乃^坐標(biāo)。
在DXF格式規(guī)范中,此面第一個(gè)點(diǎn)坐標(biāo)x1、y1和z1使用的指示符分別是10、20和30,對(duì)于此面的第二點(diǎn)的坐標(biāo)x2、y2和z2的指示符分別是11、21和31,對(duì)于此面的第三點(diǎn)的坐標(biāo)x3、Y3和z3的指示符分別是12、22和32,而對(duì)于此面的第四點(diǎn)的坐標(biāo)x4、y4和z4的指示符分別是13、23和33。
在另一方面,對(duì)于一個(gè)號(hào)碼為j的點(diǎn),對(duì)于j由1~4變化的面點(diǎn)j的坐標(biāo)x的數(shù)字指示符是9+j,點(diǎn)j的坐標(biāo)y的數(shù)字指示符是19+j,點(diǎn)j的坐標(biāo)z的數(shù)字指示符是29+j。
更準(zhǔn)確說(shuō),現(xiàn)在參照?qǐng)D5,按照本發(fā)明的第二個(gè)實(shí)施模式的模塊Raider 3D17在步驟51中生成并打開一個(gè)輸出文件,在所述實(shí)施例中其文件名為“DXF”,然后就到達(dá)步驟52。在步驟52中模塊Raider 3D17以DXF格式在文件的開頭寫入幾行,即如下4行0SECTION2ENTITIES然后將在文件“DXF”中寫入的面的數(shù)值i初始化為0。此時(shí)模塊Raider 3D17到達(dá)步驟53。在步驟53中,模塊Raider 3D17檢測(cè)寫入的面的數(shù)值i是否小于在共享存儲(chǔ)器中存儲(chǔ)的三角形N Triangl的數(shù)值。
如果在步驟53的回答是肯定的,即如果前面在文件DXF中寫入的三角形的數(shù)i小于在共享存儲(chǔ)器16在存儲(chǔ)的三角形N Triangl的數(shù),此時(shí)模塊Raider 3D17就到達(dá)步驟54。在步驟54中,模塊Raider 3D17使前面在文件中寫入的三角形的數(shù)i增加一個(gè)單位,然后在用于面的文件DXF中從上端寫入幾行,即下面兩行03DFACE另外,在步驟54中,模塊Raider 3D17總是把在文件“DXF”中寫入的三角形i的點(diǎn)j初始化為0,然后就到達(dá)步驟55。在步驟55中,模塊Raider 3D17檢測(cè)在文件“DXF”中寫入的三角形i的點(diǎn)j是否小于3。如果回答是肯定的,模塊Raider 3D17就轉(zhuǎn)向步驟56。
在步驟56中,模塊Raider 3D17使在文件“DXF”中寫入的三角形i的點(diǎn)j增加一個(gè)單位,并將號(hào)碼n計(jì)算為等于三角形nj,即n應(yīng)該等于三角形i的點(diǎn)j的號(hào)碼nj。然后接著在第一行以DXF格式上寫入對(duì)于此面的點(diǎn)j的坐標(biāo)x的指示符,即數(shù)值9+j,然后對(duì)于前面計(jì)算出號(hào)碼n的點(diǎn),在第二行上寫入坐標(biāo)x本身。
同樣,總是在步驟56中,總是對(duì)于號(hào)碼為n的點(diǎn),模塊Raider 3D17分別在第三行寫入指示符19+j,在第四行寫入其坐標(biāo),然后在第5行寫入指示符29+j,在第6行寫入坐標(biāo)z。此時(shí)模塊Raider 3D就轉(zhuǎn)向步驟55。
反復(fù)進(jìn)行步驟55和56的方法,直至在步驟55中的回答變成否定,這就是說(shuō),在文件“DXF”中寫入的三角形的點(diǎn)j等于3。在這個(gè)操作點(diǎn)上,模塊Raider 3D17將寫入三角形i的三個(gè)點(diǎn)。
因此當(dāng)i的值是1,即對(duì)于第一個(gè)三角形時(shí),對(duì)于三角形1的點(diǎn)n1=1,模塊Raider 3D17將在文件“DXF”中相繼寫入下面各行100.02010.0300.0然后對(duì)于三角形1的點(diǎn)n2=2,寫入下面各行110.02110.031-10.0然后對(duì)于三角形1的點(diǎn)n3=3,寫入下面各行12
0.0220.0320.0當(dāng)在步驟55中在文件“DXF”中寫入的點(diǎn)j等于3時(shí),模塊Raider3D17就到達(dá)步驟57。在步驟57的開頭,模塊Raider 3D將在文件“DXF”中以在上面所指出的形式寫入三角形i的三個(gè)點(diǎn)。然而,對(duì)于一個(gè)面,DXF規(guī)范需要4個(gè)點(diǎn),如在前面所述,號(hào)碼是n3的第三個(gè)點(diǎn)是重復(fù)的,按照DXF的習(xí)慣,這意味著所描述的這個(gè)面是個(gè)三角形。
為此,在步驟57中,模塊Raider 3D17在文件的第一行中寫入該面第四點(diǎn)的坐標(biāo)x,即13指示符。同樣,在第3行寫入坐標(biāo)y,即23的指示符,在第4行寫入坐標(biāo)y,在第5行寫入坐標(biāo)z,即33的指示符,在第6行寫入坐標(biāo)z。
在i的數(shù)值是1的情況下,即對(duì)于第一個(gè)三角形,根據(jù)在步驟57中的表現(xiàn),模塊Raider 3D17在文件“DXF”中寫入如下幾行130.0230.0330.0這重復(fù)了當(dāng)前面的前一個(gè)點(diǎn),即第一個(gè)三角形的第三個(gè)點(diǎn)的坐標(biāo)。
在步驟57的出口處,模塊Raider 3D17轉(zhuǎn)向步驟54,使用上面對(duì)于第一個(gè)三角形所述的同樣方法,以輸出下一個(gè)三角形,直至在步驟54中的回答是肯定的。
當(dāng)在步驟54中的回答是肯定時(shí),即存儲(chǔ)在共享存儲(chǔ)器16中的前一個(gè)三角形完全被寫入文件“DXF”中,模塊Raider 3D17就到達(dá)步驟58。在步驟58中,模塊Raider 3D17寫入一節(jié)的最后兩行,即如下的兩行0ENDSEC
然后是將輸出文件的結(jié)尾引入到DXF格式的兩行,即0EOF然后,總是在步驟58中,模塊Raider 3D17關(guān)閉了文件“DXF”,此時(shí)它將是在如下表3中存在的形式。
表30SECTION0ENTITIES03DFACE100.0200.0300.0110.02110.031-10.0120.0220.0320.0130.0230.0
330.003DFACE100.0200.030-10.0110.0210.0310.0120.0220.032-10.01323230.033-10.00ENDSEC0EOF此時(shí),按照本發(fā)明第二個(gè)實(shí)施模式的與幾何型實(shí)體有關(guān)的數(shù)據(jù)輸出方法就結(jié)束了,正如所看到的,這將能夠輸出由圖形應(yīng)用11建立和/或處理的幾何模型10,而無(wú)須知道此應(yīng)用的數(shù)據(jù)格式,無(wú)須對(duì)此應(yīng)用11做任何改變,也無(wú)須開發(fā)對(duì)此應(yīng)用11的特殊的程序。
當(dāng)然,本發(fā)明的方法并不限于截取和輸出如上所述的點(diǎn)和三角形的圖形函數(shù)。特別是在前面所述的實(shí)施例中,用于產(chǎn)生點(diǎn)的函數(shù)是函數(shù)glVetrex3fv,但是對(duì)于在該技術(shù)中的技術(shù)人員來(lái)說(shuō),前面的敘述顯然適合于各種glVetrex指令集合。
另外,由前面的敘述完全應(yīng)該清楚,本發(fā)明的方法能夠輸出所需的各種OpenGL函數(shù),非限定性地比如定義四邊形的函數(shù)、定義表面取向信息,比如在點(diǎn)上正交的函數(shù)、定義顏色、表面組織、透明度信息的函數(shù)。
另外,本方法不限于輸出如在所述實(shí)施例中那樣簡(jiǎn)單的幾何結(jié)構(gòu)的輸出,對(duì)于先有技術(shù)的專業(yè)人員來(lái)說(shuō),顯然本發(fā)明的方法能夠輸出任何幾何模型,因?yàn)楦鞣N模型結(jié)構(gòu),無(wú)論如何復(fù)雜,都將借助于點(diǎn)、三角形、四邊形等的原程序來(lái)顯示,因此使用如上所述的方法可將它們輸出。
同樣,顯然出于簡(jiǎn)化敘述的原因,假設(shè)所有使用的幾何結(jié)構(gòu),特別是點(diǎn),都是清晰的,因此用不著試圖以任何方式將使用的表拆分或簡(jiǎn)化。實(shí)際上,無(wú)論是通過(guò)程序DLL15在點(diǎn)表和三角形表中記錄時(shí),還是在通過(guò)模塊Raider 3D17輸出到存儲(chǔ)單元18中的時(shí)候,顯然可通過(guò)適當(dāng)?shù)姆椒▌h除重復(fù)的元素。
另外,本方法不限于敘述的使用OpenGL圖形庫(kù)的實(shí)施模式,對(duì)于本技術(shù)領(lǐng)域的專業(yè)人員來(lái)說(shuō),顯然如上所述的方法也是可以應(yīng)用于各種其他的能夠用于建模或幾何建模10的應(yīng)用的顯示函數(shù)庫(kù)12,以非限定性的方式比如Microsoft的DirectX顯示庫(kù)。
另外,本發(fā)明的方法僅通過(guò)在希望的應(yīng)用目錄11中安裝使用本發(fā)明方法的DLL15,而非在Windows操作系統(tǒng)目錄中,只能用于所需的特定應(yīng)用11,而非用于在建模和/或處理系統(tǒng)1中存在的整體圖形應(yīng)用。
因此按照前面的敘述可以看出,本發(fā)明的方法能夠由應(yīng)用11模型化的實(shí)施例10的幾何信息,無(wú)須開發(fā)對(duì)此應(yīng)用11是特定的程序,無(wú)須知道后者使用的數(shù)據(jù)格式,只須截取此應(yīng)用11用來(lái)顯示其幾何模型10的圖形函數(shù)和圖形原程序。
考慮到此,為了把輸出的與幾何實(shí)體有關(guān)的數(shù)據(jù)存儲(chǔ)在存儲(chǔ)單元18中使用的數(shù)據(jù)格式將是一種已知和開放的格式,比如在第一種實(shí)施模式中存在的格式,或者是市場(chǎng)的標(biāo)準(zhǔn)格式,比如DXF格式,或者是特殊應(yīng)用所需的其他格式,將很容易把這些數(shù)據(jù)輸出到各種其他的所需幾何建?;蛱幚硐到y(tǒng)中。
因此,本發(fā)明的方法可應(yīng)用于各個(gè)領(lǐng)域中,特別是應(yīng)用在各種需要在不同系統(tǒng)之間交換與幾何實(shí)體有關(guān)的數(shù)據(jù)的領(lǐng)域中,比如在使用與幾何實(shí)體有關(guān)的數(shù)據(jù)的各種產(chǎn)業(yè)和服務(wù)業(yè)中所遇到的問(wèn)題,比如小汽車或飛行器制造、工業(yè)設(shè)計(jì)、建筑物設(shè)計(jì)和/或建筑學(xué)等產(chǎn)業(yè)和服務(wù)業(yè)、視頻游戲等領(lǐng)域。
權(quán)利要求
1.輸出與用計(jì)算機(jī)系統(tǒng)(1)建模和/或處理幾何實(shí)體(10)有關(guān)的數(shù)據(jù)的方法,包括至少一個(gè)能夠執(zhí)行計(jì)算機(jī)程序(11、12、15)的中央處理單元、一個(gè)在執(zhí)行所述計(jì)算機(jī)程序(11、12、15)的過(guò)程中能夠存儲(chǔ)所述計(jì)算機(jī)程序(11、12、15)和與幾何實(shí)體有關(guān)的數(shù)據(jù)的存儲(chǔ)器(16)和至少一個(gè)永久存儲(chǔ)與幾何實(shí)體有關(guān)的數(shù)據(jù)的存儲(chǔ)單元(18),所述計(jì)算機(jī)系統(tǒng)(1)包括至少一個(gè)建模和/或處理程序和至少一個(gè)與幾何實(shí)體有關(guān)的數(shù)據(jù)的顯示程序,所述至少一個(gè)建模和/和處理程序(11)通過(guò)調(diào)用位于所述至少一個(gè)顯示程序(12)中的顯示函數(shù)將待顯示的與幾何實(shí)體有關(guān)的數(shù)據(jù)傳遞到所述至少一個(gè)顯示程序(12)中,所述待被所述顯示程序(12)顯示的數(shù)據(jù),以被所述至少一個(gè)幾何實(shí)體(10)的建模和/或處理程序(11)調(diào)用的所述顯示函數(shù)參數(shù)的形式,被所述至少一個(gè)建模和/或處理程序(11)傳遞到所述至少一個(gè)顯示程序中,所述顯示函數(shù)能夠顯示一定量的與幾何實(shí)體(10)有關(guān)的數(shù)據(jù),其特征在于,與幾何實(shí)體(10)有關(guān)的數(shù)據(jù)的輸出程序(15)被代入到所述至少一個(gè)顯示程序(12)中,所述輸出程序(15)具有與所述至少一個(gè)顯示程序(12)相同的與幾何實(shí)體(10)有關(guān)數(shù)據(jù)的顯示函數(shù),所述輸出程序(15)的與幾何實(shí)體有關(guān)數(shù)據(jù)的所述顯示函數(shù)具有與所述至少一個(gè)顯示程序(12)的相應(yīng)函數(shù)相同的參數(shù),所述至少一個(gè)幾何實(shí)體建模和/或處理程序(11)以明顯的方式調(diào)用所述輸出程序(15)的函數(shù)以代入所述至少一個(gè)顯示程序(12)的相應(yīng)的函數(shù)。
2.如權(quán)利要求1的方法,其中所述至少一個(gè)建模和/或處理程序(11)是計(jì)算機(jī)輔助設(shè)計(jì)類程序,即CAD類程序。
3.如權(quán)利要求1或2的方法,其中所述至少一個(gè)建模和/或處理程序(11)是視頻游戲類的程序。
4.如前面的權(quán)利要求中任何一項(xiàng)的方法,其中當(dāng)所述至少一個(gè)建模和/或處理程序(11)調(diào)用所述輸出程序(15)的一個(gè)所述顯示函數(shù)時(shí),所述輸出程序(15)以適當(dāng)?shù)母袷綄?shù)據(jù)存儲(chǔ)在所述至少一個(gè)存儲(chǔ)單元(18)中,該數(shù)據(jù)來(lái)源于由所述輸出程序(15)把所述至少一個(gè)建模和/或處理程序(11)調(diào)用到所述輸出程序(15)的所述顯示函數(shù)中的處理。
5.如前面的權(quán)利要求中任何一項(xiàng)的方法,其中當(dāng)所述至少一個(gè)建模和/或處理程序(11)調(diào)用所述輸出程序(15)的一個(gè)所述顯示函數(shù)時(shí),所述輸出程序(15)調(diào)用所述顯示程序(12)的顯示函數(shù),該顯示函數(shù)相對(duì)于所述輸出程序(15)調(diào)用的顯示函數(shù)其調(diào)用參數(shù)與與所述輸出程序(15)的函數(shù)調(diào)用的當(dāng)前參數(shù)是相同的。
6.如權(quán)利要求5的方法,其中所述被調(diào)用的顯示程序是其中所述輸出程序被代入了的所述顯示程序(12)。
7.如權(quán)利要求5的方法,其中所述被調(diào)用的顯示程序是與其中所述輸出程序被代入了的顯示程序不同的顯示程序(12)。
8.如前面的權(quán)利要求中任何一項(xiàng)的方法,其中所述計(jì)算機(jī)系統(tǒng)(1)還包括至少一個(gè)圖形顯示裝置(13),所述至少一個(gè)顯示裝置(13)包括至少一個(gè)圖像刷新和/或顯示存儲(chǔ)器,所述顯示程序(12)向所述至少一個(gè)顯示裝置(13)發(fā)出指令,使由所述顯示程序接收的顯示函數(shù)的所述調(diào)用以點(diǎn)的形式數(shù)值化,所述顯示裝置(13)把所述點(diǎn)存儲(chǔ)在所述圖像刷新和/或顯示存儲(chǔ)器中,此點(diǎn)來(lái)源于對(duì)所述至少一個(gè)顯示程序(12)接收的顯示函數(shù)調(diào)用進(jìn)行的所述數(shù)值化。
9.如權(quán)利要求8的方法,其中所述計(jì)算機(jī)系統(tǒng)(1)還包括至少一個(gè)圖形顯示器(14),而且其中所述圖像刷新和/或顯示存儲(chǔ)器被所述至少一個(gè)顯示裝置(13)讀出,所述至少一個(gè)顯示裝置(13)在所述至少一個(gè)圖形顯示器(14)上顯示從所述圖像刷新和/或顯示存儲(chǔ)器中重新讀出的所述點(diǎn)。
10.如權(quán)利要求8或9的方法,其中被所述輸出程序(15)進(jìn)行的數(shù)據(jù)輸出被至少一個(gè)被所述至少一個(gè)建模和/或處理程序(11)傳遞到所述輸出程序(15)中的特定圖形指令所啟動(dòng)。
11.如權(quán)利要求10的方法,其中啟動(dòng)所述數(shù)據(jù)輸出的所述至少一個(gè)特定的圖形指令是促使完成所述調(diào)用在所述圖像刷新和/或顯示存儲(chǔ)器中的所述點(diǎn)接收的圖形函數(shù)的所述數(shù)值化的指令。
12.如權(quán)利要求10或11的方法,其中所述至少一個(gè)顯示裝置(13)包括至少兩個(gè)圖像刷新和/或顯示存儲(chǔ)器,而且其中所述促使所述輸出的指令是促使將所述至少兩個(gè)圖像刷新和/或顯示存儲(chǔ)器中的一個(gè)切換到所述至少兩個(gè)圖像刷新和/或顯示存儲(chǔ)器中的另一個(gè)的指令。
13.如前面的權(quán)利要求中任何一項(xiàng)的方法,其中當(dāng)將所述建模和/或處理程序(11)調(diào)用所述輸出程序(15)的所述輸出函數(shù)時(shí),所述輸出程序(15)以適當(dāng)?shù)母袷綄?lái)源于由所述輸出程序(15)進(jìn)行的調(diào)用到所述輸出程序(15)的顯示函數(shù)的處理所得到的數(shù)據(jù)存儲(chǔ)在所述存儲(chǔ)器(16)中。
14.如權(quán)利要求13的方法,其中所述計(jì)算機(jī)系統(tǒng)(1)還通過(guò)在所述存儲(chǔ)器(16)中重新讀出來(lái)源于所述由所述輸出程序(15)進(jìn)行的處理得到的數(shù)據(jù)來(lái)執(zhí)行實(shí)用程序(17)。
15.如權(quán)利要求14的方法,其中讀出所述存儲(chǔ)器(16)的所述實(shí)用程序(17)以適當(dāng)?shù)母袷綄?lái)源于由所述從所述存儲(chǔ)器(16)中重新讀出的所述輸出程序進(jìn)行的處理所得到的所述數(shù)據(jù)存儲(chǔ)在所述至少一個(gè)存儲(chǔ)單元(18)中。
16.如權(quán)利要求14或15的方法,其中所述實(shí)用程序(17)借助于適當(dāng)?shù)膶?duì)所述至少一個(gè)顯示程序(12)的顯示函數(shù)進(jìn)行的調(diào)用來(lái)顯示從所述存儲(chǔ)器(16)中重新讀出的數(shù)據(jù)。
17.如前面的權(quán)利要求中任何一項(xiàng)的方法,其中被代入所述輸出程序(15)的至少一個(gè)所述顯示程序(12)符合Silicon Graphics公司的OpenGL規(guī)范。
18.如權(quán)利要求17的方法,其中促使所述輸出的所述至少一個(gè)指令是OpenGL指令“wglSwapBuffers”和/或OpenGL指令“glFlush”。
19.如權(quán)利要求1~16中任何一項(xiàng)的方法,其中被代入所述輸出程序(15)的至少一個(gè)顯示程序(12)符合Microsoft公司的DirectX規(guī)范。
20.如前面的權(quán)利要求中任何一項(xiàng)的方法,其中所述與幾何實(shí)體有關(guān)的數(shù)據(jù)包括幾何數(shù)據(jù)。
21.如權(quán)利要求20的方法,其中所述幾何數(shù)據(jù)是二維型和/或三維型的。
22.如權(quán)利要求20或21中之一的方法,其中所述幾何數(shù)據(jù)包括點(diǎn)數(shù)據(jù)和/或具有兩個(gè)點(diǎn)的線段數(shù)據(jù)和/或涉及三角形的數(shù)據(jù)和/或涉及四邊形的數(shù)據(jù)和/或涉及多邊形的數(shù)據(jù)。
23.如權(quán)利要求20~22中之一的方法,其中所述幾何數(shù)據(jù)與線形和/或面形和/或體形幾何實(shí)體有關(guān)。
24.如權(quán)利要求23的方法,其中與幾何實(shí)體有關(guān)的數(shù)據(jù)還包括與至少一個(gè)與至少一個(gè)所述線形和/或面形和/或體形實(shí)體正交的向量有關(guān)的幾何數(shù)據(jù)。
25.如前面的權(quán)利要求中任何一項(xiàng)的方法,其中所述與幾何實(shí)體有關(guān)的數(shù)據(jù)包括顏色數(shù)據(jù)和/或結(jié)構(gòu)數(shù)據(jù)。
26.輸出與用計(jì)算機(jī)系統(tǒng)(1)建模和/或處理幾何實(shí)體(10)有關(guān)的數(shù)據(jù)的系統(tǒng),所述用于建模和/或處理幾何實(shí)體(10)的計(jì)算機(jī)系統(tǒng)(1)包括至少一個(gè)能夠執(zhí)行計(jì)算機(jī)程序(11、12、15)的中央處理單元、一個(gè)在執(zhí)行所述計(jì)算機(jī)程序(11、12、15)的過(guò)程中能夠存儲(chǔ)所述計(jì)算機(jī)程序(11、12、15)和與幾何實(shí)體有關(guān)數(shù)據(jù)的存儲(chǔ)器(16)和至少一個(gè)能夠永久存儲(chǔ)與幾何實(shí)體有關(guān)的數(shù)據(jù)的存儲(chǔ)單元(18),所述計(jì)算機(jī)系統(tǒng)(1)包括至少一個(gè)幾何實(shí)體(10)的建模和/或處理程序(11)和至少一個(gè)與幾何實(shí)體有關(guān)的數(shù)據(jù)的顯示程序(12),所述至少一個(gè)建模和/或處理程序(11)通過(guò)調(diào)用位于至少一個(gè)所述顯示程序中的顯示函數(shù),將待顯示的與幾何實(shí)體(10)有關(guān)的數(shù)據(jù)傳遞到所述至少一個(gè)顯示程序(12)中,所述待由所述顯示程序(12)顯示的數(shù)據(jù),以被所述至少一個(gè)幾何實(shí)體(10)建模和/或處理程序(11)調(diào)用的所述顯示函數(shù)的參數(shù)的形式被所述至少一個(gè)建模和/或處理程序(11)傳遞到所述至少一個(gè)顯示程序(12)中,所述顯示函數(shù)能夠顯示一定量的與幾何實(shí)體有關(guān)的數(shù)據(jù),其特征在于,該系統(tǒng)使用如前面各項(xiàng)權(quán)利要求中任何一項(xiàng)的方法。
全文摘要
本發(fā)明涉及輸出與用計(jì)算機(jī)系統(tǒng)(1)建模和/或處理的二維或三維幾何實(shí)體(10)有關(guān)的數(shù)據(jù)的方法,所述計(jì)算機(jī)系統(tǒng)(1)包括至少一個(gè)建模和/或處理程序(11)和至少一個(gè)顯示程序(12),所述至少一個(gè)建模和/或處理程序(11)通過(guò)調(diào)用位于所述至少一個(gè)顯示程序(12)中的函數(shù),將待顯示的與幾何實(shí)體(10)有關(guān)的數(shù)據(jù)傳遞到至少一個(gè)顯示程序(12)中,其特征在于,與幾何實(shí)體(10)有關(guān)的數(shù)據(jù)的輸出程序(15)被代入到至少一個(gè)所述顯示程序(12)中,所述輸出程序(15)具有與所述至少一個(gè)顯示程序(12)相同的顯示函數(shù)。
文檔編號(hào)G06T17/00GK101042776SQ20071009631
公開日2007年9月26日 申請(qǐng)日期2001年7月4日 優(yōu)先權(quán)日2001年7月4日
發(fā)明者馬思尼 F·李 申請(qǐng)人:Okyz公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1