版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
多屏同時三維(3D)顯示技術研究技術報告目錄1 項目背景 錯誤!未定義書簽。2 項目研究內(nèi)容 12.1 3D顯示數(shù)據(jù)模型的選型研究 12.2 適合實現(xiàn)多屏幕3D顯示的軟件開發(fā)平臺和開發(fā)工具的選型 12.3 在單計算機上實現(xiàn)多屏幕3D控制的軟件實現(xiàn)辦法 12.4 多機多屏幕3D顯示通信合同和多點交互控制方略設計 13 技術路線 23.1 設計原則 23.2 技術路線 33.2.1 3D顯示數(shù)據(jù)模型的擬定 33.2.2 軟件開發(fā)平臺和開發(fā)工具的擬定 33.2.3 單機多顯系統(tǒng)硬件實現(xiàn)辦法 43.2.4 單機多顯系統(tǒng)硬件檢測實現(xiàn)辦法 43.2.5 OpenGL顯示實現(xiàn)辦法 43.2.6 單機多顯系統(tǒng)OpenGL多顯示屏顯示實現(xiàn)辦法 53.2.7 OpenGL控制實現(xiàn)3D對象平移的辦法 63.2.8 OpenGL控制實現(xiàn)3D旋轉的辦法 63.2.9 單機多顯系統(tǒng)同時控制實現(xiàn)辦法 63.2.10 單機多顯系統(tǒng)鳥瞰導游實現(xiàn)辦法 73.2.11 3DS文獻轉換實現(xiàn)辦法 83.2.12 多機多顯系統(tǒng)通信合同實現(xiàn)辦法 103.2.13 多機多顯系統(tǒng)同時控制實現(xiàn)辦法 183.2.14 多機多顯系統(tǒng)數(shù)據(jù)更新實現(xiàn)辦法 244 系統(tǒng)環(huán)境 274.1 系統(tǒng)硬件環(huán)境 274.1.1 單機多顯系統(tǒng)硬件環(huán)境 274.1.2 多機多顯系統(tǒng)硬件環(huán)境 284.2 系統(tǒng)軟件環(huán)境 285 系統(tǒng)功效設計 285.1 單計算機對多顯示屏的同時控制功效 285.2 單機多顯系統(tǒng)3D瀏覽和控制功效 295.2.1 任意方向旋轉功效 295.2.2 平移功效 295.2.3 顯示比例自動調(diào)節(jié)功效 295.2.4 放大和縮小功效 295.2.5 視角設立功效 305.2.6 背景顏色設立功效 305.2.7 繪制模式切換功效 305.2.8 鳥瞰導游功效 305.2.9 自動演示和測試功效 315.3 多機多顯系統(tǒng)3D瀏覽和控制功效 315.3.1 多計算機信息顯示功效 315.3.2 多計算機協(xié)同工作功效 315.3.3 任意方向旋轉功效 325.3.4 平移功效 325.3.5 顯示比例自動調(diào)節(jié)功效 325.3.6 放大和縮小功效 325.3.7 視角設立功效 335.3.8 背景顏色設立功效 335.3.9 繪制模式切換功效 335.3.10 其它計算機窗口顯示和控制功效 335.3.11 3D數(shù)據(jù)自動同時功效 346 總結 錯誤!未定義書簽。7 術語解釋 348 參考資料 錯誤!未定義書簽。項目研究內(nèi)容3D顯示數(shù)據(jù)模型的選型研究重要研究被顯示對象的數(shù)據(jù)表達辦法。3D模型選型方面,既要考慮到軟件實現(xiàn)的容易性和可靠性,還要考慮顯示解決的實時性。特別在網(wǎng)絡環(huán)境下,3D數(shù)據(jù)模型的選擇將直接影響到數(shù)據(jù)更新和同時顯示的性能。適合實現(xiàn)多屏幕3D顯示的軟件開發(fā)平臺和開發(fā)工具的選型本研究項目涉及單機和網(wǎng)絡兩種硬件平臺。單機硬件平臺中,重要研究多顯示適配器的選型和控制辦法,要考慮和所選用的軟件運行平臺及開發(fā)工具的兼容性;網(wǎng)絡硬件平臺則選用較普遍的運行TCP/IP合同的網(wǎng)絡。軟件技術研究方面,涉及操作系統(tǒng)的選擇,軟件開發(fā)平臺和開發(fā)工具的選擇。這些選擇必須適合3D顯示的編程和控制算法的實現(xiàn)。在單計算機上實現(xiàn)多屏幕3D控制的軟件實現(xiàn)辦法重要研究如何實現(xiàn)單計算機對多屏幕的控制辦法,涉及硬件方案和軟件控制辦法。為了達成高層次3D多屏顯示的目的,所選的硬件方案必須能夠實現(xiàn)不同屏幕的不同控制。軟件控制算法的研究要能夠實現(xiàn)對多顯示適配器的靈活控制,并能實現(xiàn)不同顯示之間的協(xié)調(diào)解決。多機多屏幕3D顯示通信合同和多點交互控制方略設計重要研究如何實現(xiàn)網(wǎng)絡上的計算機間同時協(xié)調(diào)顯示的控制方略和軟件控制算法。本部分的研究涉及通信合同的設計和多點交互控制方略的設計。軟件控制算法要在考慮到與所運行的網(wǎng)絡平臺兼容的基礎上,更多地考慮軟件的通用性、易用性和可移植性,應充足運用單機多屏顯示軟件的研究成果,避免重復研究。技術路線設計原則3D顯示數(shù)據(jù)模型的選型設計原則所選用的3D顯示數(shù)據(jù)模型必須含有普遍性和易操作性。普遍性是指能夠代表多數(shù)3D軟件所采用的模型,這樣,所研制系統(tǒng)的合用范疇大,含有較高的應用價值;易操作性是指易于進行顯示解決,且能夠實現(xiàn)靈活的瀏覽操作。多屏幕3D顯示的軟件開發(fā)平臺和開發(fā)工具的選型原則軟件開發(fā)(運行)平臺要選擇兼容性好,功效和性能滿足3D實時瀏覽需求,且含有較廣泛的開發(fā)和應用軟件的平臺。開發(fā)工具的選擇要和所選擇的3D數(shù)據(jù)模型含有較好的共容性,既能方便地使用和操作3D數(shù)據(jù)模型,又能實現(xiàn)項目所需要的功效并達成項目預定的性能。單計算機實現(xiàn)多屏幕3D控制的硬件設計原則單計算機實現(xiàn)多屏幕3D控制的硬件選擇要含有普遍性,盡量避免應用面小的專用設備和配件,除了達成項目功效和性能規(guī)定外,還必須預留一定的余量,方便應對不可預見的性能問題。所選的硬件還要考慮其兼容性、可擴展性和性價比,應當選用品有發(fā)展前景和更新?lián)Q代可能性的系列通用硬件產(chǎn)品。單計算機實現(xiàn)多屏幕3D控制的軟件設計原則單計算機多屏幕3D控制軟件的設計應含有通用性,應避免對特定硬件含有依賴性的特殊軟件開發(fā)和設計技術的使用。應避免底層軟件的開發(fā),盡量使用易于移植、易于擴展的高層軟件設計技術。多機多屏幕3D顯示通信合同設計原則通信合同的設計要滿足項目對可靠性和實時性的規(guī)定。通信合同要基于成熟可靠的網(wǎng)絡合同,所選用的網(wǎng)絡合同必須確保數(shù)據(jù)通信能夠可靠且實時地進行。合同數(shù)據(jù)本身應盡量短小靈活且含有較好的擴展性,短小靈活的合同利于進行快速傳輸,良好的擴展性利于進行系統(tǒng)功效的擴充和應對不可預見的性能問題。多機多屏幕3D顯示多點交互控制方略設計原則多機多屏幕3D顯示系統(tǒng)的特點是多計算機系統(tǒng)和多顧客操作,多計算機協(xié)同解決和和諧的顧客操作界面及良好的操作體驗是系統(tǒng)設計的目的。要達成系統(tǒng)的設計目的,所設計的交互控制方略首先必須避免多計算機的控制沖突,另一方面是實現(xiàn)顧客的和諧操作界面和良好的操作體驗。最后,所設計的控制方略還要含有較好的容錯特性并實現(xiàn)系統(tǒng)的易用性和易維護性。技術路線3D顯示數(shù)據(jù)模型的擬定本項目最后擬定的3D顯示數(shù)據(jù)模型方案是以OpenGL模型為基礎,3DS文獻為數(shù)據(jù)輸入格式的方案。OpenGL是三維圖形技術的基礎,許多專業(yè)的3D軟件,如AutoCAD和3DMax等都是以OpenGL為基礎的。OpenGL是現(xiàn)在較為完善的三維圖形原則,它是一種與硬件無關的接口,獨立于窗口系統(tǒng)、操作系統(tǒng)和硬件系統(tǒng),能夠應用于多個不同的硬件平臺和多個網(wǎng)絡環(huán)境。使用OpenGL能夠對3D顯示進行非常完全的控制,能夠實現(xiàn)較高的顯示性能。軟件開發(fā)平臺和開發(fā)工具的擬定本項目最后選用Windows操作系統(tǒng)作為本項目軟件的開發(fā)和運行平臺。由于本項目重要涉及圖形圖像顯示,因此首先應選擇含有圖形界面的運行平臺;同時又為了使本項目開發(fā)的應用軟件運行在較通用的系統(tǒng)上,因此選擇Windows操作系統(tǒng)。Windows系統(tǒng)下軟件的最佳開發(fā)工具當屬VC++開發(fā)工具,VC++內(nèi)嵌了對OpenGL的支持,且其WinSock對TCP/IP也含有良好的支持,這使VC++不僅適合于單機多顯系統(tǒng)的開發(fā),也適合于網(wǎng)絡版的多機多顯3D同時系統(tǒng)的開發(fā),因此本項目的開發(fā)環(huán)境選擇的是基于Windows操作系統(tǒng)下的VC++開發(fā)環(huán)境。單機多顯系統(tǒng)硬件實現(xiàn)辦法本項研究的第一步是實現(xiàn)單臺計算機在Windows98系統(tǒng)上對多個顯示屏的顯示控制。通過在一臺計算機上插入兩塊完全同樣的顯示適配器,運用Windows98對多屏顯示的支持,實現(xiàn)單臺計算機對兩個顯示屏的控制,并能夠通過VC編程,實現(xiàn)自編程序在不同顯示屏上的顯示控制,達成了自編應用程序能夠在不同顯示屏上顯示不同內(nèi)容的目的。本項研究的第二步是實現(xiàn)單臺計算機在WindowsXP系統(tǒng)上對多個顯示屏的顯示控制。實現(xiàn)辦法和Windows98類似,但必須選用較新的顯示適配器才干實現(xiàn)。本項研究的第三步是實現(xiàn)自編應用程序在多個顯示屏上實現(xiàn)3D顯示的支持。通過對多個顯示適配器的研究,最后擬定了PCI和AGP兩塊顯示適配器共存的方案和兩塊完全相似的PCI-E顯示適配器的方案,實現(xiàn)了在不同顯示屏上同時、同時顯示3D對象的硬件環(huán)境。單機多顯系統(tǒng)硬件檢測實現(xiàn)辦法單機多顯系統(tǒng)對多顯示屏的控制和檢測運用了Windows操作系統(tǒng)的虛擬桌面擴展機制。該機制將Windows的桌面定義為一種非常大的邏輯空間,與各顯示適配器相連的顯示屏都位于這個邏輯空間中的一種特定位置。通過指定主顯示屏,并運用操作系統(tǒng)桌面擴展功效,對各顯示屏的位置進行設立,將其它顯示屏設立到以主顯示屏為參考的特定空間。先用函數(shù)GetSystemMetrics()得到主窗口的參數(shù),然后根據(jù)主窗口的參數(shù)和各顯示區(qū)的相對位置,通過函數(shù)MonitorFromPoint()檢測各顯示屏對應顯示區(qū)的活動狀態(tài),對于處在活動狀態(tài)的顯示區(qū),再用函數(shù)GetMonitorInfo()得到對應的顯示區(qū)參數(shù),從而實現(xiàn)軟件對多顯示屏的自動檢測功效。OpenGL顯示實現(xiàn)辦法OpenGL進行3D顯示控制的辦法是:(1)進行OpenGL的初始化解決,涉及建立所需的像素格式、得到指定設備環(huán)境的像素模式索引值并據(jù)此聲明一種像素模式等。(2)通過wglCreateContext()函數(shù)用特定視窗關聯(lián)的上下文設備環(huán)境創(chuàng)立一種OpenGL上下文設備環(huán)境。3D繪制由下面四個環(huán)節(jié)重復構成:(3)用wglMakeCurrent(Hdc)函數(shù)將特定窗口的設備環(huán)境設立為現(xiàn)在OpenGL環(huán)境。(4)執(zhí)行OpenGL的繪制操作,該環(huán)節(jié)涉及下列子環(huán)節(jié):a.調(diào)用glPushMatrix()保存現(xiàn)在變換矩陣。b.調(diào)用glLoadIdentity()將現(xiàn)在變換矩陣設立為單位矩陣。c.調(diào)用gluLookAt()定義視角變換。d.調(diào)用glMultMatrixf()設立現(xiàn)在變換矩陣。e.對于每一種要顯示的3D對象數(shù)據(jù),調(diào)用glBegin(ViewMode)和glEnd(),按指定模式進行3D繪制,并在這兩個函數(shù)的調(diào)用之間繪制該對象的全部面片,其中涉及調(diào)用glNormal3f()設立每一種頂點的法線方向、根據(jù)頂點數(shù)據(jù)的性質(zhì)設立紋理、顏色和材質(zhì),最后調(diào)用glVertex3f()設立該頂點。f.調(diào)用glPopMatrix()恢復保存的變換矩陣。(5)用SwapBuffers(wglGetCurrentDC())交換前后臺顯示緩沖區(qū)。(6)用wglMakeCurrent(NULL,NULL)釋放OpenGL上下文設備環(huán)境。單機多顯系統(tǒng)OpenGL多顯示屏顯示實現(xiàn)辦法OpenGL支持多顯示屏的辦法以下:OpenGL的繪制是面對窗口的,在上述運用OpenGL進行3D繪制的環(huán)節(jié)2中,為了創(chuàng)立OpenGL的上下文設備環(huán)境,必須指定一種Windows對應的窗口,一旦為某個OpenGL設備環(huán)境指定了一種窗口,在該OpenGL設備上的繪制都將出現(xiàn)在所指定的窗口中。因此將Windows多顯示屏技術和OpenGL顯示技術結合是實現(xiàn)OpenGL對多顯示屏支持的核心。具體做法是:將Windows應用程序的視窗作為第一種顯示窗口(主顯示屏),創(chuàng)立三個無模態(tài)對話框,并將其位置分別設立在擴展的三個子顯示屏所在的區(qū)域。分別創(chuàng)立四個OpenGL上下文設備環(huán)境,并分別將他們的顯示窗口指定為主顯示屏和其它三個子顯示屏。用wglMakeCurrent(Hdc)函數(shù)將現(xiàn)在OpenGL繪制設備指定為特定的顯示屏并在所選定的OpenGL設備上進行對應顯示屏的繪制,實現(xiàn)OpenGL在不同的顯示屏上進行不同的繪制解決。OpenGL控制實現(xiàn)3D對象平移的辦法在瀏覽方式中的平移方式狀態(tài)下,將顧客對鼠標光標的拖動位移按比例轉換為3D坐標的位置移動信息(Z坐標不變),在進行OpenGL顯示解決時,通過調(diào)用glTranslatef(X,Y,0),變化現(xiàn)在繪制對象坐標系原點的X和Y坐標,就能夠實現(xiàn)3D顯示對象的平移功效。OpenGL控制實現(xiàn)3D旋轉的辦法控制實現(xiàn)3D對象旋轉的辦法以下:在讀入3D數(shù)據(jù)時,計算出該數(shù)據(jù)對應3D對象的質(zhì)心,并將其作為旋轉中心。運用虛擬球的辦法將顧客的鼠標二維移動操作轉換為三維的旋轉向量。運用四元數(shù)運算將上一步得到的鼠標旋轉向量轉換為三維旋轉矩陣。在進行OpenGL顯示解決前,先用上述旋轉矩陣對3D數(shù)據(jù)進行變換,再進行顯示,就能夠得到旋轉后的3D視圖。單機多顯系統(tǒng)同時控制實現(xiàn)辦法運用OpenGL實現(xiàn)多個3D繪制對象同時顯示的辦法是:創(chuàng)立對應于不同顯示屏的四個窗口,創(chuàng)立四個OpenGL設備并與上述四個窗口有關聯(lián),設立這四個OpenGL設備的顯示數(shù)據(jù)為同一種3D對象,但顯示視角各不相似。接受顧客的繪制操作命令,按照顧客操作命令的性質(zhì)進行各OpenGL設備的數(shù)據(jù)變換計算,觸發(fā)第i(i=1)個顯示屏的顯示更新。在第i個顯示屏的顯示更新解決中,選中該顯示屏對應的OprnGL設備并在其上進行3D繪制。繪制完畢后,觸發(fā)第i+1個顯示屏的顯示更新,直到全部的顯示屏對應的顯示更新解決完畢為止。單機多顯系統(tǒng)鳥瞰導游實現(xiàn)辦法鳥瞰導游窗口的設立,是為了在3D對象被放大瀏覽后,主窗口只能顯示3D對象部分內(nèi)容的狀況下,為顧客批示出主窗口所顯示的內(nèi)容在整個3D對象中的具體位置。鳥瞰導游窗口中繪制的對象與主窗口中的為同一種3D對象,但鳥瞰導游窗口中繪制的對象始終都是完整的顯示。當主窗口只顯示3D對象的某個局部內(nèi)容時,在鳥瞰導游窗口中用虛線框的方式標出主窗口所顯示的部分內(nèi)容的對應位置。鳥瞰導游窗口多個功效的實現(xiàn)辦法以下:(1)鳥瞰導游窗口的基本繪制:首先在鳥瞰導游窗口中按照窗口尺寸設立OpenGL視景體參數(shù),使現(xiàn)在顯示的3D對象能夠完整地在鳥瞰導游窗口中顯示出來;主窗口3D對象的任何繪制更新,都可用SendMessage()函數(shù)向鳥瞰導游窗口發(fā)送繪制更新消息;鳥瞰導游窗口收到主窗口的繪制更新消息后,按主窗口的視角進行同一種3D對象的OpenGL顯示,并按現(xiàn)在區(qū)域框的參數(shù)在鳥瞰導游窗口中繪制一種虛線的區(qū)域框。(2)主窗口放大和縮小解決:在主窗口的鼠標中鍵滾動消息響應函數(shù)中,計算出主窗口視景體視點的新位置,按新的OpenGL剪切窗口和3D對象顯示尺寸的相對關系計算出鳥瞰導游窗口現(xiàn)在區(qū)域框的參數(shù);調(diào)用鳥瞰導游窗口的Invalidate()函數(shù),更新鳥瞰導游窗口的繪制。(3)主窗口平移解決:在主窗口的鼠標拖動消息響應函數(shù)中,計算出主窗口視景體視點的新位置,按新的OpenGL剪切窗口和3D對象顯示尺寸的相對關系計算出鳥瞰導游窗口現(xiàn)在區(qū)域框的參數(shù);調(diào)用鳥瞰導游窗口的Invalidate()函數(shù),更新鳥瞰導游窗口的繪制。(4)鳥瞰導游窗口導游平移解決:在鳥瞰導游窗口的鼠標對現(xiàn)在區(qū)域框拖動消息響應函數(shù)中,計算出鳥瞰導游窗口現(xiàn)在區(qū)域框相對于其3D對象的位置移動,換算為主窗口視景體視的移動位置并更新主窗口視景體視的x和y坐標;調(diào)用主窗口的Invalidate()函數(shù),更新主窗口的繪制。3DS文獻轉換實現(xiàn)辦法3DS文獻由數(shù)據(jù)塊構成,數(shù)據(jù)塊的種類非常多,作為3D模型數(shù)據(jù),3DS文獻中的許多數(shù)據(jù)是本系統(tǒng)并不需要的,因此本系統(tǒng)僅對3DS文獻中的部分數(shù)據(jù)進行了讀入和轉換,其它不用的數(shù)據(jù)則跳過不讀。本系統(tǒng)軟件讀入并轉換的3DS文獻數(shù)據(jù)有主塊數(shù)據(jù)、版本數(shù)據(jù)、對象信息數(shù)據(jù)、材質(zhì)數(shù)據(jù)和對象數(shù)據(jù)。(1)主塊數(shù)據(jù)的讀入解決主塊數(shù)據(jù)的解決較簡樸,主塊是第一種3DS文獻的塊,讀入后只對塊ID進行有效性檢查解決,如果該ID不是3DS文獻的主塊標記,則放棄對該文獻的讀入操作;如果是3DS文獻的主塊標記,則用遞歸調(diào)用的辦法繼續(xù)讀入并轉換主塊中包含的其它數(shù)據(jù)塊。(2)版本數(shù)據(jù)的讀入解決版本塊數(shù)據(jù)僅包含一種四字節(jié)長的整數(shù)版本值,讀入后的版本號保存在一種臨時的版本變量中,用以對版本號進行檢查解決,如果版本號超出了本軟件適應的版本,則提示一種可能出錯的信息,然后繼續(xù)讀入其它數(shù)據(jù)塊。(3)對象信息數(shù)據(jù)的讀入解決對象信息塊由一種四字節(jié)長的整數(shù)版本值和后續(xù)數(shù)據(jù)塊構成,讀入后的對象版本號被丟棄,然后從其后的數(shù)據(jù)塊繼續(xù)讀入。(4)材質(zhì)數(shù)據(jù)的讀入解決每次讀入一種新的材質(zhì)數(shù)據(jù)塊,就在3D模型數(shù)據(jù)的材質(zhì)數(shù)據(jù)鏈表中添加一種新的材質(zhì)數(shù)據(jù),然后繼續(xù)讀入該材質(zhì)數(shù)據(jù)塊的后續(xù)數(shù)據(jù)塊并根據(jù)后續(xù)數(shù)據(jù)塊的類型進行不同的解決。一種材質(zhì)數(shù)據(jù)塊的后續(xù)數(shù)據(jù)塊可能是材質(zhì)名稱塊、材質(zhì)顏色塊、新的材質(zhì)塊和材質(zhì)文獻名塊,不同材質(zhì)塊的解決辦法以下:材質(zhì)名稱塊的解決:材質(zhì)名稱塊只包含特定長度的材質(zhì)名稱字符串,對該塊的解決是讀入塊數(shù)據(jù)并保存在現(xiàn)在材質(zhì)數(shù)據(jù)鏈表的材質(zhì)名稱變量中。材質(zhì)顏色塊的解決:材質(zhì)顏色塊包含塊頭和三字節(jié)的材質(zhì)顏色,對該塊的解決是讀入塊頭,然后讀入三字節(jié)的材質(zhì)顏色并保存在現(xiàn)在材質(zhì)數(shù)據(jù)鏈表的材質(zhì)顏色變量中。新的材質(zhì)塊的解決:如果現(xiàn)在材質(zhì)塊的類型是一種材質(zhì)信息塊,則表達它是一種新的材質(zhì)數(shù)據(jù)塊,對該塊的解決辦法是遞歸調(diào)用材質(zhì)數(shù)據(jù)塊讀入解決函數(shù),讀入并解決該材質(zhì)塊數(shù)據(jù)。材質(zhì)文獻名塊的解決:材質(zhì)文獻名塊僅由特定長度的材質(zhì)文獻名字符串構成,對該塊的解決辦法是讀入材質(zhì)文獻名并保存在現(xiàn)在材質(zhì)數(shù)據(jù)鏈表的材質(zhì)文獻名塊變量中。除以上材質(zhì)數(shù)據(jù)塊類型外的其它材質(zhì)數(shù)據(jù)塊都被跳過并丟棄。(5)對象數(shù)據(jù)的讀入解決每次讀入一種新的對象數(shù)據(jù)塊,就在3D模型數(shù)據(jù)的對象數(shù)據(jù)鏈表中添加一種新的對象數(shù)據(jù),然后繼續(xù)讀入該對象數(shù)據(jù)塊的后續(xù)數(shù)據(jù)塊并根據(jù)后續(xù)數(shù)據(jù)塊的類型進行不同的解決。一種對象數(shù)據(jù)塊由該對象的名稱和后續(xù)的對象數(shù)據(jù)塊構成,對象數(shù)據(jù)塊的解決首先讀入該對象的名稱字符串并保存在現(xiàn)在對象數(shù)據(jù)鏈表的對象名稱變量中。后續(xù)的對象數(shù)據(jù)塊可能是一種新對象數(shù)據(jù)塊、頂點數(shù)據(jù)塊、面片數(shù)據(jù)塊、對象的材質(zhì)名稱數(shù)據(jù)塊、對象的UV紋理坐標數(shù)據(jù)塊。不同對象塊的解決辦法以下:新對象數(shù)據(jù)塊的解決:如果現(xiàn)在對象塊的類型是一種對象塊,則表達它是一種新的對象數(shù)據(jù)塊,對該塊的解決辦法是遞歸調(diào)用對象數(shù)據(jù)塊讀入解決函數(shù),讀入并解決該對象塊數(shù)據(jù)。頂點數(shù)據(jù)塊的解決:每一種頂點數(shù)據(jù)塊由一種兩字節(jié)的頂點個數(shù)和指定個數(shù)的頂點坐標(三個四字節(jié)浮點數(shù))構成。頂點數(shù)據(jù)塊的解決是先讀入頂點個數(shù),保存在現(xiàn)在對象數(shù)據(jù)的頂點個數(shù)變量中,然后為該對象的頂點存儲區(qū)申請指定大小的空間,再讀入全部的頂點數(shù)據(jù)并保存在新申請的空間中。由于OpenGL的坐標系和3DS文獻的坐標系是不同的,3DS中模型的Z軸是指向上的,而OpenGL中模型的Z軸是垂直屏幕指向顧客的,因此需要將3DS文獻數(shù)據(jù)全部頂點坐標的y和z對換,然后將得到的z坐標取反才干得到對的的OpenGL坐標。面片數(shù)據(jù)塊的解決:每一種面片數(shù)據(jù)塊由一種兩字節(jié)的面片個數(shù)和指定個數(shù)的面片數(shù)據(jù)(四個兩字節(jié)整數(shù))構成,面片數(shù)據(jù)的前三個數(shù)據(jù)是構成該面片的頂點索引值,第四個數(shù)據(jù)是這些頂點的繪制次序碼。面片數(shù)據(jù)塊的解決是先讀入面片個數(shù),保存在現(xiàn)在對象數(shù)據(jù)的面片個數(shù)變量中,然后為該對象的面片存儲區(qū)申請指定大小的空間,再依此讀入每一種面片的三個頂點索引值并保存在新申請的空間中。普通狀況下,對面片的第四個數(shù)據(jù)-頂點繪制次序碼的解決是讀入后丟棄不用。但對于某些不規(guī)范的3DS文獻數(shù)據(jù),還需要根據(jù)頂點繪制次序碼對頂點索引值的次序進行調(diào)換,否則用OpenGL繪制出的等于面片可能會失真。對象材質(zhì)名稱數(shù)據(jù)塊的解決:對象材質(zhì)名稱數(shù)據(jù)塊由以0結尾的字符串和后續(xù)數(shù)據(jù)構成,對該塊的解決辦法是:讀入對應的材質(zhì)名稱字符串,將它與已經(jīng)讀入并保存的全部材質(zhì)數(shù)據(jù)中的材質(zhì)名稱進行比較,如果有匹配(相等)的材質(zhì)名稱,則將該對象的紋理標志變量置位,并將該對象的紋理標記設立為匹配材質(zhì)的索引值,否則將該對象的紋理標志變量復位,并將該對象的紋理標記設立為-1。最后跳過對象材質(zhì)名稱字符串背面的全部數(shù)據(jù)。對象UV紋理坐標數(shù)據(jù)塊的解決:對象UV紋理坐標數(shù)據(jù)塊由一種兩字節(jié)的紋理坐標個數(shù)和指定個數(shù)的紋理坐標數(shù)據(jù)(兩個四字節(jié)浮點數(shù))構成。對象UV紋理坐標數(shù)據(jù)塊的解決是先讀入紋理坐標個數(shù),保存在現(xiàn)在對象紋理坐標個數(shù)變量中,然后為該對象的紋理坐標存儲區(qū)申請指定大小的空間,再一次讀入全部的紋理坐標數(shù)據(jù)并保存在新申請的空間中。多機多顯系統(tǒng)通信合同實現(xiàn)辦法系統(tǒng)通信合同解決辦法在MFC應用程序中,文檔類重要負責解決數(shù)據(jù),而視圖類用于顯示數(shù)據(jù)。在本程序中,文檔類CM3DDispDoc負責消息的接受和發(fā)送,以及套接字通信的初始化,視圖類CM3DDispView解釋和解決消息。CM3DDispDoc類發(fā)送和接受消息的過程以下:當顧客進行同時控制觸發(fā)操作或者同時控制操作時,該計算機將向聯(lián)網(wǎng)的計算機發(fā)送消息。發(fā)送消息的過程以下:(1)由于本軟件在設計合同時采用了可變長度消息的構造,不同的操作封裝的消息是不同的。在CM3DDispView類中系統(tǒng)根據(jù)顧客的操作封裝完消息,然后調(diào)用CM3DDispDoc類的UpdateClients()函數(shù)。消息的發(fā)送放在CM3DDispDoc類中解決。(2)在UpdateClients()函數(shù)中,依次從CM3DDispDoc類保存的連接的socket鏈表m_connectionList中找到與其它計算機連接的CClientSocket對象后,調(diào)用CM3DDispDoc::SendMsg()函數(shù)發(fā)送消息。(3)SendMsg()函數(shù)發(fā)送消息的過程以下:調(diào)用該CClientSocket的SendMsg()函數(shù),SendMsg()函數(shù)再調(diào)用CMsg類的序列化函數(shù)Serialize()完畢數(shù)據(jù)的發(fā)送。接受消息的過程以下。(1)建立完連接后,如果連接的計算機有消息發(fā)送過來,則框架代碼會自動調(diào)用CClientSocket的OnReceive()函數(shù)(或者說CClientSocket的OnReceive事件被觸發(fā))。在OnReceive()函數(shù)中調(diào)用文檔類CM3DDispDoc的組員函數(shù)ProcessPendingReceive(),在文檔類中對消息進行接受和解決。(2)ProcessPendingReceive()的解決辦法是,先定義一種局部變量CMsgmsg,再調(diào)用ReadMsg()函數(shù)接受發(fā)來的消息。每接受完一次信息,就對該信息進行解決,解決完后析構該msg,然后再判斷該socket與否有新的讀取數(shù)據(jù)消息。若有,再重新構造一種CMsgmsg,如此循環(huán),直到緩沖區(qū)為空。本軟件在設計合同時采用了可變長度消息的構造,因此,即使每次接受消息都用了同一種類CMsg的對象msg,但每次接受的消息的構造并不相似。為了避免兩次接受的信息互相影響,一定要把msg定義成局部的,解決完該消息后即析構該msg。(3)ReadMsg()函數(shù)接受消息的過程以下:調(diào)用該CClientSocket的ReceiveMsg()函數(shù),ReceiveMsg()函數(shù)再調(diào)用CMsg類的序列化函數(shù)Serialize()完畢數(shù)據(jù)的接受。(4)在ProcessPendingRead()函數(shù)中對ReadMsg()函數(shù)接受的消息進行解決的過程以下:先判斷該消息與否涉及控制權請求消息,若有,則先進行狀態(tài)轉換解決(狀態(tài)轉換解決辦法見3.2.13節(jié))。再根據(jù)消息的ID為INIT_MSG、STATE_MSG、MOVE_MSG、FILE_MSG來分別進行對應的初始化解決、狀態(tài)信息解決、3D模型運動解決、數(shù)據(jù)更新解決。系統(tǒng)通信合同的構成網(wǎng)絡應用程序設計中,合同是必不可少的,越是大型的網(wǎng)絡應用程序,合同就越復雜。通信的雙方為了懂得對方所發(fā)送的消息的意義,就必須要商定好消息的格式以及發(fā)送的次序,這些也是合同的一種重要構成部分。在客戶機/服務器模型中,根據(jù)不同的狀況,合同能夠是對稱的,也能夠是非對稱的。在對稱的合同中,每一方都有可能扮演主從角色;在非對稱合同中,一方被不可變化地認為是主機,而另一方則是從機。一種對稱合同的例子是Internet中用于終端仿真的Telnet,而非對稱合同的例子是Internet中的FTP。無論具體的合同是對稱的還是非對稱的,當服務被提供時必然存在“客戶機”和“服務器”。多機多屏3D顯示系統(tǒng)的通信合同分無連接和有連接兩種。當程序被啟動時,由于不懂得網(wǎng)絡中與否有其它計算機在運行本軟件,必須用無連接的UDP廣播報文的形式向網(wǎng)絡中全部的計算機發(fā)送系統(tǒng)啟動消息,任何已運行本軟件的計算機在收到系統(tǒng)啟動消息后都要與剛啟動的計算機建立連接,并回復系統(tǒng)初始化消息。一旦建立連接,后續(xù)的通信便用有連接的合同完畢。在基于連接的通信合同中,采用可變長度消息命令,將系統(tǒng)多個解決和全部3D瀏覽控制命令封裝在一種消息構造(一種可串行化的類CMsg)中,實現(xiàn)瀏覽控制命令的可靠傳輸,這樣使合同含有較好的擴展性,易于增加新的合同或修改某些舊的合同。如果增加新消息合同,則只要把對應的消息項加入類中,并在通信的兩端進行對應的解釋解決即可。CMsg類中用組員變量m_wMsgID表達所發(fā)消息的ID,根據(jù)ID來擬定如何封裝消息。消息的ID有下列四種類型:●INIT_MSG初始化消息●STATE_MSG狀態(tài)消息●MOVE_MSG3D模型運動消息●FILE_MSG 數(shù)據(jù)更新消息系統(tǒng)啟動合同當本系統(tǒng)的軟件啟動時,本地計算機首先會給局域網(wǎng)中全部的計算機發(fā)送廣播消息。啟動合同由七個字節(jié)構成,這些數(shù)據(jù)包含了該計算機運行本程序的啟動時間和本軟件的啟動代碼,啟動時間涉及年、月、日、時、分和秒,啟動代碼為一種單字節(jié)的常數(shù)。局域網(wǎng)內(nèi)運行本軟件的其它計算機收到廣播消息后,先通過啟動代碼判斷與否為運行本軟件的計算機發(fā)送的廣播消息。若是,則與該計算機通過握手過程建立點對點的連接。兩臺計算機建立連接后,就能夠進行面對連接的通信,首先要發(fā)送的就是系統(tǒng)初始化消息。系統(tǒng)初始化合同程序啟動后,如果局域網(wǎng)上已有計算機運行本程序,則這些計算機會給本機發(fā)送初始化消息,消息的ID為INIT_MSG,即msg.m_wMsgID=INIT_MSG。初始化消息涉及該計算機的初始狀態(tài)信息和3DS模型的參數(shù),其由下列組員變量構成:WORDm_wPriority;//計算機啟動的序號WORDm_wModelState;//顯示的視角CStringm_str3DSName;//打開的3DS文獻的文獻名floatm_M00,……,m_M33;//一種4×4參數(shù)矩陣floatm_newM00,……,m_newM22;//一種3×3參數(shù)矩陣floatm_xwalk;//縱向距離floatm_ywalk;//橫向距離floatm_zwalk;floatm_displayLength;//視景距離3D瀏覽控制合同.13D瀏覽控制合同概述本軟件運行后有三種不同的狀態(tài),分別是:對等狀態(tài)、主控狀態(tài)和附屬狀態(tài)。當某臺計算機上運行的軟件處在這三種狀態(tài)之一時,分別將該計算機稱為對等機、主機和從機。在任一特定時刻,某臺計算機只可能處在三種狀態(tài)中的一種,且在任一特定時刻,只能有一臺計算機是主機。為了描述方便,將顧客對計算機的控制操作分為同時控制觸發(fā)操作、同時控制操作和非同時控制操作三類。同時控制觸發(fā)操作:涉及裝入3DS對象、開始對已裝入的3D對象的旋轉、平移、放縮和顯示復位等。同時控制操作:涉及對已裝入的3D對象的旋轉、平移、放縮操作。非同時控制操作:涉及設立本計算機顯示的背景顏色、變化本計算機的顯示視角等。同時控制操作是各個計算機同時同時進行的解決。同時控制觸發(fā)操作是顧客在某臺處在對等狀態(tài)的計算機上將要進行同時操作的操作,同時控制觸發(fā)操作將有可能使該計算機由對等機變?yōu)橹鳈C;非同時操作則是某臺計算機自己進行的操作。.23D瀏覽控制合同設計瀏覽控制合同由兩部分構成:一是狀態(tài)消息,其ID為STATE_MSG;二是3D模型運動消息,其ID為MOVE_MSG。(1)控制權請求消息當顧客進行同時控制觸發(fā)操作時,將會發(fā)出控制權請求消息。由于全部的同時瀏覽操作都會產(chǎn)生該消息,故在設計合同時,將該消息作為全部消息都包含的一部分消息,其包含下列組員變量:BOOLm_bRequest;//請求獲得控制權WORDm_wPriority;//計算機啟動的序號WORDm_wYear,m_wMonth,m_wDay,m_wHour,m_wMinute,m_wSecond;//同時控制觸發(fā)操作的時間(2)旋轉操作消息旋轉操作發(fā)送的消息ID為MOVE_MSG。當鼠標移動時,3D模型參數(shù)中的4×4的矩陣就會發(fā)生變化,故應將該矩陣發(fā)送出去,該消息由下列組員變量構成:BOOLm_bMove;//3D模型與否處在任意旋轉狀態(tài)floatm_M00,……,m_M33;//一種4×4參數(shù)矩陣(3)鼠標左鍵松開操作消息當松開鼠標左鍵時,3D模型參數(shù)中的3×3的矩陣就會發(fā)生變化,故應將該矩陣發(fā)送出去,該消息由下列組員變量構成:BOOLm_bLButtonUp;//左鍵松開floatm_newM00,……,m_newM22;//一種3×3參數(shù)矩陣(4)平移操作消息平移操作發(fā)送的消息ID為MOVE_MSG。平移操作變化的是3D模型參數(shù)中的橫向距離和縱向距離,故消息包含下列組員變量:BOOLm_bSimpleMove;//3D模型處在平移狀態(tài)floatm_xwalk;//縱向距離floatm_ywalk;//橫向距離(5)放縮操作消息放縮操作發(fā)送的消息的ID為MOVE_MSG。放縮操作變化的是視景距離,消息包含下列組員變量:BOOLm_bMiddle;//3D模型處在放縮狀態(tài)floatm_zwalk;floatm_displayLength;//視景距離(6)打開3DS文獻操作消息打開3DS文獻消息的ID為STATE_MSG,該消息只包含要打開的3DS文獻的文獻名,其組員變量為:CStringm_str3DSName;//打開的3DS文獻的文獻名(7)恢復初始狀態(tài)操作消息恢復初始狀態(tài)消息的ID為STATE_MSG,該消息只要告知各計算機恢復初始狀態(tài)即可,各計算機收到消息后將3DS文獻的參數(shù)恢復初始值?;謴统跏紶顟B(tài)消息的組員變量為:BOOLm_bInit;//恢復初始狀態(tài)(8)控制權放棄操作消息控制權放棄消息的ID為STATE_MSG,該消息只包含一種布爾型變量:BOOLm_bGiveUp;//放棄控制權(9)程序退出消息程序退出消息的ID為STATE_MSG,該消息包含一種布爾型變量:BOOLm_bClose;//退出(10)顯示視角變化消息顯示視角變化消息的ID為STATE_MSG,該消息可能是顧客更改瀏覽視角引發(fā)的,也可能是計算機啟動時自動調(diào)節(jié)的。該消息包含下列組員變量:BOOLm_bLittleWnd;//小窗口顯示的視角變化WORDm_wPriority;//計算機啟動的序號WORDm_wModelState;//顯示的視角.33D數(shù)據(jù)更新合同數(shù)據(jù)更新消息的ID為FILE_MSG,即msg.m_wMsgID=FILE_MSG。數(shù)據(jù)更新消息包含下列組員變量:CStringm_str3DSName;//傳輸?shù)?DS文獻的文獻名INTnFileMsgCode;//傳輸內(nèi)容代號傳輸內(nèi)容代號nFileMsgCode不同時,消息的構造也不相似。nFileMsgCode有下列六種可能取值。●REQUIRE_FILE_NAME 1●RE_REQUIRE_FILE_NAME 2●REQUIRE_FILE_DATA 3●REQUIRE_FILE_DATA_MORE4●RE_REQUIRE_FILE_DATA5●REQUIRE_FILE_END6計算機接受到打開3DS文獻的消息后,如果本地沒有該3DS文獻且沒有對應的臨時文獻(臨時文獻名為該3DS文獻名加上.TMP擴展名),則該計算機(下列稱為接受端)會給發(fā)來打開文獻消息的計算機(下列稱為發(fā)送端)回復獲取文獻消息,獲取文獻消息的傳輸內(nèi)容代碼nFileMsgCode=REQUIRE_FILE_NAME,此消息不再需要其它組員變量。如果本地沒有該3DS文獻但有對應的臨時文獻,則進行斷點續(xù)傳,給發(fā)送端回復繼續(xù)請求發(fā)送數(shù)據(jù)消息,繼續(xù)請求發(fā)送數(shù)據(jù)消息的傳輸內(nèi)容代碼nFileMsgCode=REQUIRE_FILE_DATA_MORE,此消息需要一種統(tǒng)計已接受的數(shù)據(jù)塊個數(shù)的組員變量:LONGlCurrentPos;//已接受的數(shù)據(jù)塊個數(shù)發(fā)送端接受到nFileMsgCode=REQUIRE_FILE_NAME的數(shù)據(jù)更新消息后,得到該3DS文獻的長度,并給接受端發(fā)送獲取文獻回復消息。獲取文獻回復消息的內(nèi)容代碼nFileMsgCode=RE_REQUIRE_FILE_NAME。另外,該消息還增加了一種寄存文獻長度的組員變量:LONGFileLength;//文獻長度接受端接受到nFileMsgCode=RE_REQUIRE_FILE_NAME的數(shù)據(jù)更新消息后,保存該3DS文獻的長度,并給該發(fā)送端發(fā)送請求數(shù)據(jù)發(fā)送消息。請求數(shù)據(jù)發(fā)送消息的內(nèi)容代碼nFileMsgCode=REQUIRE_FILE_DATA。由于數(shù)據(jù)傳輸是分塊傳輸?shù)?,每塊大小為1024字節(jié),故此消息還涉及一種統(tǒng)計已接受的數(shù)據(jù)塊個數(shù)的組員變量:LONGlCurrentPos;//已接受的數(shù)據(jù)塊個數(shù)發(fā)送端接受到nFileMsgCode=REQUIRE_FILE_DATA的數(shù)據(jù)更新消息后,第一次給接受端傳輸3DS文獻數(shù)據(jù),傳輸數(shù)據(jù)所用的消息為發(fā)送數(shù)據(jù)消息。發(fā)送數(shù)據(jù)消息的內(nèi)容代碼nFileMsgCode=RE_REQUIRE_FILE_DATA。此消息還涉及下列組員變量:LONGlCurrentPos;//已發(fā)送的數(shù)據(jù)塊個數(shù)INTnFileEndFlag;//數(shù)據(jù)更新結束標志BYTEFileBuff[1024];//寄存3DS文獻塊的數(shù)組接受端接受到nFileMsgCode=RE_REQUIRE_FILE_DATA的數(shù)據(jù)更新消息后,保存已經(jīng)收到的3DS文獻數(shù)據(jù),然后根據(jù)數(shù)據(jù)更新結束標志nFileEndFlag來決定發(fā)送的數(shù)據(jù)更新消息的內(nèi)容代碼。如果數(shù)據(jù)更新結束,則打開該3DS文獻,并發(fā)送文獻接受完畢消息,文獻接受完畢消息的內(nèi)容代碼nFileMsgCode=REQUIRE_FILE_END,此時數(shù)據(jù)更新消息不再需要其它組員變量。如果數(shù)據(jù)更新未結束,則給發(fā)送端回復繼續(xù)請求發(fā)送數(shù)據(jù)消息。繼續(xù)請求發(fā)送數(shù)據(jù)消息的內(nèi)容代碼nFileMsgCode=REQUIRE_FILE_DATA_MORE,此消息需要一種統(tǒng)計已接受的數(shù)據(jù)塊個數(shù)的組員變量:LONGlCurrentPos;//已接受的數(shù)據(jù)塊個數(shù)發(fā)送端接受到nFileMsgCode=REQUIRE_FILE_END的數(shù)據(jù)更新消息后,給接受端發(fā)送3D模型運動消息,消息的ID為MOVE_MSG。數(shù)據(jù)更新結束。發(fā)送端接受到nFileMsgCode=REQUIRE_FILE_DATA_MORE的數(shù)據(jù)更新消息后,繼續(xù)給接受端傳輸3DS文獻數(shù)據(jù)。傳輸數(shù)據(jù)所用的消息為發(fā)送數(shù)據(jù)消息。多機多顯系統(tǒng)同時控制實現(xiàn)辦法系統(tǒng)運行狀態(tài)設立程序運行后有三種不同的狀態(tài),分別是:對等狀態(tài)、主控狀態(tài)和附屬狀態(tài)。當某臺計算機上運行的軟件處在這三種狀態(tài)之一時,分別將該計算機稱為對等機、主機和從機。在任一特定時刻,某臺計算機只可能處在三種狀態(tài)中的一種,且在任一特定時刻,只能有一臺計算機是主機。網(wǎng)絡上運行本軟件的計算機由其唯一的IP地址互相辨別,且每臺計算機都有不同的優(yōu)先級,該優(yōu)先級是軟件運行時根據(jù)局域網(wǎng)內(nèi)運行該軟件的計算機的數(shù)目自動擬定的,每臺計算機的優(yōu)先級也是唯一的。軟件運行后,不同運行狀態(tài)的進入和操作以下:對等狀態(tài):程序啟動后,如果網(wǎng)上運行本程序的計算機都處在對等狀態(tài),則計算機將處在對等狀態(tài)。處在對等狀態(tài)的計算機能夠響應本機顧客的同時控制觸發(fā)操作進入主控狀態(tài),成為主機,或響應其它計算機的控制權請求消息而進入附屬狀態(tài),成為從機。主控狀態(tài):在對等狀態(tài)下,如果某臺計算機的顧客先于其它計算機的顧客進行了同時控制觸發(fā)操作,則該計算機將進入主控狀態(tài),同時向其它計算機發(fā)送控制請求消息。處在主控狀態(tài)的計算機按顧客操作進行同時控制解決,并將對應的控制發(fā)送給處在附屬狀態(tài)的其它計算機,從機按照接受到的同時控制命令,進行相似的操作。如果處在主控狀態(tài)的計算機在一定時間內(nèi)沒有再接受到顧客的同時控制觸發(fā)操作,則將進入對等狀態(tài),同時將向其它處在附屬狀態(tài)的計算機發(fā)送控制權放棄消息,收到該消息的其它計算機也將進入對等狀態(tài)。附屬狀態(tài):在軟件啟動時,如果網(wǎng)上已有主機,或在對等狀態(tài)下,收到其它計算機的控制請求消息,則該計算機將進入附屬狀態(tài)。處在附屬狀態(tài)的計算機接受主機的同時控制命令,并按該命令進行對應控制解決,從機將不接受本機顧客的同時控制觸發(fā)操作,只接受本機顧客的非同時控制操作。處在附屬狀態(tài)的計算機收到主機控制權放棄信息后進入對等狀態(tài)。系統(tǒng)狀態(tài)轉換辦法對等狀態(tài)軟件啟動時,如果局域網(wǎng)上運行本軟件的計算機都處在對等狀態(tài),則本計算機也將處在對等狀態(tài)。在對等狀態(tài)下,如果顧客在計算機上進行下述同時控制觸發(fā)操作,則該計算機將成為主機。同時控制觸發(fā)操作涉及下列系統(tǒng)消息:●鼠標左鍵按下消息●鼠標右鍵按下消息●鼠標中鍵滑動消息●裝入3DS文獻的菜單消息計算機成為主機后,給局域網(wǎng)內(nèi)運行本軟件的其它計算機發(fā)送控制權請求消息。控制權請求消息的內(nèi)容涉及本機響應同時控制觸發(fā)操作的時間以及本機的優(yōu)先級。其它計算機收到控制權請求消息后即由對等狀態(tài)變成從機,并保存收到控制權請求消息的時間和主機的優(yōu)先級。對等狀態(tài)對多個消息的解決辦法和狀態(tài)轉換:●收到本機顧客的同時控制觸發(fā)操作。解決:本機進入主控狀態(tài);向其它計算機發(fā)送控制權請求消息?!袷盏狡渌嬎銠C的控制權請求消息。解決:收到單個計算機的控制權請求消息時,本機進入附屬狀態(tài),保存主機控制權請求消息的時間與主機的優(yōu)先級;同時收到多個計算機的控制權請求消息時,對這些控制權請求消息的同時控制時間和優(yōu)先級參數(shù)進行沖突判斷,擬定主機,保存主機控制權請求消息的時間與主機的優(yōu)先級;●收到其它計算機的程序啟動消息。解決:給該計算機發(fā)送控制權請求消息,本機保持對等狀態(tài)?!袷盏狡渌嬎銠C的退出消息。解決:斷開與該計算機的連接,本機保持對等狀態(tài)。主控狀態(tài)一臺計算機成為主機后,顧客就能夠在該計算機上進行同時控制操作。在進行同時控制操作的同時,主機通過網(wǎng)絡將控制信息發(fā)送給各從機。各從機響應同時控制消息,并按消息進行對應的同時控制解決,從而實現(xiàn)同時瀏覽功效。顧客停止同時控制操作時,主機將啟動一種狀態(tài)轉換定時器開始定時。主機啟動狀態(tài)轉換定時器的系統(tǒng)消息是:●旋轉瀏覽過程中:鼠標左鍵松開消息●平移瀏覽過程中:鼠標左鍵松開消息●放縮瀏覽過程中:鼠標中鍵停止滑動消息●顯示復位時:鼠標右鍵松開消息●裝入3DS文獻過程中:成功打開并讀入3DS文獻后如果狀態(tài)轉換時間(普通為0.5秒)到,主機將退出主控狀態(tài),進入對等狀態(tài),并給各從機發(fā)送控制權放棄信息。各從機收到控制權放棄消息后,將保存的主機控制權請求消息的時間與主機的優(yōu)先級丟棄。如果在狀態(tài)轉換定時時間內(nèi),顧客再次進行同時控制觸發(fā)操作,則主機將狀態(tài)轉換定時器復位,進行對應的同時控制解決,并將控制信息發(fā)送給各從機。主機繼續(xù)保持在主控狀態(tài)。主控狀態(tài)對多個消息的解決辦法和狀態(tài)轉換:●收到本機顧客的同時控制觸發(fā)操作和同時控制操作。解決:進行對應的同時控制解決,向各從機發(fā)送同時控制消息、復位狀態(tài)轉換定時器?!駹顟B(tài)轉換定時器時間到。解決:向各從機發(fā)送控制權放棄信息,退出主控狀態(tài),進入對等狀態(tài)?!袷盏狡渌嬎銠C的控制權請求消息。解決:將控制權請求消息的同時控制時間和優(yōu)先級參數(shù)與本主機的對應參數(shù)進行沖突判斷,擬定新的主機并進行對應的沖突解決(沖突解決辦法及解決沖突后本機的狀態(tài)轉換見后續(xù)內(nèi)容)?!袷盏狡渌嬎銠C的程序啟動消息。解決:給該計算機發(fā)送控制權請求消息,本機保持主控狀態(tài)?!袷盏狡渌嬎銠C的退出消息。解決:斷開與該計算機的連接,本機保持主控狀態(tài)。附屬狀態(tài)某計算機啟動本軟件時,網(wǎng)絡上運行本軟件的其它計算機都會給他發(fā)送初始化消息,如果網(wǎng)上已有主機,則本機將成為從機。另外,本機還根據(jù)收到的初始化消息擬定其優(yōu)先級和顯示3D模型的視角。一臺處在對等狀態(tài)的計算機收到控制權請求消息后,也進入附屬狀態(tài),成為從機。從機響應主機發(fā)出的同時控制命令,控制本機進行與主機相似的同時控制解決。從機不會響應本機顧客的同時控制觸發(fā)操作。當從機收到主機的控制權放棄消息時,將保存的主機控制權請求時間和主機優(yōu)先級丟棄,然后進入對等狀態(tài)。從機能夠響應本機顧客的非同時控制操作,并進行對應的解決?!袷盏奖緳C顧客的同時控制觸發(fā)操作和同時控制操作。解決:不解決,保持在附屬狀態(tài)?!袷盏狡渌嬎銠C的控制權請求消息。解決:將控制權請求消息的同時控制時間和優(yōu)先級參數(shù)與現(xiàn)在主機的對應參數(shù)進行沖突判斷,決定新的主機并進行對應的解決(沖突解決辦法見●收到其它計算機的控制權放棄消息。解決:丟棄現(xiàn)在主機控制權請求消息的時間與主機的優(yōu)先級,進入對等狀態(tài)。●收到其它計算機的程序啟動消息。解決:給該計算機發(fā)送控制權請求消息,本機保持附屬狀態(tài)。●收到其它計算機的退出消息。解決:斷開與該計算機的連接,本機保持附屬狀態(tài)。沖突檢測與解決辦法(1)與狀態(tài)轉換有關的消息不同運行狀態(tài)下與狀態(tài)轉換有關的多個消息以下:●多個狀態(tài)下的本地同時控制觸發(fā)操作消息,涉及鼠標左鍵按下消息、鼠標右鍵按下消息、鼠標中鍵滑動消息和裝入3DS文獻的菜單消息。該消息使處在對等狀態(tài)的計算機成為主機?!穸鄠€狀態(tài)下通過網(wǎng)絡接受的其它計算機的控制權請求消息。該消息使處在對等狀態(tài)的計算機成為從機。●主控狀態(tài)下狀態(tài)轉換定時器消息。狀態(tài)轉換定時器的時間到后,計算機將由主控狀態(tài)進入對等狀態(tài)?!窀綄贍顟B(tài)下通過網(wǎng)絡接受的主機發(fā)出的控制權放棄消息。該消息使計算機由從機變成對等狀態(tài)。(2)沖突來源本軟件交互控制設計的目的是:在對等狀態(tài)下,先進行同時控制的計算機獲得控制權,成為主機;其它的計算機則成為從機并按主機的控制進行同時控制解決。在對等狀態(tài)下,可能出現(xiàn)兩臺或兩臺以上的計算機同時進行本地同時控制觸發(fā)操作,此時將出現(xiàn)沖突。按照軟件設計的規(guī)定,出現(xiàn)沖突時,應當按照某種規(guī)則,僅使一臺計算機成為主機??赡墚a(chǎn)生的沖突涉及下列兩種狀況:●在對等狀態(tài)下,幾個顧客在同一時刻開始同時控制觸發(fā)操作,則這幾臺計算機將同時成為主機并向其它計算機發(fā)送控制權請求消息。這種狀況下,無法根據(jù)控制權請求消息的先后次序擬定哪臺計算機成為主機?!裼捎诰W(wǎng)絡傳輸質(zhì)量等引發(fā)的傳輸時間延遲,可能某一臺先進行同時控制觸發(fā)操作的計算機A的控制權請求消息達成另一臺計算機B的時間比計算機B開始同時操作的時間晚,則這兩臺計算機都會成為主機并向其它計算機發(fā)送控制權請求消息。狀態(tài)轉換解決的規(guī)則:●在軟件啟動時,為每臺計算機設立一種優(yōu)先級,在發(fā)生第一種沖突時,優(yōu)先級最高的計算機將獲得控制權,成為主機,其它計算機就成為從機。優(yōu)先級的擬定辦法是:先運行本軟件的計算機,含有高的優(yōu)先級;同時運行本軟件的計算機,IP地址大的計算機含有高的優(yōu)先級。●每臺計算機在對等狀態(tài)下收到本機顧客的同時控制觸發(fā)操作時,統(tǒng)計該時刻的時間,并在發(fā)送給其它計算機的控制權請求消息中包含該時間。某臺處在對等狀態(tài)的計算機接受到多個控制權請求消息時,或某臺主機收到其它計算機的控制權請求消息時,通過比較各控制權請求消息的時間,擬定成為主機的計算機。(3)沖突檢測與解決辦法沖突的檢測運行本軟件的計算機所構成的網(wǎng)絡是一種簡樸的對等網(wǎng)絡,網(wǎng)絡中的計算機含有同等的網(wǎng)絡權限。產(chǎn)生沖突時,網(wǎng)絡中的每臺計算機都將收到?jīng)_突的消息,并都將按統(tǒng)一的準則來解決該沖突。主機對沖突的解決:本地計算機之因此成為主機,是由于它先響應了本地顧客的同時控制觸發(fā)消息。產(chǎn)生沖突的消息是來自其它計算機的控制權請求消息。對沖突的解決是在響應當控制權請求消息時比較兩臺計算機觸發(fā)同時控制的時間,如果時間相似,再比較兩臺計算機的優(yōu)先級,具體的比較算法以下:記計算機響應本地同時控制消息的時間為T1,記接受到的控制權請求消息的時間(即發(fā)送該控制權請求消息的計算機響應本地同時控制觸發(fā)操作的時間)為T2。當T1<T2時,認為本地計算機觸發(fā)同時控制的時間早,本地計算機應當成為這次控制的主機。解決辦法是放棄控制權請求消息,本地計算機仍然是主機。當T1>T2時,認為發(fā)送該控制權請求消息的遠程計算機響應同時控制的時間早,遠程計算機應當成為這次控制的主機。解決辦法是本地計算機的狀態(tài)由主機變成從機,并保存遠程計算機亦即新主機的信息。當T1=T2時,認為本地計算機響應同時控制觸發(fā)操作的時間與發(fā)送該控制權請求消息的遠程計算機響應同時控制觸發(fā)操作的時間相似,此時,比較兩臺計算機的優(yōu)先級。如果本地計算機的優(yōu)先級高,則本地計算機應當成為這次控制的主機,解決辦法是放棄該控制權請求消息,本地計算機仍然是主機;如果遠程計算機的優(yōu)先級高,則遠程計算機應當成為這次控制的主機,解決辦法是本地計算機的狀態(tài)由主機變成從機,并保存遠程計算機亦即新主機的信息。從機對沖突的解決:本地計算機之因此成為從機,是由于他先響應了網(wǎng)絡上某臺計算機發(fā)送的控制權請求消息。產(chǎn)生沖突的消息來源只有一種狀況:網(wǎng)絡上另一臺計算機發(fā)送的控制權請求消息。解決沖突的辦法是按照前節(jié)相似的原理比較現(xiàn)在主機和控制權請求消息的主機響應同時控制觸發(fā)操作的時間和他們的優(yōu)先級,擬定新的主機。若比較的成果是現(xiàn)在主機還是主機,則解決的辦法是本地計算機仍為現(xiàn)在主機的從機,放棄收到的控制權請求信息。若比較的成果是發(fā)出控制權請求消息的主機應當成為主機,則解決的辦法是本地計算機成為該主機的從機,并用該主機的信息替代現(xiàn)在主機的信息。對等機對沖突的解決:處在對等狀態(tài)的計算機收到?jīng)_突的消息只有一種狀況:同時收到網(wǎng)絡上一臺以上的計算機同時發(fā)送的控制權請求消息。解決沖突的辦法是按照前節(jié)相似的原理比較這些控制權請求消息響應同時控制觸發(fā)操作的時間和發(fā)送消息計算機的優(yōu)先級,擬定新的主機。多機多顯系統(tǒng)數(shù)據(jù)更新實現(xiàn)辦法數(shù)據(jù)更新合同解決概述多機多顯系統(tǒng)的計算機接受到3DS文獻消息后,如果本地指定數(shù)據(jù)文獻夾中沒有指定的3DS文獻,則給發(fā)出3DS文獻消息的計算機發(fā)送獲取文獻消息;發(fā)送端接受到獲取文獻消息后,得到指定3DS文獻的長度消息并發(fā)送給接受端計算機;接受端計算機判斷本地與否已有臨時文獻,如果沒有則創(chuàng)立臨時文獻并發(fā)送第一塊文獻數(shù)據(jù)接受消息,如果有臨時文獻,則發(fā)送臨時文獻的下一塊文獻數(shù)據(jù)接受消息。當發(fā)送端計算機收到文獻數(shù)據(jù)接受塊消息后,則將3DS文獻的指定塊讀入并發(fā)送給接受端計算機;接受端計算機接受并保存文獻數(shù)據(jù),再發(fā)出接受下一塊文獻數(shù)據(jù)消息,直到接受端計算機接受到最后一塊文獻數(shù)據(jù),此時則向發(fā)送端計算機發(fā)送文獻傳輸結束消息,同時將臨時文獻改名為3DS文獻。發(fā)送端計算機收到文獻傳輸結束消息后,向接受端計算機發(fā)送3D模型運動更新消息,接受端計算機按運動消息設立并顯示3D模型,數(shù)據(jù)更新過程結束。數(shù)據(jù)更新合同解決辦法計算機在收到文獻傳輸消息后,根據(jù)文獻傳輸消息代碼分別進行獲取文獻消息解決、獲取文獻回復消息解決、請求發(fā)送數(shù)據(jù)消息解決、發(fā)送數(shù)據(jù)消息解決、繼續(xù)請求發(fā)送數(shù)據(jù)消息解決和文獻接受完畢消息解決。各解決的具體辦法以下:(1)獲取文獻消息解決本解決是3DS文獻發(fā)送方計算機進行的解決。當消息的ID為FILE_MSG且傳輸內(nèi)容代碼nFileMsgCode=REQUIRE_FILE_NAME時,發(fā)送3DS文獻數(shù)據(jù)的計算機便執(zhí)行獲取文獻消息解決。該解決重要是得到指定3DS文獻的長度,并打開指定的3DS文獻為后續(xù)的文獻數(shù)據(jù)傳輸解決做準備。(2)獲取文獻回復消息解決本解決為3DS文獻接受方計算機進行的解決。當消息的ID為FILE_MSG且傳輸內(nèi)容代碼nFileMsgCode=RE_REQUIRE_FILE_NAME時,接受3DS文獻的計算機將執(zhí)行獲取文獻回復消息解決。該解決首先保存要傳輸3DS文獻的長度,用以進行文獻傳輸結束的判斷,接下來進行斷點續(xù)傳解決:檢查本地文獻夾中與否存在與要傳輸?shù)?DS文獻同名的臨時文獻,如果沒有臨時文獻或臨時文獻的長度不是數(shù)據(jù)塊的整倍數(shù),則創(chuàng)立新的臨時文獻,并發(fā)送從第一塊3DS文獻數(shù)據(jù)開始傳輸?shù)南?;如果本地文獻夾中已有與要傳輸?shù)?DS文獻同名的臨時文獻且臨時文獻的長度是數(shù)據(jù)塊的整倍數(shù),則發(fā)送從臨時文獻的下一塊3DS文獻數(shù)據(jù)開始傳輸?shù)南ⅰ#?)請求發(fā)送數(shù)據(jù)消息解決本解決為3DS文獻發(fā)送方計算機進行的解決。當消息的ID為FILE_MSG且傳輸內(nèi)容代碼nFileMsgCode=REQUIRE_FILE_DATA時,發(fā)送3DS文獻的計算機進行請求發(fā)送數(shù)據(jù)消息的解決。該解決讀取指定的3DS文獻數(shù)據(jù)塊并構成發(fā)送數(shù)據(jù)消息,發(fā)送給文獻接受方。如果文獻全部讀完,還要在消息中設立文獻讀取完畢標志。(4)請求發(fā)送數(shù)據(jù)消息解決本解決為3DS文獻接受方計算機進行的解決。當消息的ID為FILE_MSG且傳輸內(nèi)容代碼nFileMsgCode=RE_REQUIRE_FILE_DATA時,接受方計算機便進行發(fā)送數(shù)據(jù)消息解決。該解決在接受第一塊3DS文獻數(shù)據(jù)時將指定的3DS臨時文獻打開,將所接受的3DS文獻數(shù)據(jù)塊保存到臨時文獻中,如果接受到的文獻數(shù)據(jù)中的文獻傳輸結束標志置位,則向發(fā)送3DS文獻的計算機發(fā)送文獻接受完畢消息,否則向發(fā)送3DS文獻的計算機發(fā)送獲取下一塊文獻數(shù)據(jù)的消息。(5)繼續(xù)請求發(fā)送數(shù)據(jù)消息解決本解決為3DS文獻發(fā)送方計算機進行的解決。當消息的ID為FILE_MSG且傳輸內(nèi)容代碼nFileMsgCode=REQUIRE_FILE_DATA_MORE時,發(fā)送3DS文獻的計算機便進行繼續(xù)請求發(fā)送數(shù)據(jù)消息解決。該解決讀取指定的3DS文獻數(shù)據(jù)塊并構成發(fā)送數(shù)據(jù)消息,發(fā)送給文獻接受方。如果文獻全部讀完,還要在消息中設立文獻讀取完畢標志。(6)文獻接受完畢消息解決本解決為3DS文獻發(fā)送方計算機進行的解決。當消息的ID為FILE_MSG且傳輸內(nèi)容代碼nFileMsgCode=REQUIRE_FILE_END時,發(fā)送3DS文獻的計算機便進行文獻接受完畢消息解決。該解決將關閉已經(jīng)打開的3DS文獻,然后向3DS文獻的接受方計算機發(fā)送3DS模型運動消息。
系統(tǒng)環(huán)境系統(tǒng)硬件環(huán)境單機多顯系統(tǒng)硬件環(huán)境本項目的單機多顯系統(tǒng)硬件環(huán)境為一臺高性能PC計算機,該計算機能夠有下列兩種配備:配備1:主板上應當最少有一種AGP顯示適配器插槽,一種PCI插槽,這兩個插槽上分別插一塊AGP顯示適配器和一塊PCI顯示適配器,這兩塊顯示適配器必須是同一種型號,且使用同一組芯片集,每一塊顯示適配器含有兩個獨立的顯示接口,每一種顯示接口能夠接一種顯示屏。配備2:主板上應當最少有一兩個PCI-E插槽,這兩個插槽上分別插一塊PCI-E顯示適配器,這兩塊顯示適配器必須是同一種型號,且使用同一組芯片集,每一塊顯示適配器含有兩個獨立的顯示接口,每一種顯示接口能夠接一種顯示屏。上述計算機所配的顯示適配器必須含有OpenGL硬件加速功效,以滿足系統(tǒng)對3D顯示速度的規(guī)定。如此配備的計算機,能夠外接四個獨立的顯示屏。本項目單機多顯系統(tǒng)的樣機配備為:主機:CPU:Intel酷睿2Q6600主板:華碩P5KPremium/WiFi-AP內(nèi)存:DDR2-8004硬盤:320G顯示適配器:XFX訊景8800GTS(T80G-GHD)顯示屏:三星931C19英寸普屏多機多顯系統(tǒng)硬件環(huán)境本項目的多機多顯系統(tǒng)硬件環(huán)境為若干臺高性能PC計算機,計算機上的顯示適配器必須含有OpenGL硬件加速功效,這些計算機通過以太網(wǎng)連接在一起。本項目多機多顯系統(tǒng)的樣機配備為:主機:CPU:Intel酷睿2E6320主板:微星P35Neo2-FR內(nèi)存:DDR2-6672G硬盤:250G顯示適配器:XFX訊景8600GTS(T84G-UDD完美版)顯示屏:三星931C19英寸普屏系統(tǒng)軟件環(huán)境本項目的單機多顯系統(tǒng)和多機多顯系統(tǒng)的軟件環(huán)境為WindowsXP或Windows操作系統(tǒng)。兩種系統(tǒng)都要對顯示適配器進行配備,應當將其硬件加速功效調(diào)節(jié)到最大值。另外,單機多顯系統(tǒng)還要對顯示桌面進行擴展配備,首先允許將桌面擴展到主屏外的另外三個顯示屏,然后將它們進行排列,排列的方式是:主屏在最左邊,其它三個顯示屏依次排列在主屏的右方。系統(tǒng)功效設計單計算機對多顯示屏的同時控制功效本項目單機多顯系統(tǒng)規(guī)定所研制的軟件能夠在給定的硬件環(huán)境下控制四個不同的顯示屏并同時顯示同一種3D對象不同視角的3D透視圖。其軟件設計必須實現(xiàn)以下功效:一臺計算機對多個顯示屏的控制功效:通過桌面擴展,將四個顯示屏對應的顯示區(qū)域有序地排列在一起,程序能夠按照預定的位置檢測這些顯示屏的存在并獲取各個顯示屏的顯示信息。不同顯示屏有效信息顯示功效:系統(tǒng)能夠將檢測到的各顯示屏的狀態(tài)顯示在程序的狀態(tài)欄上。瀏覽的同時顯示功效:顧客操作鼠標在主顯示視圖上進行多個瀏覽控制,這些控制必須同時同時在其它三個顯示屏上按各自的視角設立,進行對應的顯示變換。單機多顯系統(tǒng)3D瀏覽和控制功效任意方向旋轉功效在程序設立為非平移模式下,顧客在主視圖上,按下鼠標左鍵,然后拖動鼠標光標,所顯示的3D對象便能夠按顧客操作的方向以3D對象的質(zhì)心為中心進行旋轉。平移功效在程序設立為平移模式下,顧客在主視圖上,按下鼠標左鍵,然后拖動鼠標光標,所顯示的3D對象便能夠按顧客操作的方向進行平行移動。顯示比例自動調(diào)節(jié)功效不同的3D對象數(shù)據(jù)含有不同的尺寸單位,如果按照固定的比例顯示,會出現(xiàn)某些對象太大或某些對象太小的狀況。程序應當含有顯示比例的自動調(diào)節(jié)功效。在系統(tǒng)讀入3D數(shù)據(jù)時,就對數(shù)據(jù)進行歸一化解決,并調(diào)節(jié)數(shù)據(jù)的中心坐標和視景尺寸,以實現(xiàn)任何3D數(shù)據(jù)在裝入后能以最清晰的比例全部顯示在屏幕上。放大和縮小功效為了能夠使顧客觀察3D對象不同位置的細節(jié),程序應當含有局部放大和整體縮小功效,這樣,顧客能夠通過平移、旋轉和放大操作,觀察到3D對象任一位置的細節(jié)。對3D對象過分的放大會使觀察點進入對象內(nèi)部,造成顧客感覺顯示錯誤;相反,過分的縮小會使顯示對象消失。因此,顯示的放大和縮小功效必須有視點位置的限制,以避免過分的放大和縮小給顧客造成系統(tǒng)失效的錯覺。視角設立功效單機多顯系統(tǒng)的特點是同一種3D對象的多視角顯示,為了不引發(fā)瀏覽錯覺,除主屏顯示外,另外三個屏幕的顯示視角是相對固定的,僅主屏的視角能夠按需要進行設立。視角的設立功效能夠將主顯示屏的視角設立為正視、后視、俯視、仰望、左視和右視六種視角模式。背景顏色設立功效不同的3D顯示對象含有不同的顏色,因此需要不同的背景顏色以更加好地體現(xiàn)3D對象的顯示效果。背景顏色的設立能夠將3D顯示的背景顯示顏色設立為任何一種顏色,以實現(xiàn)同時顯示對象的最佳顯示效果。繪制模式切換功效OpenGL支持面和線兩種三維顯示方式,面顯示方式以3D對象的面片為顯示單元,含有多個三維效果解決,能夠較好地表達顯示對象的三維特性。線顯示方式則僅顯示3D對象面片的邊界限,不含有光照和陰影解決等功效,但能夠較好地體現(xiàn)3D對象的構造和構成特性。程序應當能夠允許顧客以兩種不同的模式顯示3D對象,因此必須含有兩種顯示模式的切換設立功效。鳥瞰導游功效當顧客對顯示的3D對象進行放大操作時,屏幕上只能顯示3D對象的某個局部視圖,此時進行的平移或旋轉操作會使顯示畫面發(fā)生激烈的變化,給顧客造成迷失方向的感覺。鳥瞰導游功效是在主顯示屏幕上顯示一種小的窗口,該窗口始終顯示主視圖完整3D對象的畫面,并在小窗口中標明現(xiàn)在主視圖的顯示區(qū)域(視景區(qū)),以提示顧客現(xiàn)在的觀察的視角和局部所在位置,起到瀏覽導游的功效。另外,通過在小窗口中拖動視景區(qū),還能夠起到調(diào)節(jié)主顯示屏中所顯示的3D對象位置的功效。自動演示和測試功效自動演示功效能夠起到軟件使用辦法快速入門的作用。該功效能夠自動地模擬顧客進行重要瀏覽功效操作的效果顯示,不僅能夠讓初學者在較短的時間內(nèi)理解和學習軟件的使用,還能夠讓觀察者在較短的時間內(nèi)理解系統(tǒng)的功效。由于本系統(tǒng)軟件涉及3D對象的顯示,需要計算機含有較高的計算能力和顯示性能。為了能夠比較不同計算機在完畢本系統(tǒng)解決功效時性能上的優(yōu)劣,本系統(tǒng)專門設計了自動測試功效,該功效能夠自動計算現(xiàn)在運行軟件的計算機完畢特定顯示解決所用的時間,方便使用者比較不同計算機用本系統(tǒng)軟件進行3D對象顯示時的性能。多機多顯系統(tǒng)3D瀏覽和控制功效多計算機信息顯示功效多機多顯3D同時顯示系統(tǒng)由多臺通過以太網(wǎng)連接的計算機構成。每臺計算機上除了顯示本地3D對象指定視角的三維視圖外,還
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 甲下外生骨疣的臨床護理
- 株紫丁香課件趙秀梅
- 孕期手腳心發(fā)紅的健康宣教
- 《改革進入新時期》課件
- 股份增值合同三篇
- 鐵路機車車輛修造合同三篇
- 健身運動APP相關行業(yè)投資規(guī)劃報告范本
- ALN-BN復合陶瓷相關行業(yè)投資規(guī)劃報告
- 保障性住房管理服務相關行業(yè)投資規(guī)劃報告
- 班級環(huán)境布置與創(chuàng)意設計計劃
- 如何培養(yǎng)學生學習數(shù)學的興趣課件
- 中學生學習地理困難的原因及對策1000字
- 車間日常安全生產(chǎn)檢查表
- 冠寓運營管理手冊正式版
- 樹莓派機械臂使用說明書
- 化工原理課程設計-設計直管氣流干燥器,以干燥聚氯乙烯樹脂濕物料
- 反應結晶釜的設備設計
- 人教版數(shù)學五年級上冊全冊校本作業(yè)設計
- GB/T 6519-2000變形鋁合金產(chǎn)品超聲波檢驗方法
- GB/T 37771-2019煤礦綜采工作面總體配套導則
- 一年級上冊《和大人一起讀》檢測題答案
評論
0/150
提交評論