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

分布式?jīng)_突和咬合的制作方法

文檔序號:12802889閱讀:223來源:國知局
分布式?jīng)_突和咬合的制作方法與工藝

本發(fā)明涉及計算機程序和系統(tǒng)的領(lǐng)域,并且更具體地涉及用于設(shè)計建模對象的3d組裝的方法、系統(tǒng)和程序。



背景技術(shù):

在計算機輔助設(shè)計(cad)、計算機輔助工程(cae)、計算機輔助制造(cam)、虛擬世界、線上視頻游戲的上下文中以及更一般地在3d在線應(yīng)用的上下文中,三維(3d)環(huán)境(也被稱為3d場景)及其內(nèi)容,描述局部或完整3d虛擬環(huán)境的多種資產(chǎn),的顯示仍然是一種挑戰(zhàn)。該3d場景包括3d模型,其中每一個3d模型是一種資產(chǎn)并且具有包括多邊形網(wǎng)格、樣條曲面、構(gòu)造實體幾何等等的通常表示。材料和紋理,以及3d模型的動畫、光線、場景圖,同樣可以是3d場景的資產(chǎn)。持有該資產(chǎn)的計算機被稱為內(nèi)容服務(wù)器。從特定視點(也被稱為虛擬相機)觀看的這一3d場景的渲染圖像可以被顯示在第二計算機上。這一遠程渲染過程典型地用于云游戲、虛擬地球、虛擬世界。在其上執(zhí)行這一遠程渲染的該第二計算機被稱為客戶端。

3d在線應(yīng)用包括被稱為3d渲染引擎的軟件組件,以便通過考慮3d投影和多個光照效果(陰影、反射等)來生成從特定視點觀看的3d場景的一個或多個圖片。為了達成其目標(biāo),這樣的3d在線應(yīng)用必須在給定時刻將3d場景的信息從服務(wù)器傳輸至客戶端。

基本上存在兩種場景用于執(zhí)行3d場景的遠程渲染。第一種場景在于直接將3d內(nèi)容從服務(wù)器發(fā)送至客戶端并且這一個客戶端執(zhí)行渲染步驟。這將被稱為幾何流式傳送(geometrystreaming)。這一方法通常描述虛擬世界如何工作。第二種場景包括執(zhí)行該渲染步驟并將結(jié)果(靜態(tài)圖像或視頻流)發(fā)送至客戶端的服務(wù)器。這將被稱為像素流式傳送(pixelstreaming)。這一方法通常描述遠程渲染和云游戲如何工作。

幾何流式傳送可以使用很多策略來傳輸3d場景的內(nèi)容。一種策略的示例是細節(jié)等級概念:針對每一個資產(chǎn),根據(jù)可見性計算推斷不妨礙最終渲染的整體質(zhì)量的最小質(zhì)量等級。如果客戶端緩存中的資產(chǎn)版本沒有達到要求的質(zhì)量等級,則服務(wù)器發(fā)送細化(通常是在要求的版本和客戶端緩存中的版本之間的差別)。在這樣的策略中涉及的技術(shù)的示例是遞進網(wǎng)格、地形位移映射、基于體素的點云、細節(jié)的層次等級。

在像素流式傳送的情況下,傳輸?shù)臄?shù)據(jù)是通常使用標(biāo)準(zhǔn)壓縮方案(用于圖像的jpeg/jpeg2000以及用于視頻的h.264)進行壓縮的圖片或視頻。存在某些變形以將計算分布在多臺計算機上。在3d計算機圖形學(xué)中,它是指用于將3d場景投影至虛擬相機的位置的2d矩形。視口是屏幕中用于顯示要示出的整幅圖像的一部分的區(qū)域。該應(yīng)用可以對視口進行切分并且將渲染每一部分(較小幀)的責(zé)任分配至多臺計算機。在另一變形中,該應(yīng)用能夠?qū)?d場景進行切分并將渲染每一部分(較小的資產(chǎn)集合)的責(zé)任分配至多臺計算機。

幾何流式傳送和像素流式傳送不同地處理3d在線應(yīng)用遇到的問題。它們具有如現(xiàn)在所解釋的它們自身的缺點和它們自身的限制。

幾何流式傳送和像素流式傳送隨著越來越多的客戶端而進行不同的調(diào)整。像素流式傳送非常不利,因為要在服務(wù)器側(cè)上進行大部分計算(包括渲染)。因而,要求的服務(wù)器的數(shù)量隨著客戶端數(shù)量快速增長。由于每個客戶端很少共享相同的視點,因此難于找到能夠從一個客戶端至另一個客戶端被重復(fù)使用的計算結(jié)果。幾何流式傳送由于在服務(wù)器側(cè)上要求更少的計算而調(diào)整得更好。然而,通過計算機網(wǎng)絡(luò)發(fā)送幾何結(jié)構(gòu)要消耗網(wǎng)絡(luò)的帶寬并通常在客戶端計算機上渲染的3d場景上涉及遲延-對于應(yīng)用的較少反應(yīng)。

幾何流式傳送和像素流式傳送涉及客戶端硬件需求。如上文所提到的,像素流式傳送在客戶端側(cè)上僅具有少量計算開銷,而幾何流式傳送在客戶端側(cè)上要求某些3d顯示能力。雖然大多數(shù)光照設(shè)備現(xiàn)在受益于3d顯示的硬件加速,但它們的能力可能是相對受限的,這可能導(dǎo)致不太真實的圖片或?qū)τ趹?yīng)用的較少反應(yīng)。

幾何流式傳送和像素流式傳送兩者都具有明顯的帶寬消耗并要求網(wǎng)絡(luò)可靠性。很多有效的率失真算法可以由像素流式傳送使用以確保帶寬的公平消耗。然而,對視頻進行流式傳送與其他應(yīng)用相比較通常是相當(dāng)昂貴的。如果可用帶寬突然下降,則發(fā)送的圖像質(zhì)量可能被相應(yīng)降低。在網(wǎng)絡(luò)中斷的情況下,客戶端將不能夠改變它的視點或者與3d場景交互。如前面所介紹的,幾何流式傳送更可能經(jīng)歷帶寬使用的峰值,導(dǎo)致帶寬飽和以及網(wǎng)絡(luò)錯誤。必須在該應(yīng)用的設(shè)計上(細節(jié)等級或lod的使用)以及在3d場景的設(shè)計上(場景圖的不同區(qū)域中的信息量必須被平衡)做出額外的努力以減輕這一效果。如果可用帶寬突然下降,帶寬飽和將出現(xiàn)得更多,常常導(dǎo)致在客戶端視野中該場景的某些部分丟失或惡化。在網(wǎng)絡(luò)中斷的情況下,該客戶端仍然能夠改變它的視點并且與已經(jīng)被發(fā)送的該場景的元素交互。

像素流式傳送不允許對顯示于客戶端上的3d建模對象/在顯示于客戶端上的3d建模對象之間執(zhí)行諸如碰撞檢測、沖突的可視化提示的顯示、將對象彼此間咬合或者模擬剛體接觸的操作。實際上,客戶端并不具有3d建模對象的3d內(nèi)容并且僅渲染由服務(wù)器計算的表示。幾何流式傳送允許客戶端執(zhí)行這樣的操作;然而,客戶端的計算資源受限并且它們已經(jīng)被用于渲染3d場景。接觸和碰撞檢測算法被良好地開發(fā):例如在視頻游戲中,模擬固體動力學(xué)的需求目前是常見的并且通過被稱為“物理引擎”的組件實現(xiàn)。這一組件需要執(zhí)行包括碰撞檢測的數(shù)個任務(wù)。

在這一上下文中,仍然存在對于在連接至服務(wù)器的客戶端上執(zhí)行3d場景渲染的改進方法的需要。優(yōu)選地,該遠程渲染允許對3d場景的3d建模對象/在3d場景的3d建模對象之間執(zhí)行操作。



技術(shù)實現(xiàn)要素:

因此提供了一種用于設(shè)計建模對象的3d組裝的計算機實現(xiàn)的方法。該方法包括:

-通過將第二3d建模對象與第一3d建模對象的至少一個光柵圖像合并而在第二計算機上渲染建模對象的3d組裝,該至少一個光柵圖像已經(jīng)從第一計算機流至第二計算機;

-從第二計算機向第一計算機發(fā)送與該第二3d建模對象相關(guān)的第一數(shù)據(jù)以用于在第一和第二3d建模對象之間的接觸計算;以及

-在第一計算機上計算第一和第二3d建模對象之間的接觸。

該方法可能包括下面的一個或多個:

-從第一計算機向第二計算機發(fā)送第二數(shù)據(jù)以根據(jù)該接觸計算再次渲染建模對象的3d組裝;

-第一計算機向第二計算機發(fā)送與在計算步驟中被確定與第二對象接觸的第一3d建模相關(guān)的第二數(shù)據(jù);

-與第一3d建模對象相關(guān)的第二數(shù)據(jù)包括第一對象的幾何結(jié)構(gòu);

-與第一3d建模對象相關(guān)的第二數(shù)據(jù)包括第一對象簡化的幾何結(jié)構(gòu);

-與第一3d建模對象相關(guān)的第二數(shù)據(jù)包括第一對象簡化的幾何結(jié)構(gòu)并且第一對象的簡化的幾何結(jié)構(gòu)與第一對象的幾何結(jié)構(gòu)之間的差異小于第二計算機的一個像素的寬度;

-與第一3d建模對象相關(guān)的第二數(shù)據(jù)包括第一3d建模對象的兩個或多個深度圖;

-在第二計算機上計算第二數(shù)據(jù)和第二3d建模對象之間的可能接觸;

-接觸是碰撞或咬合。

-根據(jù)接觸計算的結(jié)果移動第二對象。

進一步提供了包括執(zhí)行上述方法的指令的計算機程序。

進一步提供了其上記錄有上述計算機程序的計算機可讀存儲介質(zhì)。

進一步提供了一種包括耦合至存儲器和圖形用戶界面的處理電路的系統(tǒng),該存儲器其上記錄有上述計算機程序。

附圖說明

現(xiàn)在將借助非限制性示例并參考附圖來描述本發(fā)明的實施例,其中:

-圖1示出了該方法的示例的流程圖;

-圖2示出了精細碰撞檢測的實施例;

-圖3示出了粗糙碰撞檢測的實施例;

-圖4示出了用于渲染建模對象的3d組裝的示例的流程圖;

-圖5示出了計算光照效果的示例的流程圖;

-圖6闡明了圖4的示例;

-圖7闡明了圖5的示例;

-圖8示出了通過通信網(wǎng)絡(luò)互連的客戶端和服務(wù)器的示例;

-圖9示出了在客戶端修改3d場景上的視點時在該客戶端和服務(wù)器之間的交互的示例;

-圖10示出了圖8的服務(wù)器或客戶端的示例。

具體實施方式

參照圖1的流程圖,提出了用于設(shè)計建模對象的3d組裝的計算機實現(xiàn)的方法,例如,建模對象的3d組裝的內(nèi)容被存儲在一個或多個服務(wù)器上并被遠程地渲染到至少一個計算機客戶端。該方法包括通過將第二3d建模對象與第一3d建模對象的至少一個光柵圖像合并而在第二計算機(也被稱為客戶端)上渲染建模對象的3d組裝,該至少一個光柵圖像已經(jīng)被從第一計算機(也被稱為服務(wù)器)流式傳送至第二計算機。該方法還包括從第二計算機向第一計算機發(fā)送與第二3d建模對象相關(guān)的第一數(shù)據(jù)以用于在第一3d建模對象和第二3d建模對象之間的接觸計算。該方法包括在第一計算機上計算在第一3d建模對象和第二3d建模對象之間的接觸。

這樣的方法改進了存儲在客戶端的遠程服務(wù)器上的具有形成3d場景的某些資產(chǎn)的該3d場景在客戶端上的遠程顯示,例如該服務(wù)器和客戶端通過計算機網(wǎng)絡(luò)互連,該計算機網(wǎng)絡(luò)可以是但不局限于局域網(wǎng)(lan)、城域網(wǎng)(man)、廣域網(wǎng)(wan)、諸如以太網(wǎng)等等的互連網(wǎng)絡(luò)的集合。

注意到,本發(fā)明的方法依賴于將3d場景劃分為兩個部分:一部分將使用像素流式傳送進行傳輸而另一部分將使用幾何流式傳送進行傳輸。如何做出這一劃分(在哪些將作為視頻進行流式傳送以及哪些將作為幾何結(jié)構(gòu)進行流式傳送之間)由應(yīng)用自行決定,以便取決于其需求而充分利用每一方法。因此,本方法在客戶端和服務(wù)器之間帶來平衡的載荷。由于幾何流式傳送更多地依賴于客戶端而像素流式傳送更多地依賴于服務(wù)器,本方法在中間找到了其位置,這更加有效。如果在應(yīng)用的設(shè)計中的約束允許將某些資產(chǎn)(例如,3d建模對象、材料、紋理、3d模型的動畫、光照、場景圖等等)從作為像素流式傳送的部分移動至作為幾何結(jié)構(gòu)流式傳送的部分并且反之亦然,則該應(yīng)用將能夠動態(tài)地平衡客戶端和服務(wù)器之間的載荷,以使該應(yīng)用適應(yīng)于狀況(適應(yīng)于多種客戶端硬件能力或變化的網(wǎng)絡(luò)條件)。此外,本發(fā)明通過使用像素流式傳送來發(fā)送場景的選擇部分而具有對該選擇部分進行保護的能力。這在協(xié)同工作的上下文中是有利的。舉例來說,用于協(xié)同創(chuàng)作的應(yīng)用,其中一方面客戶端接收作為幾何結(jié)構(gòu)接收的該場景的某些部分的完整知識:他能夠交互、編輯以及將這些資產(chǎn)發(fā)送回服務(wù)器。另一方面,客戶端將不具有通過像素流式傳送接收的部分的完整知識。這允許確保對由像素流式傳送發(fā)送的原始資產(chǎn)的保護,因為它們從來沒有被直接傳輸。舉例來說,用戶僅能夠看到3d建模產(chǎn)品的像素視圖并且沒有意識到形成所述產(chǎn)品的各部分;形成各部分的組裝的部分因此被保護免于用戶的任意修改,而且該組裝的知識同樣被局限于形成視圖的給定像素集合。這有利地提供了知識產(chǎn)權(quán)保護。

該方法進一步允許在客戶端側(cè)上的接觸檢測同時仍受益于上文討論的改進的負載平衡和帶寬消耗。碰撞檢測的計算消耗被第一計算機和第二計算機共享:每個計算機接收由另一計算機已知的3d內(nèi)容集合的簡化表示并在將精煉信息發(fā)送到將執(zhí)行另一階段的另一計算機之前執(zhí)行接觸檢測算法的單個階段。而且,由機器(客戶端或服務(wù)器)發(fā)送的消息僅包含其自身的3d內(nèi)容集合的簡單表示。由于它們回復(fù)給另一個,每一條消息可能包含更精煉的信息,但是更少的數(shù)據(jù)(因為每個機器每次執(zhí)行碰撞檢測算法的一個階段,以丟棄沒有與相對的集合碰撞的內(nèi)容)。在下面的討論中這些優(yōu)點和進一步的優(yōu)點將更加清晰。

該方法是計算機實現(xiàn)的。這意味著該方法的步驟(或者基本上所有步驟)由至少一個計算機或任意類似的系統(tǒng)執(zhí)行。因而,該方法的步驟可能是完全自動地或者半自動地由計算機執(zhí)行。在示例中,該方法的至少某些步驟的觸發(fā)可以通過用戶-計算機交互來執(zhí)行。所要求的用戶-計算機交互的等級可以取決于自動預(yù)知的等級并且與實現(xiàn)用戶愿望的需要相均衡。在示例中,這一等級可以是用戶定義的和/或預(yù)定義的。

舉例來說,用戶可以選擇被渲染的3d場景上的新的視點,并且結(jié)果,根據(jù)該新的視點來觸發(fā)對第一3d建模對象的至少一個新的光柵圖像的計算,并且將該第一3d建模對象的至少一個新的光柵圖像從第一計算機流式傳送到第二計算機。

該方法的計算機實現(xiàn)的典型示例是使用適于這一目的的系統(tǒng)來執(zhí)行該方法。該系統(tǒng)可以包括耦合至存儲器和圖形用戶界面(gui)的處理器,該存儲器其上記錄有包括用于執(zhí)行該方法的指令的計算機程序。該存儲器還可以存儲數(shù)據(jù)庫。該存儲器是適于這種存儲的任意硬件,可能包括多個物理上不同的部件(例如,一個用于程序,并且可能一個用于數(shù)據(jù)庫)。

“數(shù)據(jù)庫”是指被組織用于搜索和檢索的任意數(shù)據(jù)(即,信息)集合(例如以基于諸如sql的預(yù)定的結(jié)構(gòu)化語言的關(guān)系數(shù)據(jù)庫)。當(dāng)存儲在存儲器上時,該數(shù)據(jù)庫允許計算機的快速搜索和檢索。數(shù)據(jù)庫實際上被結(jié)構(gòu)化為促進與多種數(shù)據(jù)處理操作結(jié)合的數(shù)據(jù)的存儲、檢索、修改以及刪除。該數(shù)據(jù)庫可以由可以被分解為記錄的文件或文件集合構(gòu)成,每條記錄由一個或多個字段構(gòu)成。字段是數(shù)據(jù)存儲的基本單元。用戶可能主要通過查詢來檢索數(shù)據(jù)。使用關(guān)鍵字和排序命令,用戶能夠根據(jù)正使用的數(shù)據(jù)庫管理系統(tǒng)的規(guī)則來在眾多記錄中快速地搜索、重新排列、分組和選擇字段,以在特定的數(shù)據(jù)聚集上檢索或創(chuàng)建報告。在該方法的情況下,第一計算機包括用于存儲要在第二計算機上渲染的3d場景的至少一部分資產(chǎn)的數(shù)據(jù)庫。

該方法通常操控資產(chǎn)。這里,術(shù)語資產(chǎn)是指3d建模對象、材料、紋理、3d模型的動畫、燈光、場景圖等等,并且更一般來說術(shù)語資產(chǎn)包括能夠被渲染或?qū)?d場景的渲染具有影響的所有元素。為了簡潔起見,現(xiàn)在將參考建模對象來描述本發(fā)明,應(yīng)該理解,本發(fā)明的方法并不局限于這樣的建模對象,并且它可以使用3d場景的任意資產(chǎn)。建模對象是由存儲在例如數(shù)據(jù)庫中的數(shù)據(jù)定義的任意對象。通過擴展,語句“建模對象”指代該數(shù)據(jù)自身。根據(jù)系統(tǒng)的類型,建模對象可以由不同種類的數(shù)據(jù)定義。該系統(tǒng)可以實際上是cad系統(tǒng)、cae系統(tǒng)、cam系統(tǒng)、pdm系統(tǒng)、plm系統(tǒng)、虛擬世界應(yīng)用、視頻游戲;更一般地,該系統(tǒng)可以是執(zhí)行3d場景及其內(nèi)容-描述局部或完整3d虛擬環(huán)境的各種資產(chǎn)-的顯示的任意3d應(yīng)用。在那些不同的系統(tǒng)中,建模對象由相應(yīng)的數(shù)據(jù)定義。然而,這些系統(tǒng)并不排除其他系統(tǒng),因為建模對象可以由與這些系統(tǒng)的任意組合相對應(yīng)的數(shù)據(jù)來定義。系統(tǒng)因而可以很好地是cad和plm系統(tǒng)兩者,這將通過下文提供的對這樣的系統(tǒng)的定義而變得明顯。

定義建模對象的數(shù)據(jù)包括允許表示該建模對象的數(shù)據(jù)。上文列出的系統(tǒng)可以例如使用邊或線來提供建模對象的表示,在某些情況下使用面或表面。線、邊或表面可以按照多種方式表示,例如,非均勻有理b樣條(nurbs)。特別地,文件包括規(guī)范,據(jù)此可能生成幾何結(jié)構(gòu),它反過來允許生成表示。建模對象的規(guī)范可以被存儲在單個文件或多個文件中。表示建模對象的文件的典型大小,例如在cad系統(tǒng)中,在每部件一兆字節(jié)的范圍內(nèi)。并且建模對象典型地可以是數(shù)千部件的組裝。

在實踐中,建模對象可以是3d建模對象,例如表示諸如部件或部件的組裝的產(chǎn)品,或者可能是產(chǎn)品的組裝。“3d建模對象”是指由允許其3d表示的數(shù)據(jù)建模的任意對象。3d表示允許從所有角度觀察該部件。舉例來說,3d建模對象當(dāng)被3d表示時可以被處置并繞著其任意軸或者繞著在其上顯示該表示的屏幕中的任意軸轉(zhuǎn)動。這明顯排除了2d圖標(biāo),它不是被3d建模的。3d表示的顯示促進了設(shè)計(即,提高了設(shè)計者統(tǒng)計上完成他們的任務(wù)的速度)。這加速了工業(yè)中的制造過程,因為產(chǎn)品的設(shè)計是制造過程的一部分。

3d建模對象可以表示在使用諸如cad軟件方案或cad系統(tǒng)完成其虛擬設(shè)計后要在真實世界中制造的產(chǎn)品的幾何結(jié)構(gòu),例如(諸如機械)部件或部件的組裝,或者更一般地任意剛體組裝(諸如移動機構(gòu))。cad軟件方案允許在多種并且不受限的工業(yè)領(lǐng)域中設(shè)計產(chǎn)品,包括:航空、建筑、建設(shè)、消費類產(chǎn)品、高科技設(shè)備、工業(yè)儀器、運輸、航海和/或近海油/氣生產(chǎn)或運輸。由該方法設(shè)計的3d建模對象因而可以表示可以是任意機械部件的工業(yè)產(chǎn)品,例如陸地車輛的部件(包括例如汽車和輕型卡車裝備、賽車、摩托車、卡車和發(fā)動機裝備、卡車和公共汽車、火車)、飛行器的部件(包括例如機身裝備、航空裝備、推進裝備、防御產(chǎn)品、航線設(shè)備、空間設(shè)備)、海軍運載工具的部件(包括例如海軍裝備、商業(yè)船只、近海裝備、游艇和作業(yè)船、航海裝備)、一般機械部件(包括例如工業(yè)制造機器、重型移動機器或裝備、安裝的裝備、工業(yè)裝備產(chǎn)品、裝配式金屬產(chǎn)品、輪胎制造產(chǎn)品)、機電或電子部件(包括例如消費類電子、安全和/或控制和/或樂器產(chǎn)品、計算和通信裝備、半導(dǎo)體、醫(yī)療設(shè)備和儀器)、消費類產(chǎn)品(包括例如家具、家庭和園藝產(chǎn)品、休閑用品、時尚產(chǎn)品、耐用商品零售商的產(chǎn)品、非耐用商品零售商的產(chǎn)品)、包裝(包括例如食品和飲料以及煙草、美容和個人護理、日用產(chǎn)品包裝)。

plm系統(tǒng)還指適于管理表示物理制造的產(chǎn)品(或者要制造的產(chǎn)品)的建模對象的任意系統(tǒng)。在plm系統(tǒng)中,建模對象因而由適于制造物理對象的數(shù)據(jù)定義。這些可能典型地是尺寸值和/或容許值。對于對象的正確制造,具有這些值確實是更好的。

cam解決方案還指適于管理產(chǎn)品的制造數(shù)據(jù)的任意解決方案,軟件或者硬件。制造數(shù)據(jù)一般包括與要制造的產(chǎn)品、制造過程和要求的資源相關(guān)的數(shù)據(jù)。cam解決方案用于計劃和優(yōu)化產(chǎn)品的整個制造過程。舉例來說,它能夠為cam用戶提供可行性、制造過程的持續(xù)時間或者諸如特定機器人的資源數(shù)量的信息,這可能在制造過程的特定步驟中使用;并且因而允許對管理或要求的投資做出決定。cam是cad過程和可能的cae過程之后的隨后過程。這種cam解決方案由商標(biāo)為的達索系統(tǒng)提供。

cae解決方案還指適于分析建模對象的物理行為的任意解決方案,軟件或者硬件。一種公知并廣泛應(yīng)用的cae技術(shù)是有限元法(fem),它典型地包括將建模對象劃分成能夠通過方程式計算和模擬其物理行為的元素。這種cae解決方案由商標(biāo)為的達索系統(tǒng)提供。另一成長的cae技術(shù)包括在沒有cad幾何結(jié)構(gòu)數(shù)據(jù)的情況下對由來自不同物理領(lǐng)域的多個組件組成的復(fù)雜系統(tǒng)的建模和分析。cae解決方案允許模擬并且因而優(yōu)化、改進和驗證要制造的產(chǎn)品。這種cae解決方案由商標(biāo)為的達索系統(tǒng)提供。

pdm代表產(chǎn)品數(shù)據(jù)管理。pdm解決方案是指適于管理與特定產(chǎn)品相關(guān)的所有類型的數(shù)據(jù)的任意解決方案,軟件或者硬件。pdm解決方案可以由產(chǎn)品生命周期中涉及的所有角色使用:主要是工程師但也包括項目管理者、金融人士、銷售人士和購買者。pdm解決方案一般基于面向產(chǎn)品的數(shù)據(jù)庫。它允許各角色共享他們的產(chǎn)品的一致性數(shù)據(jù)并且因此防止各角色使用相異的數(shù)據(jù)。這種pdm解決方案由商標(biāo)為的達索系統(tǒng)提供。

圖10示出了作為客戶端的計算機的示例。該示例也可以應(yīng)用至服務(wù)器。該示例的客戶端計算機包括連接至內(nèi)部通信總線1000的中央處理單元(cpu)1010,同樣連接至總線的隨機存取存儲器(ram)1070??蛻舳擞嬎銠C進一步具有圖形處理單元(gpu)1110,它與連接至總線的視頻隨機存取存儲器1100相關(guān)聯(lián)。視頻ram1100在本領(lǐng)域中也被稱為幀緩沖器。海量存儲設(shè)備控制器1020管理對于諸如硬驅(qū)1030的海量存儲設(shè)備的訪問。適于有形地體現(xiàn)計算機程序指令和數(shù)據(jù)的海量存儲設(shè)備包括所有形式的非易失性存儲器,舉例來說包括半導(dǎo)體存儲器設(shè)備,諸如eprom、eeprom以及閃存設(shè)備;磁盤,諸如內(nèi)部硬盤和可移動盤;磁-光盤;以及cd-rom盤1040。前述任意設(shè)備可以由專門設(shè)計的asic(專用集成電路)補充或者結(jié)合在該asic中。網(wǎng)絡(luò)適配器1050管理對網(wǎng)絡(luò)1060的訪問??蛻舳擞嬎銠C還可以包括觸覺設(shè)備1090,諸如光標(biāo)控制設(shè)備、鍵盤等。光標(biāo)控制設(shè)備在客戶端計算機中使用以允許用戶選擇性地將光標(biāo)放置在顯示器1080上的任意期望位置。此外,光標(biāo)控制設(shè)備允許用戶選擇多種命令并輸入控制信號。光標(biāo)控制設(shè)備包括多個信號生成設(shè)備以將控制信號輸入至系統(tǒng)。典型地,光標(biāo)控制設(shè)備可以是鼠標(biāo),鼠標(biāo)的按鍵用于產(chǎn)生信號。作為選擇或者此外,客戶端計算機系統(tǒng)可以包括觸敏板和/或觸敏屏。

計算機程序可以包括能夠由計算機執(zhí)行的指令,該指令包括用于使上述系統(tǒng)執(zhí)行所述方法的單元。程序可以被記錄在任意數(shù)據(jù)存儲介質(zhì)上,包括系統(tǒng)的存儲器。程序例如可以被實現(xiàn)在數(shù)字電子電路中,或者在計算機硬件、固件、軟件或它們的組合中。程序可以被實現(xiàn)為裝置,例如有形地體現(xiàn)在機器可讀存儲設(shè)備中以由可編程處理器執(zhí)行的產(chǎn)品。各方法步驟可以由執(zhí)行指令程序的可編程處理器執(zhí)行以通過操作輸入數(shù)據(jù)并產(chǎn)生輸出來執(zhí)行所述方法的功能。處理器因而可以能夠被編程并耦合以從數(shù)據(jù)存儲系統(tǒng)、至少一個輸入設(shè)備和至少一個輸出設(shè)備接收數(shù)據(jù)和指令,或者將數(shù)據(jù)和指令發(fā)送到該數(shù)據(jù)存儲系統(tǒng)、至少一個輸入設(shè)備和至少一個輸出設(shè)備。應(yīng)用程序能夠以高級的面向過程或面向?qū)ο蟮木幊陶Z言實現(xiàn),或者如果需要以匯編語言或機器語言實現(xiàn)。在任意情況下,語言可以是編譯語言或解釋語言。程序可以是完全安裝程序或更新程序。在系統(tǒng)上應(yīng)用所述程序在任意情況下都會獲得用于執(zhí)行所述方法的指令。

所述方法可以包括在制造過程中,制造過程可以包括在執(zhí)行所述方法之后制造與顯示的建模對象相對應(yīng)的物理產(chǎn)品。

返回參考圖1,現(xiàn)在討論用于設(shè)計建模對象的3d組裝的方法的示例。

在步驟s10,由諸如客戶端計算機的第二計算機渲染3d建模對象的3d組裝。通過組合至少兩個3d建模對象來獲得該3d組裝。第一3d建模對象被存儲在第一計算機(例如服務(wù)器)上,該第一計算機將第一3d建模對象的至少一個光柵圖像流式傳送到第二計算機。因而在合并時,該至少一個光柵圖像已經(jīng)被從第一計算機流式傳送至第二計算機。第二3d建模對象被存儲在第三計算機或第一計算機上;參考圖5對此進行討論。

現(xiàn)在參考圖4,討論用于渲染3d組裝的示例。在步驟s100,運行在用戶計算機上的應(yīng)用請求顯示3d組裝,例如,基于選擇要顯示的組裝的用戶動作。用戶計算機也被稱為客戶端或第二計算機,與存儲要顯示的3d組裝的至少某些建模對象的服務(wù)器(也被稱為第一計算機)形成對比。

現(xiàn)在參考圖8,示出了例如通過計算機網(wǎng)絡(luò)連接在一起的服務(wù)器1和客戶端2的示例。計算機網(wǎng)絡(luò)是允許計算機交換數(shù)據(jù)的電信網(wǎng)絡(luò)。它可以是但不局限于lan、man、wan、以太網(wǎng)等等。本發(fā)明的方法可以針對任意種類的計算機網(wǎng)絡(luò)執(zhí)行。仍然參考圖8,描繪了可能請求存儲在服務(wù)器1上的相同3d組裝的顯示,或者請求可能存儲在服務(wù)器1或者第二服務(wù)器3上的另一3d組裝的顯示的第二客戶端4。有趣的是,沒有被存儲在服務(wù)器1上的3d組裝的建模對象能夠被存儲在另一存儲器3上,或者被存儲在執(zhí)行該請求的客戶端2上,或者甚至被存儲在第二客戶端4上。因此,本發(fā)明能夠在客戶端/服務(wù)器模型或點對點模型中執(zhí)行;實際上,能夠由請求3d組裝的顯示的客戶端2訪問的任意計算機1,2,3都能夠存儲要顯示的組裝的建模對象。

返回到圖4,在步驟s102,由服務(wù)器計算第一3d建模對象的至少一個光柵圖像。術(shù)語光柵圖像指代能夠經(jīng)由計算機觀看的點矩陣數(shù)據(jù)結(jié)構(gòu),該點矩陣數(shù)據(jù)結(jié)構(gòu)表示通常為矩形的像素網(wǎng)格或者顏色點。光柵圖像在技術(shù)上通過以像素為單位的該圖像的寬度和高度以及每像素比特數(shù)進行特征化。術(shù)語第一3d建模對象是指形成存儲在服務(wù)器上的3d組裝的一個或多個建模對象。服務(wù)器執(zhí)行本領(lǐng)域公知的計算。舉例來說,服務(wù)器接收應(yīng)用的請求(s100),從其數(shù)據(jù)庫檢索形成該組裝的3d對象,根據(jù)檢索的3d對象計算在3d空間中這些3d對象的像素,然后選擇視點(舉例來說,默認地,或者所述組裝的用戶的最后視點),并且根據(jù)選定的視點獲得光柵圖像。在實踐中,3d渲染引擎生成從特定視點觀看的3d場景的一個或多個光柵圖像,如本領(lǐng)域所公知的;例如,3d渲染引擎使用服務(wù)器的計算處理單元(cpu)計算在3d空間中這些3d對象的像素,并使用服務(wù)器的圖形處理單元以根據(jù)3d空間上的視點來獲得圖像(像素的集合)。在實踐中,最普通的流水線如下。cpu向gpu發(fā)送三角形的列表。然后gpu將在參考坐標(biāo)系中的三角形的頂點坐標(biāo)轉(zhuǎn)換至當(dāng)前視點坐標(biāo)系中的新坐標(biāo)。該三角形的新坐標(biāo)然后被投影在2d空間中并且投影的三角形被轉(zhuǎn)換為形成要被顯示的圖像的像素集合。

在步驟s104,針對在步驟s102獲得的第一3d建模對象的每一個光柵圖像計算深度緩存。術(shù)語深度緩存是指深度緩沖(也被稱為z-緩沖)過程的結(jié)果。深度緩沖或z-緩沖是本領(lǐng)域公知的。每個圖像的深度緩存為該圖像的每個像素存儲該像素的深度(z坐標(biāo))。像素的深度緩存是與光柵圖像的深度緩存具有相同維度的2d陣列(x-y),光柵圖像的深度緩存對于光柵圖像中的每個像素存儲與從這一像素到相機的距離相關(guān)的值。有趣的是,在深度緩存中存儲的值可能不總是點至相機距離的線性函數(shù),然而它總是單調(diào)函數(shù)(大多數(shù)時間為嚴格遞增函數(shù)),如本領(lǐng)域所公知的。能夠使用任意粒度的深度緩存,例如16比特或24比特或32比特深度緩存。在實踐中,選擇更高的可用粒度;一般為32比特深度緩存。

由第一計算機執(zhí)行步驟s102和s104。這暗示著在第一計算機上的圖形渲染能力。步驟s102和s104對于被計算的每個新光柵圖像連續(xù)執(zhí)行。這意味著如果連續(xù)計算了多個光柵圖像,則一個光柵圖像的深度緩存在另一光柵圖像已經(jīng)被計算之后被立即計算。作為選擇,在光柵圖像(例如預(yù)定數(shù)量的光柵圖像)已經(jīng)被計算之后能夠計算一組深度緩存。

然后,在步驟s120,在步驟s102中計算的光柵圖像被從服務(wù)器流式傳送至客戶端;因而,客戶端接收像素圖像的流。流式傳送是指光柵圖像在由服務(wù)器傳送時由客戶端接收并被呈現(xiàn)至該客戶端。在客戶端和服務(wù)器之間創(chuàng)建并開啟通道,例如,該通道可以基于客戶端的請求而創(chuàng)建。并且服務(wù)器通過這一通道來將光柵圖像發(fā)送至客戶端。

光柵圖像和深度緩存可以被一起流式傳送。這意味著客戶端“同時”接收光柵圖像和與它相關(guān)聯(lián)的深度緩存。在那里,語句“同時”意味著在給定時隙中,該給定時隙可以取決于計算機網(wǎng)絡(luò)參數(shù)(帶寬、協(xié)議等等)和狀態(tài)(擁塞、延遲等等)而改變。舉例來說,在五秒鐘的時隙中,客戶端接收光柵圖像并且隨后接收深度緩存。正如已經(jīng)討論的,對于被計算的每個新光柵圖像,連續(xù)執(zhí)行步驟s102和s104,這因此使得更容易對深度緩存與光柵圖像一起進行流式傳送。

光柵圖像和深度緩存可以在單個流中進行流式傳送,也就是說,使用一個流。作為選擇,光柵圖像在第一單獨流中進行流式傳送,而深度緩存在第二單獨流中進行流式傳送。

在實踐中,包括光柵圖像的單個流和/或包括深度緩存的單個流,或者包括光柵圖像和深度緩存兩者的單個流被編碼。該編碼可以是壓縮方案。舉例來說,由于渲染圖像的序列或者深度緩存的序列形成視頻,因此可以使用諸如h.264的標(biāo)準(zhǔn)視頻壓縮方案。有趣的是,h.264壓縮方案可以使用諸如在l.cheng&al.的“real-time3dgraphicsusingstreamingmpeg-4”或者p.fechteler和p.eisert的“acceleratedvideoencodingusingcontextinformationrender”的文檔中描述的那些方法進行增強,它們提供一種方式以直接根據(jù)在場景的渲染期間使用的3d場景信息(深度、相機移動或3d部件移動)而不是使用在標(biāo)準(zhǔn)視頻編解碼器中發(fā)現(xiàn)的計算開銷大的運動估算搜索算法來計算運動向量。d.pajak,r.herzog等的文檔“scalableremoterenderingwithdepthandmotion-flowaugmentedstreaming”提供了一種解決方案以通過考慮渲染圖像和深度緩存是高度相關(guān)的來在單個視頻流中對該渲染圖像和深度緩存兩者進行編碼。有利地,該最后解決方案允許產(chǎn)生包括渲染圖像和深度緩存兩者的單個流,并且它能夠比取決于3d場景在h.264流中獨立編碼的渲染圖像更亮。

要理解的是,需要從服務(wù)器發(fā)送至客戶端(甚至從客戶端發(fā)送至服務(wù)器)的任意數(shù)據(jù)(光柵圖像,深度緩存等等)優(yōu)選地使用流式傳送通道進行發(fā)送。舉例來說,當(dāng)在服務(wù)器上修改3d場景時(例如,3d場景中的新對象,執(zhí)行3d場景上的模擬),該修改被流式傳送至客戶端。在實踐中,客戶端上的用戶與該3d場景交互,使得數(shù)據(jù)不斷地被客戶端接收并被呈現(xiàn)至客戶端。并且當(dāng)用戶不與3d場景交互時(或者當(dāng)3d場景中沒有什么在運動時),被流式傳送的數(shù)據(jù)的量非常低;應(yīng)該理解,通道被保持開啟。

然后,在步驟s130,第二3d建模對象被與流式傳送的至少一個光柵圖像合并。該第二3d建模對象是幾何3d建模對象,并且該客戶端計算機執(zhí)行該合并。合并意味著定義第二3d建模對象的數(shù)據(jù)被渲染“至”通過像素流式傳送發(fā)送的渲染的視圖中。如上文之前討論的,這些數(shù)據(jù)包括允許建模對象的表示的數(shù)據(jù),例如,使用邊或線的表示,在某些情況下使用面或表面。因此,步驟s130暗示著此時在第二計算機上的圖形渲染能力:由客戶端計算第二3d建模對象的圖像并且這一圖像被與一個或多個光柵圖像組合。因此,第二3d建模對象的最新計算的圖像和流式傳送的光柵圖像被聯(lián)合以形成要在第二(客戶端)計算機上被渲染的圖像。第二3d建模對象可以被存儲在客戶端計算機上,或者它能夠被從第三計算機發(fā)送至客戶端計算機。舉例來說,并參考圖8,第二3d建模對象能夠被存儲在另一服務(wù)器3上,或者被存儲在執(zhí)行該請求的客戶端2上,或者甚至被存儲在第二客戶端4上。

合并的結(jié)果是要被渲染的新圖像。該合并因此包括將第二3d建模對象的幾何結(jié)構(gòu)渲染“至”通過像素流式傳送發(fā)送的渲染的視圖中。通過第二計算機將第二3d建模對象的圖像與從光柵圖像流式傳送接收的當(dāng)前光柵圖像進行組合。在實踐中,第二3d建模對象的圖像與光柵圖像具有相同的尺寸(相同的像素長度、像素寬度、以及像素數(shù)量)。

當(dāng)將第二3d建模對象與光柵圖像合并時,選擇第二3d建模對象上的視點以計算第二建模對象的圖像。該視點的選擇可以被默認地執(zhí)行(例如,第二對象的用戶的最后視點),由隨機過程執(zhí)行,使用與針對光柵圖像選擇的視點相同的視點執(zhí)行(例如,在由第一建模對象和第二建模對象共享的參考坐標(biāo)系中提供相機的位置)。

可以通過執(zhí)行逐像素的比較以確定渲染第二3d建模對象的哪些片段來實現(xiàn)光柵圖像和第二3d建模對象的計算的圖像的組合。術(shù)語片段是指可以在渲染圖像上產(chǎn)生像素(繪制或沒有繪制)的3d對象的一部分。這一術(shù)語在本領(lǐng)域中被廣泛使用并且是公知的。每次在第二3d建模對象的片段應(yīng)該在建模對象的3d組裝的渲染圖像的像素上進行繪制時,在從第一計算機流式傳送的深度緩存中的相應(yīng)值和與f至相機的距離相關(guān)的值之間進行比較。如前面所陳述的,在流式傳送的深度緩存中存儲的值與從相機至被流式傳送的渲染圖像中的相應(yīng)像素的距離相關(guān)。因此做出這一逐像素的比較以確定應(yīng)當(dāng)被繪制的第二3d建模對象的片段與來自被流式傳送的第一3d建模對象的至少一個光柵圖像的已經(jīng)被繪制的像素相比距離相機更遠還是更近。這一方法被稱為z-選擇并且允許通過將第二3d建模對象的幾何結(jié)構(gòu)渲染“至”通過像素流式傳送發(fā)送的渲染的視圖中而在第二計算機上顯示3d組裝的視圖。在“像素流”中發(fā)送的深度緩存(或深度圖)因此被用于解決閉塞,即,確定在3d組裝的視圖中每個流的哪些元素是可見的或不可見的。

然后,在步驟s140,計算3d組裝(s30)的視圖上的照明效果以進一步提升3d組裝的渲染圖像的質(zhì)量。術(shù)語照明效果包括第一3d建模對象在第二3d建模對象的可視方面上顯著的光線和陰影,并且反之亦然。因此,計算在像素流的第一3d建模對象和幾何流的第二3d建模對象之間的照明的相互作用(投射光和陰影)。

然后,在步驟s150,建模對象的3d組裝被渲染并被顯示在第二計算機上。這以本領(lǐng)域公知的方式執(zhí)行。

現(xiàn)在參考圖6,討論了如參考圖3的流程圖描述的本發(fā)明的示例。用戶已經(jīng)請求了(s100)在計算機客戶端上顯示包括存儲在第一服務(wù)器上的第一集合s1的兩個3d建模對象(立方體和圓錐體)以及存儲在第二服務(wù)器上的第二集合s2的兩個3d建模對象(圓柱體和圓環(huán))的3d組裝。作為請求的結(jié)果,由第一服務(wù)器計算(s102,s104)s1的光柵圖像r1和深度圖d1(或者深度緩存),并且然后由第一服務(wù)器將包括r1和d1的單個像素流發(fā)送至客戶端,并且由第二服務(wù)器將第二集合s2的幾何流發(fā)送至客戶端。可以預(yù)期其他配置;舉例來說,第一服務(wù)器可以發(fā)送兩個像素流(一個針對r1并且一個針對d1),和/或集合s2可以被存儲在客戶端計算機上。客戶端然后合并這兩個流,計算照明效果,并且遠程地渲染3d組裝r2。

本發(fā)明提高了在客戶端數(shù)量增加的情況下遠程渲染的可伸縮性。舉例來說,能夠提高3d場景中作為被流式傳送為像素的部分與被流式傳送為幾何結(jié)構(gòu)的部分相比的3d對象的數(shù)量,當(dāng)客戶端的數(shù)量增加時這樣做是有利的。因此,本發(fā)明允許取決于客戶端數(shù)量和它們的配置而執(zhí)行像素流式傳送和幾何流式傳送之間的負載平衡。作為另一示例,如果兩個或多個客戶端視點足夠接近,則一種可行的策略是使用幾何流式傳送來發(fā)送與它們接近的資產(chǎn)(如果可能經(jīng)由多播在共同流(mutualstream)中)并且使用像素流式傳送來發(fā)送遠距離的對象;實際上,被流式傳送的圖像具有足夠接近的機會,僅在某些資產(chǎn)的位置中由于視差而存在小的位移,這意味著這些圖像也可以經(jīng)由多播在共同流中進行發(fā)送。另一“負載平衡”策略是對于客戶端更有可能與之交互的對象使用幾何流式傳送,并且使用像素流式傳送來發(fā)送遠距離的對象。有利地,在網(wǎng)絡(luò)中斷的情況下,客戶端將仍然能夠與他更可能交互的對象進行交互??蛻舳藢⒁材軌蚋淖兯囊朁c,因為使用像素流式傳送發(fā)送的部分的失真保持可以接受(與歸因于視差的變形有關(guān))。

現(xiàn)在參考圖5,現(xiàn)在討論建模對象的3d組裝上的照明效果的計算(s140)的示例。在3d計算機圖形學(xué)領(lǐng)域中已經(jīng)開發(fā)了許多技術(shù)來計算這些照明效果作為后處理。這里,后處理是指在轉(zhuǎn)換至像素的rgb空間后計算照明效果,例如,3d組裝的圖像被存儲在幀緩沖器中并且從那里進行后處理。這包括被稱為推遲著色、屏幕空間環(huán)境光閉塞、屏幕空間直接閉塞、屏幕空間局部反射、屏幕空間陰影光線追蹤等等的技術(shù)。這些技術(shù)共享針對每個像素它們需要的至少下述各條信息:表面法線方向和材料性質(zhì)。它們也可能要求與光源相關(guān)的信息(位置、顏色、范圍等等)。

在步驟s400,服務(wù)器接收與第一3d建模對象的至少一個光柵圖像相關(guān)聯(lián)的一個或多個第一光源信息以及與第二3d建模對象相關(guān)聯(lián)的一個或多個第二光源信息。在實踐中,在與傳輸光柵圖像的相同流中傳送第一光源信息。作為選擇,它能夠使用深度緩存的流進行發(fā)送,或者它能夠在自己的單個流中進行發(fā)送。在幾何流中傳送第二光源信息;應(yīng)該理解,它還能夠在它自己的單個流中進行發(fā)送。每個光源的信息至少包括該光源的位置(例如,在由第一建模對象和第二建模對象共享的參考坐標(biāo)系中)。它可以進一步包括但不局限于光源的顏色、光譜分布、照明強度的空間分布。

然后,在步驟s410,通過合并第二3d建模對象與所述至少一個光柵圖像的第一深度緩存來計算第二深度緩存。按照針對第二3d建模對象與光柵圖像的合并相同的方式來執(zhí)行這一合并。

然后,在步驟s420,根據(jù)第二深度緩存來計算法線圖(s410)。該法線圖針對建模對象的3d組裝的每個像素存儲表面法線方向。可以通過向第二深度緩存應(yīng)用卷積濾波器來計算該法線圖。法線圖的該計算可以按照本領(lǐng)域公知的方式來執(zhí)行。計算深度的梯度(使用sobelmask作為濾波器的卷積);這一梯度是在屏幕空間中的法線的粗略近似。然后,這一梯度可以不被從2d空間(屏幕空間)“投射”至參考空間。

然后,在步驟s430,推斷與至少一個光柵圖像合并的第二3d建模對象的每個像素的材料性質(zhì)。這可以通過例如根據(jù)像素顏色或流式傳送來執(zhí)行。作為選擇,該材料性質(zhì)可以直接從包括該第一3d建模對象和第二3d建模對象的服務(wù)器獲得,例如它與光源信息在同一流中進行發(fā)送。

然后,在步驟s440,計算標(biāo)識緩存。根據(jù)3d建模對象的第一集合,客戶端僅知道渲染圖像和深度緩存。如上文所述,照明技術(shù)可能針對每個像素要求深度、表面法線方向、少量材料性質(zhì)。因此需要額外步驟來恢復(fù)這一缺失的信息。這一額外緩存(標(biāo)識緩存)用于存儲針對每個像素的二進制值,該二進制值識別被繪制的像素來自于第一場景的被流式傳送的圖像還是來自于第二集合的3d部件的渲染。從現(xiàn)在開始,知道了每個像素的起源(它們來自于哪個3d對象集合-第一3d建模對象還是第二3d建模對象),使得像素的照明僅考慮來自于另一集合的像素的信息以及與該另一集合相關(guān)聯(lián)的光源。

需要理解,圖5的流程圖僅僅是示例并且可以在不改變照明效果計算的情況下修改各步驟的次序。與圖7相關(guān)地提供另一示例。

客戶端計算機現(xiàn)在具有用于作為始于每個像素的表面法線方向和材料性質(zhì)的后處理的計算照明效果的所有信息。參考圖7,討論如參考圖4和圖5的流程圖所描述的本發(fā)明的示例。圖7是圖3的一種修改的流水線以包括利用后處理技術(shù)的照明校正;之前討論的圖3的各步驟仍然有效。用戶已經(jīng)請求了(s100)在計算機客戶端上顯示包括存儲在第一服務(wù)器上的第一集合s1的兩個3d建模對象(正方體和圓錐體)以及存儲在第二服務(wù)器上的第二集合s2的兩個3d建模對象(圓柱體和圓環(huán))的3d組裝。作為該請求的結(jié)果,由服務(wù)器計算(s102,s104)s1的光柵圖像r1和第一深度圖d1(或者深度緩存),在根據(jù)其已經(jīng)計算了r1的3d場景中識別第一光源l1(被符號化為燈泡)的信息,并且r1、d1和l1已經(jīng)被從第一服務(wù)器流式傳送至第二服務(wù)器。相伴地,由第二服務(wù)器將第二集合s2連同與s2相關(guān)聯(lián)的第二光源l2(同樣被符號化為燈泡)的信息的幾何流式傳送發(fā)送至客戶端??蛻舳巳缓髮@兩個流進行合并,也就是說,客戶端將光柵圖像r1與幾何集合s2合并。作為合并的結(jié)果,獲得3d組裝r2。然后,推斷r2的對象的材料性質(zhì)(s430)。例如在識別在像素和幾何流內(nèi)發(fā)送的材料性質(zhì)時或在分析r2的像素的顏色時執(zhí)行r2的像素的材料性質(zhì)m的推斷。當(dāng)計算材料性質(zhì)時,通過將第二集合s2與d1合并來計算第二深度緩存d2(s410),并且然后計算標(biāo)識緩存i(s430)。根據(jù)d2生成法線圖n(s420)?,F(xiàn)在,客戶端包括用于使用要求r2,d2,i,n,m以及來自s1和s2的光源信息作為輸入的后處理技術(shù)來執(zhí)行照明校正的數(shù)據(jù)。根據(jù)r2生成新圖像r3,其中考慮來自s1的各對象和光源對s2的對象的照明影響(反之亦然)。建模對象的3d組裝r3被渲染并顯示給用戶。

現(xiàn)在參考圖9,討論了當(dāng)客戶端的用戶改變渲染的3d組裝(例如,圖6中的r2和圖7中的r3)上的視點時服務(wù)器和客戶端之間的交互(或通信交換)??蛻舳撕头?wù)器可以是如圖8、15所示的客戶端2和服務(wù)器1。使用至少流式傳送通道來連接客戶端和服務(wù)器。客戶端和服務(wù)器第二計算機包括耦合至存儲器的處理電路??蛻舳诉M一步包括允許用戶在3d場景上操作的圖形用戶界面。第一計算機和第二計算機的每個存儲器具有記錄在其上的用于執(zhí)行圖9所示的交換s600至s660的計算機程序。這意味著服務(wù)器存儲器上的計算機程序和客戶端存儲器上的計算機程序允許執(zhí)行本發(fā)明的方法??蛻舳撕头?wù)器兩者的存儲器上的計算機程序可以相同。

作為選擇,服務(wù)器存儲器上的計算機程序允許創(chuàng)建和/或維護用于對數(shù)據(jù)進行流式傳送的通道,并且它進一步允許執(zhí)行步驟s620至s640;客戶端存儲器上的計算機程序允許創(chuàng)建和/或維護用于對數(shù)據(jù)進行流式傳送的通道,并且它進一步允許執(zhí)行步驟s600至s610以及650至660。在這一選擇中,客戶端和服務(wù)器上的計算機程序不同,但是協(xié)作以執(zhí)行本發(fā)明的方法。

在步驟s600,由用戶在客戶端計算機上選擇顯示的3d組裝上的新視點。這如本領(lǐng)域公知的方式執(zhí)行。具有3d組裝的新選擇的視點的坐標(biāo)的消息被發(fā)送至服務(wù)器s610。服務(wù)器接收該消息以及包含在其中的新坐標(biāo)s620。對于服務(wù)器來說應(yīng)用該新坐標(biāo)是非常容易的操作,這是因為,包括第一3d建模對象的服務(wù)器上的3d場景以及與第二3d建模對象合并的光柵圖像共享相同的坐標(biāo)系;舉例來說,服務(wù)器的圖形處理單元能夠通過直接在3d場景上應(yīng)用該新視點來獲得要被顯示的新像素集合。服務(wù)器根據(jù)該新視點計算第一3d建模對象的新光柵圖像(s630),該新光柵圖像被從服務(wù)器流式傳送至客戶端(s640);并且最終由客戶端接收(s650)。該客戶端將第二3d建模對象與該流式傳送的新光柵圖像合并,并渲染該3d組裝的新視圖(s660)。如參考圖4-7所討論的那樣執(zhí)行步驟s630-s660。

有趣的是,圖9的各步驟僅當(dāng)用戶改變第一集合的3d建模對象的視點時應(yīng)用。實際上,當(dāng)用戶操縱(例如,移動、旋轉(zhuǎn)等等)第二集合的建模對象時,在從其流式傳送第二建模對象的服務(wù)器上不需要執(zhí)行請求,這是因為,客戶端計算機具有用于計算第二建模對象的新圖像的所有數(shù)據(jù)-舉例來說根據(jù)新視點。

返回至圖1,在步驟s20,第二計算機將與第二3d建模對象相關(guān)的第一數(shù)據(jù)發(fā)送至第一計算機以進行在第一3d建模對象和第二3d建模對象之間的接觸計算。術(shù)語接觸包括由3d建模對象建模的兩個物理體之間的沖突或碰撞。沖突或碰撞因此是兩個物理體之間的交叉。術(shù)語接觸還包括咬合,它是指當(dāng)兩個物體接近時被牽引至彼此的效果。它們的表面看起來被磁力粘住,但是剛性體積并不交叉。

在本發(fā)明中,使用所謂的混合流式傳送將建模對象的3d組裝渲染在第二計算機上,其中使用像素流和幾何流來構(gòu)建(在客戶端側(cè))該3d組裝。沒有計算機(客戶端和服務(wù)器)知道作為顯示在第二客戶端(第二計算機)上的3d組裝的3d內(nèi)容的第一3d建模對象和第二3d建模對象兩者的真實幾何結(jié)構(gòu)。然而,在混合流式傳送的這一上下文中,如果服務(wù)器(第一計算機)將像素流式傳送的真實幾何結(jié)構(gòu)發(fā)送至客戶端(第二計算機)或者如果客戶端(第二計算機)將第二3d建模對象的真實幾何結(jié)構(gòu)發(fā)送至服務(wù)器(第一計算機),則損失了混合流式傳送在性能方面的益處。

包括與第二3d建模對象相關(guān)的第一數(shù)據(jù)的消息由第一計算機接收并用于執(zhí)行接觸計算。在實踐中,該第一數(shù)據(jù)包括第二3d建模對象的簡單表示(也被稱為簡單碰撞幾何結(jié)構(gòu)):實際上,第一計算機已經(jīng)擁有了第一3d建模對象的真實幾何結(jié)構(gòu)。該簡單表示是根據(jù)第二3d建模對象的真實幾何結(jié)構(gòu)推導(dǎo)的。簡單表示可以例如是但不局限于3d建模對象的邊界框、包圍球、凸包(也被稱為碰撞外殼、碰撞網(wǎng)格或碰撞幾何結(jié)構(gòu))。

該簡單表示包括簡單表示的尺寸(邊界框的尺寸(高、寬、長))以及該簡單表示在3d組裝的3d空間中的坐標(biāo)(例如,第一3d建模對象以及與第二3d建模對象合并的光柵圖像共享相同的參考坐標(biāo)系)。

在實踐中,該簡單表示(或碰撞幾何結(jié)構(gòu))的坐標(biāo)和尺寸的精確度至少是在從其觀察場景的相機的3d空間中被投射回的渲染的3d組裝的像素的大小。

在服務(wù)器已經(jīng)接收到包括該簡單表示的消息后,它計算在第一3d建模對象和第二3d建模對象之間的接觸(s30)。也就是說,服務(wù)器計算第一3d建模對象和第二3d建模對象的簡單表示之間的可能接觸。在這一步驟s30中,由服務(wù)器執(zhí)行的該計算快速丟棄了3d組裝中明顯不與包含在該消息中的簡單表示碰撞的3d建模對象(例如,第一3d建模對象)。用于該計算的算法取決于接收到的簡單表示的性質(zhì);舉例來說,在o’rourke,joseph(1985),“findingminimalenclosingboxes”,internationaljournalofcomputerandinformationsciences14(3):183-199中討論的算法可以用于邊界框。作為步驟s30的結(jié)果,第一計算機意識到已經(jīng)被渲染在客戶端上的一個或多個3d建模對象可能與第二3d建模對象接觸。

步驟s30可以被考慮為接觸檢測的寬階段并且因此包括在物理實體之間的簡單測試以移除明顯不碰撞的大多數(shù)實體對。這一寬階段是沒有區(qū)別的但是需要很快。能夠使用的通用算法包括但不局限于空間散列、掃描和裁剪、空間分割方法等等。

然后,在步驟s40,服務(wù)器將包括與第一3d建模對象相關(guān)的第二數(shù)據(jù)的新消息發(fā)送至客戶端,該第一3d建模對象與第二對象接觸。在實踐中,這一消息包括在步驟s30中沒有被丟棄的一個或多個第一3d建模對象的簡單表示。

與第一3d建模對象相關(guān)的第二數(shù)據(jù)可以是第一3d建模對象的幾何結(jié)構(gòu)。舉例來說,第二數(shù)據(jù)可以是第一對象的簡化的幾何結(jié)構(gòu),例如凸包。作為選擇,第二數(shù)據(jù)可以是第一3d建模對象的一個或多個深度圖。實際上,本發(fā)明旨在計算與渲染的3d組裝相關(guān)聯(lián)的屏幕空間中的碰撞性質(zhì)(碰撞部分的形狀、滲透向量等等)。在相同屏幕空間中計算的深度圖的集合能夠足以表示物理實體的剛性體積的邊界。這已經(jīng)例如在jang,jeong和han的“gpu-basedimage-spaceapproachtocollisiondetectionamongclosedobjects”中進行了討論。因此,不強制發(fā)送幾何結(jié)構(gòu)或簡化的幾何結(jié)構(gòu),深度圖的集合將允許客戶端確認第一3d建模對象是否與第二3d建模對象接觸。舉例來說,深度圖的集合可以包括從第一3d建模對象的正視圖獲得的深度圖(也就是,根據(jù)當(dāng)前視點的視圖)以及從與當(dāng)前視點相關(guān)的后視圖獲得的另一深度圖。應(yīng)該理解,深度圖的集合可以包括多于兩個的深度圖,特別是當(dāng)?shù)谝?d建模對象復(fù)雜時。

有趣的是,在步驟s20的第一消息中,與第一3d建模對象相關(guān)的第二數(shù)據(jù)能夠比與第二3d建模對象相關(guān)的第一數(shù)據(jù)更復(fù)雜或精確。然而,這并不增加要傳輸?shù)臄?shù)據(jù)量,因為期望在這一消息中存在更少的簡單表示。

該簡單表示的坐標(biāo)和尺寸的精確度至少是從其觀察場景的相機的3d空間中被投射回的渲染的3d組裝的像素的大小。該服務(wù)器知道客戶端的像素大小,例如,客戶端已經(jīng)發(fā)送了這一信息連同與第二3d建模對象相關(guān)的第一數(shù)據(jù)。在第二數(shù)據(jù)是一個或多個深度圖的情況下,精確度是渲染的3d組裝的像素的大小。在與第一3d建模對象相關(guān)的第二數(shù)據(jù)是所述第一對象的簡化幾何結(jié)構(gòu)的情況下,則在第一對象的簡化幾何結(jié)構(gòu)和第一對象的幾何結(jié)構(gòu)之間的差異小于第二計算機上的像素的寬度;這有利地確保了將檢測到第一3d建模對象和第二3d建模對象之間的可能(或潛在)接觸。

有趣的是,包括該簡單表示的消息的發(fā)送并不是由用于執(zhí)行客戶端上的渲染的交換像素和幾何流引起的或者與該交換像素和幾何流同步。這有利地允許獨立于該3d組裝的渲染而觸發(fā)碰撞檢測。因此,服務(wù)器仍將光柵圖像發(fā)送至客戶端,即使第一對象的幾何結(jié)構(gòu)被發(fā)送至客戶端;應(yīng)該理解,可以實現(xiàn)在像素流式傳送和簡單表示的傳輸之間的同步。

接下來,在步驟s50,第二計算機計算第二數(shù)據(jù)和第二3d建模對象之間的可能接觸(也被稱為潛在接觸)。這是接觸檢測的窄階段并且它執(zhí)行在寬階段之后仍可能碰撞的與第一3d建模對象相關(guān)的第二數(shù)據(jù)和第二3d建模對象之間的測試。這些測試更為精確。通用算法包括但不局限于分離軸理論和gilbert-johnson-keerthi距離算法。作為步驟s50的結(jié)果,如果沒有檢測到與包含在由服務(wù)器發(fā)送的消息中的第二數(shù)據(jù)的接觸,則丟棄該第二建模對象。

在不存在由第二計算機計算的接觸的情況下,不存在3d組裝的新渲染。

如果第二計算機計算出第一3d建模對象和第二3d建模對象之間的接觸,則根據(jù)該接觸計算再次執(zhí)行3d組裝的渲染。3d組裝的這一新渲染可以包括第二3d建模對象被移動(s60)使得在第一3d建模對象和第二3d建模對象之間沒有更多的接觸:因此滿足了兩個對象之間的約束(沒有接觸)。作為選擇,3d組裝的新渲染可以包括接觸在3d組裝上的顯示,例如,兩個對象之間的接觸區(qū)使用特定顏色被渲染或者閃爍。此外,可以計算碰撞對象的形狀、每對碰撞對象的碰撞副本和滲透向量;舉例來說,擴展多變曲線算法(expandingpolytopealgorithm)是與gilbert-johnson-keerthi距離算法相關(guān)的通用算法。

需要理解,窄階段可以由服務(wù)器執(zhí)行。然而,在客戶端上執(zhí)行窄階段是有利的,這是因為,在客戶端和服務(wù)器之間需要交換更少消息;尤其是因為,服務(wù)器不知道第二3d建模對象的幾何數(shù)據(jù)。

圖2示出了與圖6的示例相關(guān)的參考圖1討論的寬階段和窄階段。寬階段在第一計算機上執(zhí)行,該第一計算機從第二計算機接收邊界框信息,例如,3d建模對象的第二集合s2的圓環(huán)和圓柱體的邊界框的3d組裝r2中的大小和方向。第一計算機計算包括兩個第一3d建模對象的第一集合s1的子集s’1。子集s’1包括可能與s2的對象接觸的3d建模對象。第一計算機然后將具有s’1的3d建模對象的簡單表示的消息發(fā)送至第二計算機。需要理解,第一計算機可以發(fā)送s1的3d建模對象的完整表示。簡單表示優(yōu)選地是幾何數(shù)據(jù)的近似,使得s’1的3d建模對象的幾何數(shù)據(jù)和它們的簡單表示之間的距離小于第二計算機的像素的距離。該距離可以是但不局限于歐氏距離。這確保了與s’1的對象相關(guān)的第二數(shù)據(jù)和第二對象之間的接觸(如果存在)的檢測。

圖3示出了粗糙碰撞檢測的示例。在這一示例中,僅發(fā)生了寬階段,它與圖2的寬階段相同。第二計算機通過網(wǎng)絡(luò)向第一計算機發(fā)送消息,并且這一消息包含第二3d建模對象的簡單表示。在接收到這一第一表示后,第一計算機執(zhí)行計算以快速丟棄與包含在該消息中的簡單表示明顯不接觸的一個或多個3d建模對象(例如,第一3d建模對象),并最終解決該碰撞。取決于接觸計算的目的(例如,顯示碰撞部分(沖突)或移動對象以遵從固體約束),服務(wù)器可以進一步計算碰撞的3d建模對象的形狀、每一對碰撞的3d建模對象的碰撞副本和滲透向量。然后,服務(wù)器將第二消息通過網(wǎng)絡(luò)發(fā)送回第二計算機。這一消息包含先前計算步驟的結(jié)果。該消息因此可以包括表示接觸的形狀的網(wǎng)格(簡單的幾何表示),或者它可以簡單地包括這一形狀的渲染圖像,或者與第一3d建模對象的實體接觸碰撞的第二3d建模對象的每個實體的碰撞副本和滲透向量。最后,如前面參考圖4-7所討論的,客戶端計算機可以在渲染的3d組裝上顯示第二3d建模對象(3d組裝因此被重新渲染或再次渲染)。作為選擇,客戶端能夠在產(chǎn)生渲染的3d建模組裝之前移動該第二3d建模對象以遵從固體約束。有利地,僅移動第二3d建模對象并不要求新發(fā)送第一3d建模對象的光柵圖像,這是因為客戶端擁有第二3d建模對象的所有數(shù)據(jù),這使得使用新位置計算第二3d建模對象更加容易。

雖然已經(jīng)參考示例性實施例特別示出和描述了本發(fā)明,但是本領(lǐng)域技術(shù)人員將理解,在不脫離由附加的權(quán)利要求包含的本發(fā)明范圍的情況下,可在其中對形式和細節(jié)做出多種改變。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1