本發(fā)明涉及計(jì)算機(jī)程序和系統(tǒng)的領(lǐng)域,并且更具體地涉及用于設(shè)計(jì)建模對(duì)象的3d組裝的方法、系統(tǒng)和程序。
背景技術(shù):
在計(jì)算機(jī)輔助設(shè)計(jì)(cad)、計(jì)算機(jī)輔助工程(cae)、計(jì)算機(jī)輔助制造(cam)、虛擬世界、線上視頻游戲的上下文中以及更一般地在3d在線應(yīng)用的上下文中,三維(3d)環(huán)境(也被稱為3d場(chǎng)景)及其內(nèi)容,描述局部或完整3d虛擬環(huán)境的多種資產(chǎn),的顯示仍然是一種挑戰(zhàn)。該3d場(chǎng)景包括3d模型,其中每一個(gè)3d模型是一種資產(chǎn)并且具有包括多邊形網(wǎng)格、樣條曲面、構(gòu)造實(shí)體幾何等等的通常表示。材料和紋理,以及3d模型的動(dòng)畫(huà)、光線、場(chǎng)景圖,同樣可以是3d場(chǎng)景的資產(chǎn)。持有該資產(chǎn)的計(jì)算機(jī)被稱為內(nèi)容服務(wù)器。從特定視點(diǎn)(也被稱為虛擬相機(jī))觀看的這一3d場(chǎng)景的渲染圖像可以被顯示在第二計(jì)算機(jī)上。這一遠(yuǎn)程渲染過(guò)程典型地用于云游戲、虛擬地球、虛擬世界。在其上執(zhí)行這一遠(yuǎn)程渲染的該第二計(jì)算機(jī)被稱為客戶端。
3d在線應(yīng)用包括被稱為3d渲染引擎的軟件組件,以便通過(guò)考慮3d投影和多個(gè)光照效果(陰影、反射等)來(lái)生成從特定視點(diǎn)觀看的3d場(chǎng)景的一個(gè)或多個(gè)圖片。為了達(dá)成其目標(biāo),這樣的3d在線應(yīng)用必須在給定時(shí)刻將3d場(chǎng)景的信息從服務(wù)器傳輸至客戶端。
基本上存在兩種場(chǎng)景用于執(zhí)行3d場(chǎng)景的遠(yuǎn)程渲染。第一種場(chǎng)景在于直接將3d內(nèi)容從服務(wù)器發(fā)送至客戶端并且這一個(gè)客戶端執(zhí)行渲染步驟。這將被稱為幾何流式傳送(geometrystreaming)。這一方法通常描述虛擬世界如何工作。第二種場(chǎng)景包括執(zhí)行該渲染步驟并將結(jié)果(靜態(tài)圖像或視頻流)發(fā)送至客戶端的服務(wù)器。這將被稱為像素流式傳送(pixelstreaming)。這一方法通常描述遠(yuǎn)程渲染和云游戲如何工作。
幾何流式傳送可以使用很多策略來(lái)傳輸3d場(chǎng)景的內(nèi)容。一種策略的示例是細(xì)節(jié)等級(jí)概念:針對(duì)每一個(gè)資產(chǎn),根據(jù)可見(jiàn)性計(jì)算推斷不妨礙最終渲染的整體質(zhì)量的最小質(zhì)量等級(jí)。如果客戶端緩存中的資產(chǎn)版本沒(méi)有達(dá)到要求的質(zhì)量等級(jí),則服務(wù)器發(fā)送細(xì)化(通常是在要求的版本和客戶端緩存中的版本之間的差別)。在這樣的策略中涉及的技術(shù)的示例是遞進(jìn)網(wǎng)格、地形位移映射、基于體素的點(diǎn)云、細(xì)節(jié)的層次等級(jí)。
在像素流式傳送的情況下,傳輸?shù)臄?shù)據(jù)是通常使用標(biāo)準(zhǔn)壓縮方案(用于圖像的jpeg/jpeg2000以及用于視頻的h.264)進(jìn)行壓縮的圖片或視頻。存在某些變形以將計(jì)算分布在多臺(tái)計(jì)算機(jī)上。在3d計(jì)算機(jī)圖形學(xué)中,它是指用于將3d場(chǎng)景投影至虛擬相機(jī)的位置的2d矩形。視口是屏幕中用于顯示要示出的整幅圖像的一部分的區(qū)域。該應(yīng)用可以對(duì)視口進(jìn)行切分并且將渲染每一部分(較小幀)的責(zé)任分配至多臺(tái)計(jì)算機(jī)。在另一變形中,該應(yīng)用能夠?qū)?d場(chǎng)景進(jìn)行切分并將渲染每一部分(較小的資產(chǎn)集合)的責(zé)任分配至多臺(tái)計(jì)算機(jī)。
幾何流式傳送和像素流式傳送不同地處理3d在線應(yīng)用遇到的問(wèn)題。它們具有如現(xiàn)在所解釋的它們自身的缺點(diǎn)和它們自身的限制。
幾何流式傳送和像素流式傳送隨著越來(lái)越多的客戶端而進(jìn)行不同的調(diào)整。像素流式傳送非常不利,因?yàn)橐诜?wù)器側(cè)上進(jìn)行大部分計(jì)算(包括渲染)。因而,要求的服務(wù)器的數(shù)量隨著客戶端數(shù)量快速增長(zhǎng)。由于每個(gè)客戶端很少共享相同的視點(diǎn),因此難于找到能夠從一個(gè)客戶端至另一個(gè)客戶端被重復(fù)使用的計(jì)算結(jié)果。幾何流式傳送由于在服務(wù)器側(cè)上要求更少的計(jì)算而調(diào)整得更好。然而,通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)發(fā)送幾何結(jié)構(gòu)要消耗網(wǎng)絡(luò)的帶寬并通常在客戶端計(jì)算機(jī)上渲染的3d場(chǎng)景上涉及遲延-對(duì)于應(yīng)用的較少反應(yīng)。
幾何流式傳送和像素流式傳送涉及客戶端硬件需求。如上文所提到的,像素流式傳送在客戶端側(cè)上僅具有少量計(jì)算開(kāi)銷,而幾何流式傳送在客戶端側(cè)上要求某些3d顯示能力。雖然大多數(shù)光照設(shè)備現(xiàn)在受益于3d顯示的硬件加速,但它們的能力可能是相對(duì)受限的,這可能導(dǎo)致不太真實(shí)的圖片或?qū)τ趹?yīng)用的較少反應(yīng)。
幾何流式傳送和像素流式傳送兩者都具有明顯的帶寬消耗并要求網(wǎng)絡(luò)可靠性。很多有效的率失真算法可以由像素流式傳送使用以確保帶寬的公平消耗。然而,對(duì)視頻進(jìn)行流式傳送與其他應(yīng)用相比較通常是相當(dāng)昂貴的。如果可用帶寬突然下降,則發(fā)送的圖像質(zhì)量可能被相應(yīng)降低。在網(wǎng)絡(luò)中斷的情況下,客戶端將不能夠改變它的視點(diǎn)或者與3d場(chǎng)景交互。如前面所介紹的,幾何流式傳送更可能經(jīng)歷帶寬使用的峰值,導(dǎo)致帶寬飽和以及網(wǎng)絡(luò)錯(cuò)誤。必須在該應(yīng)用的設(shè)計(jì)上(細(xì)節(jié)等級(jí)或lod的使用)以及在3d場(chǎng)景的設(shè)計(jì)上(場(chǎng)景圖的不同區(qū)域中的信息量必須被平衡)做出額外的努力以減輕這一效果。如果可用帶寬突然下降,帶寬飽和將出現(xiàn)得更多,常常導(dǎo)致在客戶端視野中該場(chǎng)景的某些部分丟失或惡化。在網(wǎng)絡(luò)中斷的情況下,該客戶端仍然能夠改變它的視點(diǎn)并且與已經(jīng)被發(fā)送的該場(chǎng)景的元素交互。
像素流式傳送不允許對(duì)顯示于客戶端上的3d建模對(duì)象/在顯示于客戶端上的3d建模對(duì)象之間執(zhí)行諸如碰撞檢測(cè)、沖突的可視化提示的顯示、將對(duì)象彼此間咬合或者模擬剛體接觸的操作。實(shí)際上,客戶端并不具有3d建模對(duì)象的3d內(nèi)容并且僅渲染由服務(wù)器計(jì)算的表示。幾何流式傳送允許客戶端執(zhí)行這樣的操作;然而,客戶端的計(jì)算資源受限并且它們已經(jīng)被用于渲染3d場(chǎng)景。接觸和碰撞檢測(cè)算法被良好地開(kāi)發(fā):例如在視頻游戲中,模擬固體動(dòng)力學(xué)的需求目前是常見(jiàn)的并且通過(guò)被稱為“物理引擎”的組件實(shí)現(xiàn)。這一組件需要執(zhí)行包括碰撞檢測(cè)的數(shù)個(gè)任務(wù)。
在這一上下文中,仍然存在對(duì)于在連接至服務(wù)器的客戶端上執(zhí)行3d場(chǎng)景渲染的改進(jìn)方法的需要。優(yōu)選地,該遠(yuǎn)程渲染允許對(duì)3d場(chǎng)景的3d建模對(duì)象/在3d場(chǎng)景的3d建模對(duì)象之間執(zhí)行操作。
技術(shù)實(shí)現(xiàn)要素:
因此提供了一種用于設(shè)計(jì)建模對(duì)象的3d組裝的計(jì)算機(jī)實(shí)現(xiàn)的方法。該方法包括:
-通過(guò)將第二3d建模對(duì)象與第一3d建模對(duì)象的至少一個(gè)光柵圖像合并而在第二計(jì)算機(jī)上渲染建模對(duì)象的3d組裝,該至少一個(gè)光柵圖像已經(jīng)從第一計(jì)算機(jī)流至第二計(jì)算機(jī);
-從第二計(jì)算機(jī)向第一計(jì)算機(jī)發(fā)送與該第二3d建模對(duì)象相關(guān)的第一數(shù)據(jù)以用于在第一和第二3d建模對(duì)象之間的接觸計(jì)算;以及
-在第一計(jì)算機(jī)上計(jì)算第一和第二3d建模對(duì)象之間的接觸。
該方法可能包括下面的一個(gè)或多個(gè):
-從第一計(jì)算機(jī)向第二計(jì)算機(jī)發(fā)送第二數(shù)據(jù)以根據(jù)該接觸計(jì)算再次渲染建模對(duì)象的3d組裝;
-第一計(jì)算機(jī)向第二計(jì)算機(jī)發(fā)送與在計(jì)算步驟中被確定與第二對(duì)象接觸的第一3d建模相關(guān)的第二數(shù)據(jù);
-與第一3d建模對(duì)象相關(guān)的第二數(shù)據(jù)包括第一對(duì)象的幾何結(jié)構(gòu);
-與第一3d建模對(duì)象相關(guān)的第二數(shù)據(jù)包括第一對(duì)象簡(jiǎn)化的幾何結(jié)構(gòu);
-與第一3d建模對(duì)象相關(guān)的第二數(shù)據(jù)包括第一對(duì)象簡(jiǎn)化的幾何結(jié)構(gòu)并且第一對(duì)象的簡(jiǎn)化的幾何結(jié)構(gòu)與第一對(duì)象的幾何結(jié)構(gòu)之間的差異小于第二計(jì)算機(jī)的一個(gè)像素的寬度;
-與第一3d建模對(duì)象相關(guān)的第二數(shù)據(jù)包括第一3d建模對(duì)象的兩個(gè)或多個(gè)深度圖;
-在第二計(jì)算機(jī)上計(jì)算第二數(shù)據(jù)和第二3d建模對(duì)象之間的可能接觸;
-接觸是碰撞或咬合。
-根據(jù)接觸計(jì)算的結(jié)果移動(dòng)第二對(duì)象。
進(jìn)一步提供了包括執(zhí)行上述方法的指令的計(jì)算機(jī)程序。
進(jìn)一步提供了其上記錄有上述計(jì)算機(jī)程序的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。
進(jìn)一步提供了一種包括耦合至存儲(chǔ)器和圖形用戶界面的處理電路的系統(tǒng),該存儲(chǔ)器其上記錄有上述計(jì)算機(jī)程序。
附圖說(shuō)明
現(xiàn)在將借助非限制性示例并參考附圖來(lái)描述本發(fā)明的實(shí)施例,其中:
-圖1示出了該方法的示例的流程圖;
-圖2示出了精細(xì)碰撞檢測(cè)的實(shí)施例;
-圖3示出了粗糙碰撞檢測(cè)的實(shí)施例;
-圖4示出了用于渲染建模對(duì)象的3d組裝的示例的流程圖;
-圖5示出了計(jì)算光照效果的示例的流程圖;
-圖6闡明了圖4的示例;
-圖7闡明了圖5的示例;
-圖8示出了通過(guò)通信網(wǎng)絡(luò)互連的客戶端和服務(wù)器的示例;
-圖9示出了在客戶端修改3d場(chǎng)景上的視點(diǎn)時(shí)在該客戶端和服務(wù)器之間的交互的示例;
-圖10示出了圖8的服務(wù)器或客戶端的示例。
具體實(shí)施方式
參照?qǐng)D1的流程圖,提出了用于設(shè)計(jì)建模對(duì)象的3d組裝的計(jì)算機(jī)實(shí)現(xiàn)的方法,例如,建模對(duì)象的3d組裝的內(nèi)容被存儲(chǔ)在一個(gè)或多個(gè)服務(wù)器上并被遠(yuǎn)程地渲染到至少一個(gè)計(jì)算機(jī)客戶端。該方法包括通過(guò)將第二3d建模對(duì)象與第一3d建模對(duì)象的至少一個(gè)光柵圖像合并而在第二計(jì)算機(jī)(也被稱為客戶端)上渲染建模對(duì)象的3d組裝,該至少一個(gè)光柵圖像已經(jīng)被從第一計(jì)算機(jī)(也被稱為服務(wù)器)流式傳送至第二計(jì)算機(jī)。該方法還包括從第二計(jì)算機(jī)向第一計(jì)算機(jī)發(fā)送與第二3d建模對(duì)象相關(guān)的第一數(shù)據(jù)以用于在第一3d建模對(duì)象和第二3d建模對(duì)象之間的接觸計(jì)算。該方法包括在第一計(jì)算機(jī)上計(jì)算在第一3d建模對(duì)象和第二3d建模對(duì)象之間的接觸。
這樣的方法改進(jìn)了存儲(chǔ)在客戶端的遠(yuǎn)程服務(wù)器上的具有形成3d場(chǎng)景的某些資產(chǎn)的該3d場(chǎng)景在客戶端上的遠(yuǎn)程顯示,例如該服務(wù)器和客戶端通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)互連,該計(jì)算機(jī)網(wǎng)絡(luò)可以是但不局限于局域網(wǎng)(lan)、城域網(wǎng)(man)、廣域網(wǎng)(wan)、諸如以太網(wǎng)等等的互連網(wǎng)絡(luò)的集合。
注意到,本發(fā)明的方法依賴于將3d場(chǎng)景劃分為兩個(gè)部分:一部分將使用像素流式傳送進(jìn)行傳輸而另一部分將使用幾何流式傳送進(jìn)行傳輸。如何做出這一劃分(在哪些將作為視頻進(jìn)行流式傳送以及哪些將作為幾何結(jié)構(gòu)進(jìn)行流式傳送之間)由應(yīng)用自行決定,以便取決于其需求而充分利用每一方法。因此,本方法在客戶端和服務(wù)器之間帶來(lái)平衡的載荷。由于幾何流式傳送更多地依賴于客戶端而像素流式傳送更多地依賴于服務(wù)器,本方法在中間找到了其位置,這更加有效。如果在應(yīng)用的設(shè)計(jì)中的約束允許將某些資產(chǎn)(例如,3d建模對(duì)象、材料、紋理、3d模型的動(dòng)畫(huà)、光照、場(chǎng)景圖等等)從作為像素流式傳送的部分移動(dòng)至作為幾何結(jié)構(gòu)流式傳送的部分并且反之亦然,則該應(yīng)用將能夠動(dòng)態(tài)地平衡客戶端和服務(wù)器之間的載荷,以使該應(yīng)用適應(yīng)于狀況(適應(yīng)于多種客戶端硬件能力或變化的網(wǎng)絡(luò)條件)。此外,本發(fā)明通過(guò)使用像素流式傳送來(lái)發(fā)送場(chǎng)景的選擇部分而具有對(duì)該選擇部分進(jìn)行保護(hù)的能力。這在協(xié)同工作的上下文中是有利的。舉例來(lái)說(shuō),用于協(xié)同創(chuàng)作的應(yīng)用,其中一方面客戶端接收作為幾何結(jié)構(gòu)接收的該場(chǎng)景的某些部分的完整知識(shí):他能夠交互、編輯以及將這些資產(chǎn)發(fā)送回服務(wù)器。另一方面,客戶端將不具有通過(guò)像素流式傳送接收的部分的完整知識(shí)。這允許確保對(duì)由像素流式傳送發(fā)送的原始資產(chǎn)的保護(hù),因?yàn)樗鼈儚膩?lái)沒(méi)有被直接傳輸。舉例來(lái)說(shuō),用戶僅能夠看到3d建模產(chǎn)品的像素視圖并且沒(méi)有意識(shí)到形成所述產(chǎn)品的各部分;形成各部分的組裝的部分因此被保護(hù)免于用戶的任意修改,而且該組裝的知識(shí)同樣被局限于形成視圖的給定像素集合。這有利地提供了知識(shí)產(chǎn)權(quán)保護(hù)。
該方法進(jìn)一步允許在客戶端側(cè)上的接觸檢測(cè)同時(shí)仍受益于上文討論的改進(jìn)的負(fù)載平衡和帶寬消耗。碰撞檢測(cè)的計(jì)算消耗被第一計(jì)算機(jī)和第二計(jì)算機(jī)共享:每個(gè)計(jì)算機(jī)接收由另一計(jì)算機(jī)已知的3d內(nèi)容集合的簡(jiǎn)化表示并在將精煉信息發(fā)送到將執(zhí)行另一階段的另一計(jì)算機(jī)之前執(zhí)行接觸檢測(cè)算法的單個(gè)階段。而且,由機(jī)器(客戶端或服務(wù)器)發(fā)送的消息僅包含其自身的3d內(nèi)容集合的簡(jiǎn)單表示。由于它們回復(fù)給另一個(gè),每一條消息可能包含更精煉的信息,但是更少的數(shù)據(jù)(因?yàn)槊總€(gè)機(jī)器每次執(zhí)行碰撞檢測(cè)算法的一個(gè)階段,以丟棄沒(méi)有與相對(duì)的集合碰撞的內(nèi)容)。在下面的討論中這些優(yōu)點(diǎn)和進(jìn)一步的優(yōu)點(diǎn)將更加清晰。
該方法是計(jì)算機(jī)實(shí)現(xiàn)的。這意味著該方法的步驟(或者基本上所有步驟)由至少一個(gè)計(jì)算機(jī)或任意類似的系統(tǒng)執(zhí)行。因而,該方法的步驟可能是完全自動(dòng)地或者半自動(dòng)地由計(jì)算機(jī)執(zhí)行。在示例中,該方法的至少某些步驟的觸發(fā)可以通過(guò)用戶-計(jì)算機(jī)交互來(lái)執(zhí)行。所要求的用戶-計(jì)算機(jī)交互的等級(jí)可以取決于自動(dòng)預(yù)知的等級(jí)并且與實(shí)現(xiàn)用戶愿望的需要相均衡。在示例中,這一等級(jí)可以是用戶定義的和/或預(yù)定義的。
舉例來(lái)說(shuō),用戶可以選擇被渲染的3d場(chǎng)景上的新的視點(diǎn),并且結(jié)果,根據(jù)該新的視點(diǎn)來(lái)觸發(fā)對(duì)第一3d建模對(duì)象的至少一個(gè)新的光柵圖像的計(jì)算,并且將該第一3d建模對(duì)象的至少一個(gè)新的光柵圖像從第一計(jì)算機(jī)流式傳送到第二計(jì)算機(jī)。
該方法的計(jì)算機(jī)實(shí)現(xiàn)的典型示例是使用適于這一目的的系統(tǒng)來(lái)執(zhí)行該方法。該系統(tǒng)可以包括耦合至存儲(chǔ)器和圖形用戶界面(gui)的處理器,該存儲(chǔ)器其上記錄有包括用于執(zhí)行該方法的指令的計(jì)算機(jī)程序。該存儲(chǔ)器還可以存儲(chǔ)數(shù)據(jù)庫(kù)。該存儲(chǔ)器是適于這種存儲(chǔ)的任意硬件,可能包括多個(gè)物理上不同的部件(例如,一個(gè)用于程序,并且可能一個(gè)用于數(shù)據(jù)庫(kù))。
“數(shù)據(jù)庫(kù)”是指被組織用于搜索和檢索的任意數(shù)據(jù)(即,信息)集合(例如以基于諸如sql的預(yù)定的結(jié)構(gòu)化語(yǔ)言的關(guān)系數(shù)據(jù)庫(kù))。當(dāng)存儲(chǔ)在存儲(chǔ)器上時(shí),該數(shù)據(jù)庫(kù)允許計(jì)算機(jī)的快速搜索和檢索。數(shù)據(jù)庫(kù)實(shí)際上被結(jié)構(gòu)化為促進(jìn)與多種數(shù)據(jù)處理操作結(jié)合的數(shù)據(jù)的存儲(chǔ)、檢索、修改以及刪除。該數(shù)據(jù)庫(kù)可以由可以被分解為記錄的文件或文件集合構(gòu)成,每條記錄由一個(gè)或多個(gè)字段構(gòu)成。字段是數(shù)據(jù)存儲(chǔ)的基本單元。用戶可能主要通過(guò)查詢來(lái)檢索數(shù)據(jù)。使用關(guān)鍵字和排序命令,用戶能夠根據(jù)正使用的數(shù)據(jù)庫(kù)管理系統(tǒng)的規(guī)則來(lái)在眾多記錄中快速地搜索、重新排列、分組和選擇字段,以在特定的數(shù)據(jù)聚集上檢索或創(chuàng)建報(bào)告。在該方法的情況下,第一計(jì)算機(jī)包括用于存儲(chǔ)要在第二計(jì)算機(jī)上渲染的3d場(chǎng)景的至少一部分資產(chǎn)的數(shù)據(jù)庫(kù)。
該方法通常操控資產(chǎn)。這里,術(shù)語(yǔ)資產(chǎn)是指3d建模對(duì)象、材料、紋理、3d模型的動(dòng)畫(huà)、燈光、場(chǎng)景圖等等,并且更一般來(lái)說(shuō)術(shù)語(yǔ)資產(chǎn)包括能夠被渲染或?qū)?d場(chǎng)景的渲染具有影響的所有元素。為了簡(jiǎn)潔起見(jiàn),現(xiàn)在將參考建模對(duì)象來(lái)描述本發(fā)明,應(yīng)該理解,本發(fā)明的方法并不局限于這樣的建模對(duì)象,并且它可以使用3d場(chǎng)景的任意資產(chǎn)。建模對(duì)象是由存儲(chǔ)在例如數(shù)據(jù)庫(kù)中的數(shù)據(jù)定義的任意對(duì)象。通過(guò)擴(kuò)展,語(yǔ)句“建模對(duì)象”指代該數(shù)據(jù)自身。根據(jù)系統(tǒng)的類型,建模對(duì)象可以由不同種類的數(shù)據(jù)定義。該系統(tǒng)可以實(shí)際上是cad系統(tǒng)、cae系統(tǒng)、cam系統(tǒng)、pdm系統(tǒng)、plm系統(tǒng)、虛擬世界應(yīng)用、視頻游戲;更一般地,該系統(tǒng)可以是執(zhí)行3d場(chǎng)景及其內(nèi)容-描述局部或完整3d虛擬環(huán)境的各種資產(chǎn)-的顯示的任意3d應(yīng)用。在那些不同的系統(tǒng)中,建模對(duì)象由相應(yīng)的數(shù)據(jù)定義。然而,這些系統(tǒng)并不排除其他系統(tǒng),因?yàn)榻?duì)象可以由與這些系統(tǒng)的任意組合相對(duì)應(yīng)的數(shù)據(jù)來(lái)定義。系統(tǒng)因而可以很好地是cad和plm系統(tǒng)兩者,這將通過(guò)下文提供的對(duì)這樣的系統(tǒng)的定義而變得明顯。
定義建模對(duì)象的數(shù)據(jù)包括允許表示該建模對(duì)象的數(shù)據(jù)。上文列出的系統(tǒng)可以例如使用邊或線來(lái)提供建模對(duì)象的表示,在某些情況下使用面或表面。線、邊或表面可以按照多種方式表示,例如,非均勻有理b樣條(nurbs)。特別地,文件包括規(guī)范,據(jù)此可能生成幾何結(jié)構(gòu),它反過(guò)來(lái)允許生成表示。建模對(duì)象的規(guī)范可以被存儲(chǔ)在單個(gè)文件或多個(gè)文件中。表示建模對(duì)象的文件的典型大小,例如在cad系統(tǒng)中,在每部件一兆字節(jié)的范圍內(nèi)。并且建模對(duì)象典型地可以是數(shù)千部件的組裝。
在實(shí)踐中,建模對(duì)象可以是3d建模對(duì)象,例如表示諸如部件或部件的組裝的產(chǎn)品,或者可能是產(chǎn)品的組裝?!?d建模對(duì)象”是指由允許其3d表示的數(shù)據(jù)建模的任意對(duì)象。3d表示允許從所有角度觀察該部件。舉例來(lái)說(shuō),3d建模對(duì)象當(dāng)被3d表示時(shí)可以被處置并繞著其任意軸或者繞著在其上顯示該表示的屏幕中的任意軸轉(zhuǎn)動(dòng)。這明顯排除了2d圖標(biāo),它不是被3d建模的。3d表示的顯示促進(jìn)了設(shè)計(jì)(即,提高了設(shè)計(jì)者統(tǒng)計(jì)上完成他們的任務(wù)的速度)。這加速了工業(yè)中的制造過(guò)程,因?yàn)楫a(chǎn)品的設(shè)計(jì)是制造過(guò)程的一部分。
3d建模對(duì)象可以表示在使用諸如cad軟件方案或cad系統(tǒng)完成其虛擬設(shè)計(jì)后要在真實(shí)世界中制造的產(chǎn)品的幾何結(jié)構(gòu),例如(諸如機(jī)械)部件或部件的組裝,或者更一般地任意剛體組裝(諸如移動(dòng)機(jī)構(gòu))。cad軟件方案允許在多種并且不受限的工業(yè)領(lǐng)域中設(shè)計(jì)產(chǎn)品,包括:航空、建筑、建設(shè)、消費(fèi)類產(chǎn)品、高科技設(shè)備、工業(yè)儀器、運(yùn)輸、航海和/或近海油/氣生產(chǎn)或運(yùn)輸。由該方法設(shè)計(jì)的3d建模對(duì)象因而可以表示可以是任意機(jī)械部件的工業(yè)產(chǎn)品,例如陸地車輛的部件(包括例如汽車和輕型卡車裝備、賽車、摩托車、卡車和發(fā)動(dòng)機(jī)裝備、卡車和公共汽車、火車)、飛行器的部件(包括例如機(jī)身裝備、航空裝備、推進(jìn)裝備、防御產(chǎn)品、航線設(shè)備、空間設(shè)備)、海軍運(yùn)載工具的部件(包括例如海軍裝備、商業(yè)船只、近海裝備、游艇和作業(yè)船、航海裝備)、一般機(jī)械部件(包括例如工業(yè)制造機(jī)器、重型移動(dòng)機(jī)器或裝備、安裝的裝備、工業(yè)裝備產(chǎn)品、裝配式金屬產(chǎn)品、輪胎制造產(chǎn)品)、機(jī)電或電子部件(包括例如消費(fèi)類電子、安全和/或控制和/或樂(lè)器產(chǎn)品、計(jì)算和通信裝備、半導(dǎo)體、醫(yī)療設(shè)備和儀器)、消費(fèi)類產(chǎn)品(包括例如家具、家庭和園藝產(chǎn)品、休閑用品、時(shí)尚產(chǎn)品、耐用商品零售商的產(chǎn)品、非耐用商品零售商的產(chǎn)品)、包裝(包括例如食品和飲料以及煙草、美容和個(gè)人護(hù)理、日用產(chǎn)品包裝)。
plm系統(tǒng)還指適于管理表示物理制造的產(chǎn)品(或者要制造的產(chǎn)品)的建模對(duì)象的任意系統(tǒng)。在plm系統(tǒng)中,建模對(duì)象因而由適于制造物理對(duì)象的數(shù)據(jù)定義。這些可能典型地是尺寸值和/或容許值。對(duì)于對(duì)象的正確制造,具有這些值確實(shí)是更好的。
cam解決方案還指適于管理產(chǎn)品的制造數(shù)據(jù)的任意解決方案,軟件或者硬件。制造數(shù)據(jù)一般包括與要制造的產(chǎn)品、制造過(guò)程和要求的資源相關(guān)的數(shù)據(jù)。cam解決方案用于計(jì)劃和優(yōu)化產(chǎn)品的整個(gè)制造過(guò)程。舉例來(lái)說(shuō),它能夠?yàn)閏am用戶提供可行性、制造過(guò)程的持續(xù)時(shí)間或者諸如特定機(jī)器人的資源數(shù)量的信息,這可能在制造過(guò)程的特定步驟中使用;并且因而允許對(duì)管理或要求的投資做出決定。cam是cad過(guò)程和可能的cae過(guò)程之后的隨后過(guò)程。這種cam解決方案由商標(biāo)為
cae解決方案還指適于分析建模對(duì)象的物理行為的任意解決方案,軟件或者硬件。一種公知并廣泛應(yīng)用的cae技術(shù)是有限元法(fem),它典型地包括將建模對(duì)象劃分成能夠通過(guò)方程式計(jì)算和模擬其物理行為的元素。這種cae解決方案由商標(biāo)為
pdm代表產(chǎn)品數(shù)據(jù)管理。pdm解決方案是指適于管理與特定產(chǎn)品相關(guān)的所有類型的數(shù)據(jù)的任意解決方案,軟件或者硬件。pdm解決方案可以由產(chǎn)品生命周期中涉及的所有角色使用:主要是工程師但也包括項(xiàng)目管理者、金融人士、銷售人士和購(gòu)買者。pdm解決方案一般基于面向產(chǎn)品的數(shù)據(jù)庫(kù)。它允許各角色共享他們的產(chǎn)品的一致性數(shù)據(jù)并且因此防止各角色使用相異的數(shù)據(jù)。這種pdm解決方案由商標(biāo)為
圖10示出了作為客戶端的計(jì)算機(jī)的示例。該示例也可以應(yīng)用至服務(wù)器。該示例的客戶端計(jì)算機(jī)包括連接至內(nèi)部通信總線1000的中央處理單元(cpu)1010,同樣連接至總線的隨機(jī)存取存儲(chǔ)器(ram)1070??蛻舳擞?jì)算機(jī)進(jìn)一步具有圖形處理單元(gpu)1110,它與連接至總線的視頻隨機(jī)存取存儲(chǔ)器1100相關(guān)聯(lián)。視頻ram1100在本領(lǐng)域中也被稱為幀緩沖器。海量存儲(chǔ)設(shè)備控制器1020管理對(duì)于諸如硬驅(qū)1030的海量存儲(chǔ)設(shè)備的訪問(wèn)。適于有形地體現(xiàn)計(jì)算機(jī)程序指令和數(shù)據(jù)的海量存儲(chǔ)設(shè)備包括所有形式的非易失性存儲(chǔ)器,舉例來(lái)說(shuō)包括半導(dǎo)體存儲(chǔ)器設(shè)備,諸如eprom、eeprom以及閃存設(shè)備;磁盤,諸如內(nèi)部硬盤和可移動(dòng)盤;磁-光盤;以及cd-rom盤1040。前述任意設(shè)備可以由專門設(shè)計(jì)的asic(專用集成電路)補(bǔ)充或者結(jié)合在該asic中。網(wǎng)絡(luò)適配器1050管理對(duì)網(wǎng)絡(luò)1060的訪問(wèn)??蛻舳擞?jì)算機(jī)還可以包括觸覺(jué)設(shè)備1090,諸如光標(biāo)控制設(shè)備、鍵盤等。光標(biāo)控制設(shè)備在客戶端計(jì)算機(jī)中使用以允許用戶選擇性地將光標(biāo)放置在顯示器1080上的任意期望位置。此外,光標(biāo)控制設(shè)備允許用戶選擇多種命令并輸入控制信號(hào)。光標(biāo)控制設(shè)備包括多個(gè)信號(hào)生成設(shè)備以將控制信號(hào)輸入至系統(tǒng)。典型地,光標(biāo)控制設(shè)備可以是鼠標(biāo),鼠標(biāo)的按鍵用于產(chǎn)生信號(hào)。作為選擇或者此外,客戶端計(jì)算機(jī)系統(tǒng)可以包括觸敏板和/或觸敏屏。
計(jì)算機(jī)程序可以包括能夠由計(jì)算機(jī)執(zhí)行的指令,該指令包括用于使上述系統(tǒng)執(zhí)行所述方法的單元。程序可以被記錄在任意數(shù)據(jù)存儲(chǔ)介質(zhì)上,包括系統(tǒng)的存儲(chǔ)器。程序例如可以被實(shí)現(xiàn)在數(shù)字電子電路中,或者在計(jì)算機(jī)硬件、固件、軟件或它們的組合中。程序可以被實(shí)現(xiàn)為裝置,例如有形地體現(xiàn)在機(jī)器可讀存儲(chǔ)設(shè)備中以由可編程處理器執(zhí)行的產(chǎn)品。各方法步驟可以由執(zhí)行指令程序的可編程處理器執(zhí)行以通過(guò)操作輸入數(shù)據(jù)并產(chǎn)生輸出來(lái)執(zhí)行所述方法的功能。處理器因而可以能夠被編程并耦合以從數(shù)據(jù)存儲(chǔ)系統(tǒng)、至少一個(gè)輸入設(shè)備和至少一個(gè)輸出設(shè)備接收數(shù)據(jù)和指令,或者將數(shù)據(jù)和指令發(fā)送到該數(shù)據(jù)存儲(chǔ)系統(tǒng)、至少一個(gè)輸入設(shè)備和至少一個(gè)輸出設(shè)備。應(yīng)用程序能夠以高級(jí)的面向過(guò)程或面向?qū)ο蟮木幊陶Z(yǔ)言實(shí)現(xiàn),或者如果需要以匯編語(yǔ)言或機(jī)器語(yǔ)言實(shí)現(xiàn)。在任意情況下,語(yǔ)言可以是編譯語(yǔ)言或解釋語(yǔ)言。程序可以是完全安裝程序或更新程序。在系統(tǒng)上應(yīng)用所述程序在任意情況下都會(huì)獲得用于執(zhí)行所述方法的指令。
所述方法可以包括在制造過(guò)程中,制造過(guò)程可以包括在執(zhí)行所述方法之后制造與顯示的建模對(duì)象相對(duì)應(yīng)的物理產(chǎn)品。
返回參考圖1,現(xiàn)在討論用于設(shè)計(jì)建模對(duì)象的3d組裝的方法的示例。
在步驟s10,由諸如客戶端計(jì)算機(jī)的第二計(jì)算機(jī)渲染3d建模對(duì)象的3d組裝。通過(guò)組合至少兩個(gè)3d建模對(duì)象來(lái)獲得該3d組裝。第一3d建模對(duì)象被存儲(chǔ)在第一計(jì)算機(jī)(例如服務(wù)器)上,該第一計(jì)算機(jī)將第一3d建模對(duì)象的至少一個(gè)光柵圖像流式傳送到第二計(jì)算機(jī)。因而在合并時(shí),該至少一個(gè)光柵圖像已經(jīng)被從第一計(jì)算機(jī)流式傳送至第二計(jì)算機(jī)。第二3d建模對(duì)象被存儲(chǔ)在第三計(jì)算機(jī)或第一計(jì)算機(jī)上;參考圖5對(duì)此進(jìn)行討論。
現(xiàn)在參考圖4,討論用于渲染3d組裝的示例。在步驟s100,運(yùn)行在用戶計(jì)算機(jī)上的應(yīng)用請(qǐng)求顯示3d組裝,例如,基于選擇要顯示的組裝的用戶動(dòng)作。用戶計(jì)算機(jī)也被稱為客戶端或第二計(jì)算機(jī),與存儲(chǔ)要顯示的3d組裝的至少某些建模對(duì)象的服務(wù)器(也被稱為第一計(jì)算機(jī))形成對(duì)比。
現(xiàn)在參考圖8,示出了例如通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)連接在一起的服務(wù)器1和客戶端2的示例。計(jì)算機(jī)網(wǎng)絡(luò)是允許計(jì)算機(jī)交換數(shù)據(jù)的電信網(wǎng)絡(luò)。它可以是但不局限于lan、man、wan、以太網(wǎng)等等。本發(fā)明的方法可以針對(duì)任意種類的計(jì)算機(jī)網(wǎng)絡(luò)執(zhí)行。仍然參考圖8,描繪了可能請(qǐng)求存儲(chǔ)在服務(wù)器1上的相同3d組裝的顯示,或者請(qǐng)求可能存儲(chǔ)在服務(wù)器1或者第二服務(wù)器3上的另一3d組裝的顯示的第二客戶端4。有趣的是,沒(méi)有被存儲(chǔ)在服務(wù)器1上的3d組裝的建模對(duì)象能夠被存儲(chǔ)在另一存儲(chǔ)器3上,或者被存儲(chǔ)在執(zhí)行該請(qǐng)求的客戶端2上,或者甚至被存儲(chǔ)在第二客戶端4上。因此,本發(fā)明能夠在客戶端/服務(wù)器模型或點(diǎn)對(duì)點(diǎn)模型中執(zhí)行;實(shí)際上,能夠由請(qǐng)求3d組裝的顯示的客戶端2訪問(wèn)的任意計(jì)算機(jī)1,2,3都能夠存儲(chǔ)要顯示的組裝的建模對(duì)象。
返回到圖4,在步驟s102,由服務(wù)器計(jì)算第一3d建模對(duì)象的至少一個(gè)光柵圖像。術(shù)語(yǔ)光柵圖像指代能夠經(jīng)由計(jì)算機(jī)觀看的點(diǎn)矩陣數(shù)據(jù)結(jié)構(gòu),該點(diǎn)矩陣數(shù)據(jù)結(jié)構(gòu)表示通常為矩形的像素網(wǎng)格或者顏色點(diǎn)。光柵圖像在技術(shù)上通過(guò)以像素為單位的該圖像的寬度和高度以及每像素比特?cái)?shù)進(jìn)行特征化。術(shù)語(yǔ)第一3d建模對(duì)象是指形成存儲(chǔ)在服務(wù)器上的3d組裝的一個(gè)或多個(gè)建模對(duì)象。服務(wù)器執(zhí)行本領(lǐng)域公知的計(jì)算。舉例來(lái)說(shuō),服務(wù)器接收應(yīng)用的請(qǐng)求(s100),從其數(shù)據(jù)庫(kù)檢索形成該組裝的3d對(duì)象,根據(jù)檢索的3d對(duì)象計(jì)算在3d空間中這些3d對(duì)象的像素,然后選擇視點(diǎn)(舉例來(lái)說(shuō),默認(rèn)地,或者所述組裝的用戶的最后視點(diǎn)),并且根據(jù)選定的視點(diǎn)獲得光柵圖像。在實(shí)踐中,3d渲染引擎生成從特定視點(diǎn)觀看的3d場(chǎng)景的一個(gè)或多個(gè)光柵圖像,如本領(lǐng)域所公知的;例如,3d渲染引擎使用服務(wù)器的計(jì)算處理單元(cpu)計(jì)算在3d空間中這些3d對(duì)象的像素,并使用服務(wù)器的圖形處理單元以根據(jù)3d空間上的視點(diǎn)來(lái)獲得圖像(像素的集合)。在實(shí)踐中,最普通的流水線如下。cpu向gpu發(fā)送三角形的列表。然后gpu將在參考坐標(biāo)系中的三角形的頂點(diǎn)坐標(biāo)轉(zhuǎn)換至當(dāng)前視點(diǎn)坐標(biāo)系中的新坐標(biāo)。該三角形的新坐標(biāo)然后被投影在2d空間中并且投影的三角形被轉(zhuǎn)換為形成要被顯示的圖像的像素集合。
在步驟s104,針對(duì)在步驟s102獲得的第一3d建模對(duì)象的每一個(gè)光柵圖像計(jì)算深度緩存。術(shù)語(yǔ)深度緩存是指深度緩沖(也被稱為z-緩沖)過(guò)程的結(jié)果。深度緩沖或z-緩沖是本領(lǐng)域公知的。每個(gè)圖像的深度緩存為該圖像的每個(gè)像素存儲(chǔ)該像素的深度(z坐標(biāo))。像素的深度緩存是與光柵圖像的深度緩存具有相同維度的2d陣列(x-y),光柵圖像的深度緩存對(duì)于光柵圖像中的每個(gè)像素存儲(chǔ)與從這一像素到相機(jī)的距離相關(guān)的值。有趣的是,在深度緩存中存儲(chǔ)的值可能不總是點(diǎn)至相機(jī)距離的線性函數(shù),然而它總是單調(diào)函數(shù)(大多數(shù)時(shí)間為嚴(yán)格遞增函數(shù)),如本領(lǐng)域所公知的。能夠使用任意粒度的深度緩存,例如16比特或24比特或32比特深度緩存。在實(shí)踐中,選擇更高的可用粒度;一般為32比特深度緩存。
由第一計(jì)算機(jī)執(zhí)行步驟s102和s104。這暗示著在第一計(jì)算機(jī)上的圖形渲染能力。步驟s102和s104對(duì)于被計(jì)算的每個(gè)新光柵圖像連續(xù)執(zhí)行。這意味著如果連續(xù)計(jì)算了多個(gè)光柵圖像,則一個(gè)光柵圖像的深度緩存在另一光柵圖像已經(jīng)被計(jì)算之后被立即計(jì)算。作為選擇,在光柵圖像(例如預(yù)定數(shù)量的光柵圖像)已經(jīng)被計(jì)算之后能夠計(jì)算一組深度緩存。
然后,在步驟s120,在步驟s102中計(jì)算的光柵圖像被從服務(wù)器流式傳送至客戶端;因而,客戶端接收像素圖像的流。流式傳送是指光柵圖像在由服務(wù)器傳送時(shí)由客戶端接收并被呈現(xiàn)至該客戶端。在客戶端和服務(wù)器之間創(chuàng)建并開(kāi)啟通道,例如,該通道可以基于客戶端的請(qǐng)求而創(chuàng)建。并且服務(wù)器通過(guò)這一通道來(lái)將光柵圖像發(fā)送至客戶端。
光柵圖像和深度緩存可以被一起流式傳送。這意味著客戶端“同時(shí)”接收光柵圖像和與它相關(guān)聯(lián)的深度緩存。在那里,語(yǔ)句“同時(shí)”意味著在給定時(shí)隙中,該給定時(shí)隙可以取決于計(jì)算機(jī)網(wǎng)絡(luò)參數(shù)(帶寬、協(xié)議等等)和狀態(tài)(擁塞、延遲等等)而改變。舉例來(lái)說(shuō),在五秒鐘的時(shí)隙中,客戶端接收光柵圖像并且隨后接收深度緩存。正如已經(jīng)討論的,對(duì)于被計(jì)算的每個(gè)新光柵圖像,連續(xù)執(zhí)行步驟s102和s104,這因此使得更容易對(duì)深度緩存與光柵圖像一起進(jìn)行流式傳送。
光柵圖像和深度緩存可以在單個(gè)流中進(jìn)行流式傳送,也就是說(shuō),使用一個(gè)流。作為選擇,光柵圖像在第一單獨(dú)流中進(jìn)行流式傳送,而深度緩存在第二單獨(dú)流中進(jìn)行流式傳送。
在實(shí)踐中,包括光柵圖像的單個(gè)流和/或包括深度緩存的單個(gè)流,或者包括光柵圖像和深度緩存兩者的單個(gè)流被編碼。該編碼可以是壓縮方案。舉例來(lái)說(shuō),由于渲染圖像的序列或者深度緩存的序列形成視頻,因此可以使用諸如h.264的標(biāo)準(zhǔn)視頻壓縮方案。有趣的是,h.264壓縮方案可以使用諸如在l.cheng&al.的“real-time3dgraphicsusingstreamingmpeg-4”或者p.fechteler和p.eisert的“acceleratedvideoencodingusingcontextinformationrender”的文檔中描述的那些方法進(jìn)行增強(qiáng),它們提供一種方式以直接根據(jù)在場(chǎng)景的渲染期間使用的3d場(chǎng)景信息(深度、相機(jī)移動(dòng)或3d部件移動(dòng))而不是使用在標(biāo)準(zhǔn)視頻編解碼器中發(fā)現(xiàn)的計(jì)算開(kāi)銷大的運(yùn)動(dòng)估算搜索算法來(lái)計(jì)算運(yùn)動(dòng)向量。d.pajak,r.herzog等的文檔“scalableremoterenderingwithdepthandmotion-flowaugmentedstreaming”提供了一種解決方案以通過(guò)考慮渲染圖像和深度緩存是高度相關(guān)的來(lái)在單個(gè)視頻流中對(duì)該渲染圖像和深度緩存兩者進(jìn)行編碼。有利地,該最后解決方案允許產(chǎn)生包括渲染圖像和深度緩存兩者的單個(gè)流,并且它能夠比取決于3d場(chǎng)景在h.264流中獨(dú)立編碼的渲染圖像更亮。
要理解的是,需要從服務(wù)器發(fā)送至客戶端(甚至從客戶端發(fā)送至服務(wù)器)的任意數(shù)據(jù)(光柵圖像,深度緩存等等)優(yōu)選地使用流式傳送通道進(jìn)行發(fā)送。舉例來(lái)說(shuō),當(dāng)在服務(wù)器上修改3d場(chǎng)景時(shí)(例如,3d場(chǎng)景中的新對(duì)象,執(zhí)行3d場(chǎng)景上的模擬),該修改被流式傳送至客戶端。在實(shí)踐中,客戶端上的用戶與該3d場(chǎng)景交互,使得數(shù)據(jù)不斷地被客戶端接收并被呈現(xiàn)至客戶端。并且當(dāng)用戶不與3d場(chǎng)景交互時(shí)(或者當(dāng)3d場(chǎng)景中沒(méi)有什么在運(yùn)動(dòng)時(shí)),被流式傳送的數(shù)據(jù)的量非常低;應(yīng)該理解,通道被保持開(kāi)啟。
然后,在步驟s130,第二3d建模對(duì)象被與流式傳送的至少一個(gè)光柵圖像合并。該第二3d建模對(duì)象是幾何3d建模對(duì)象,并且該客戶端計(jì)算機(jī)執(zhí)行該合并。合并意味著定義第二3d建模對(duì)象的數(shù)據(jù)被渲染“至”通過(guò)像素流式傳送發(fā)送的渲染的視圖中。如上文之前討論的,這些數(shù)據(jù)包括允許建模對(duì)象的表示的數(shù)據(jù),例如,使用邊或線的表示,在某些情況下使用面或表面。因此,步驟s130暗示著此時(shí)在第二計(jì)算機(jī)上的圖形渲染能力:由客戶端計(jì)算第二3d建模對(duì)象的圖像并且這一圖像被與一個(gè)或多個(gè)光柵圖像組合。因此,第二3d建模對(duì)象的最新計(jì)算的圖像和流式傳送的光柵圖像被聯(lián)合以形成要在第二(客戶端)計(jì)算機(jī)上被渲染的圖像。第二3d建模對(duì)象可以被存儲(chǔ)在客戶端計(jì)算機(jī)上,或者它能夠被從第三計(jì)算機(jī)發(fā)送至客戶端計(jì)算機(jī)。舉例來(lái)說(shuō),并參考圖8,第二3d建模對(duì)象能夠被存儲(chǔ)在另一服務(wù)器3上,或者被存儲(chǔ)在執(zhí)行該請(qǐng)求的客戶端2上,或者甚至被存儲(chǔ)在第二客戶端4上。
合并的結(jié)果是要被渲染的新圖像。該合并因此包括將第二3d建模對(duì)象的幾何結(jié)構(gòu)渲染“至”通過(guò)像素流式傳送發(fā)送的渲染的視圖中。通過(guò)第二計(jì)算機(jī)將第二3d建模對(duì)象的圖像與從光柵圖像流式傳送接收的當(dāng)前光柵圖像進(jìn)行組合。在實(shí)踐中,第二3d建模對(duì)象的圖像與光柵圖像具有相同的尺寸(相同的像素長(zhǎng)度、像素寬度、以及像素?cái)?shù)量)。
當(dāng)將第二3d建模對(duì)象與光柵圖像合并時(shí),選擇第二3d建模對(duì)象上的視點(diǎn)以計(jì)算第二建模對(duì)象的圖像。該視點(diǎn)的選擇可以被默認(rèn)地執(zhí)行(例如,第二對(duì)象的用戶的最后視點(diǎn)),由隨機(jī)過(guò)程執(zhí)行,使用與針對(duì)光柵圖像選擇的視點(diǎn)相同的視點(diǎn)執(zhí)行(例如,在由第一建模對(duì)象和第二建模對(duì)象共享的參考坐標(biāo)系中提供相機(jī)的位置)。
可以通過(guò)執(zhí)行逐像素的比較以確定渲染第二3d建模對(duì)象的哪些片段來(lái)實(shí)現(xiàn)光柵圖像和第二3d建模對(duì)象的計(jì)算的圖像的組合。術(shù)語(yǔ)片段是指可以在渲染圖像上產(chǎn)生像素(繪制或沒(méi)有繪制)的3d對(duì)象的一部分。這一術(shù)語(yǔ)在本領(lǐng)域中被廣泛使用并且是公知的。每次在第二3d建模對(duì)象的片段應(yīng)該在建模對(duì)象的3d組裝的渲染圖像的像素上進(jìn)行繪制時(shí),在從第一計(jì)算機(jī)流式傳送的深度緩存中的相應(yīng)值和與f至相機(jī)的距離相關(guān)的值之間進(jìn)行比較。如前面所陳述的,在流式傳送的深度緩存中存儲(chǔ)的值與從相機(jī)至被流式傳送的渲染圖像中的相應(yīng)像素的距離相關(guān)。因此做出這一逐像素的比較以確定應(yīng)當(dāng)被繪制的第二3d建模對(duì)象的片段與來(lái)自被流式傳送的第一3d建模對(duì)象的至少一個(gè)光柵圖像的已經(jīng)被繪制的像素相比距離相機(jī)更遠(yuǎn)還是更近。這一方法被稱為z-選擇并且允許通過(guò)將第二3d建模對(duì)象的幾何結(jié)構(gòu)渲染“至”通過(guò)像素流式傳送發(fā)送的渲染的視圖中而在第二計(jì)算機(jī)上顯示3d組裝的視圖。在“像素流”中發(fā)送的深度緩存(或深度圖)因此被用于解決閉塞,即,確定在3d組裝的視圖中每個(gè)流的哪些元素是可見(jiàn)的或不可見(jiàn)的。
然后,在步驟s140,計(jì)算3d組裝(s30)的視圖上的照明效果以進(jìn)一步提升3d組裝的渲染圖像的質(zhì)量。術(shù)語(yǔ)照明效果包括第一3d建模對(duì)象在第二3d建模對(duì)象的可視方面上顯著的光線和陰影,并且反之亦然。因此,計(jì)算在像素流的第一3d建模對(duì)象和幾何流的第二3d建模對(duì)象之間的照明的相互作用(投射光和陰影)。
然后,在步驟s150,建模對(duì)象的3d組裝被渲染并被顯示在第二計(jì)算機(jī)上。這以本領(lǐng)域公知的方式執(zhí)行。
現(xiàn)在參考圖6,討論了如參考圖3的流程圖描述的本發(fā)明的示例。用戶已經(jīng)請(qǐng)求了(s100)在計(jì)算機(jī)客戶端上顯示包括存儲(chǔ)在第一服務(wù)器上的第一集合s1的兩個(gè)3d建模對(duì)象(立方體和圓錐體)以及存儲(chǔ)在第二服務(wù)器上的第二集合s2的兩個(gè)3d建模對(duì)象(圓柱體和圓環(huán))的3d組裝。作為請(qǐng)求的結(jié)果,由第一服務(wù)器計(jì)算(s102,s104)s1的光柵圖像r1和深度圖d1(或者深度緩存),并且然后由第一服務(wù)器將包括r1和d1的單個(gè)像素流發(fā)送至客戶端,并且由第二服務(wù)器將第二集合s2的幾何流發(fā)送至客戶端??梢灶A(yù)期其他配置;舉例來(lái)說(shuō),第一服務(wù)器可以發(fā)送兩個(gè)像素流(一個(gè)針對(duì)r1并且一個(gè)針對(duì)d1),和/或集合s2可以被存儲(chǔ)在客戶端計(jì)算機(jī)上??蛻舳巳缓蠛喜⑦@兩個(gè)流,計(jì)算照明效果,并且遠(yuǎn)程地渲染3d組裝r2。
本發(fā)明提高了在客戶端數(shù)量增加的情況下遠(yuǎn)程渲染的可伸縮性。舉例來(lái)說(shuō),能夠提高3d場(chǎng)景中作為被流式傳送為像素的部分與被流式傳送為幾何結(jié)構(gòu)的部分相比的3d對(duì)象的數(shù)量,當(dāng)客戶端的數(shù)量增加時(shí)這樣做是有利的。因此,本發(fā)明允許取決于客戶端數(shù)量和它們的配置而執(zhí)行像素流式傳送和幾何流式傳送之間的負(fù)載平衡。作為另一示例,如果兩個(gè)或多個(gè)客戶端視點(diǎn)足夠接近,則一種可行的策略是使用幾何流式傳送來(lái)發(fā)送與它們接近的資產(chǎn)(如果可能經(jīng)由多播在共同流(mutualstream)中)并且使用像素流式傳送來(lái)發(fā)送遠(yuǎn)距離的對(duì)象;實(shí)際上,被流式傳送的圖像具有足夠接近的機(jī)會(huì),僅在某些資產(chǎn)的位置中由于視差而存在小的位移,這意味著這些圖像也可以經(jīng)由多播在共同流中進(jìn)行發(fā)送。另一“負(fù)載平衡”策略是對(duì)于客戶端更有可能與之交互的對(duì)象使用幾何流式傳送,并且使用像素流式傳送來(lái)發(fā)送遠(yuǎn)距離的對(duì)象。有利地,在網(wǎng)絡(luò)中斷的情況下,客戶端將仍然能夠與他更可能交互的對(duì)象進(jìn)行交互??蛻舳藢⒁材軌蚋淖兯囊朁c(diǎn),因?yàn)槭褂孟袼亓魇絺魉桶l(fā)送的部分的失真保持可以接受(與歸因于視差的變形有關(guān))。
現(xiàn)在參考圖5,現(xiàn)在討論建模對(duì)象的3d組裝上的照明效果的計(jì)算(s140)的示例。在3d計(jì)算機(jī)圖形學(xué)領(lǐng)域中已經(jīng)開(kāi)發(fā)了許多技術(shù)來(lái)計(jì)算這些照明效果作為后處理。這里,后處理是指在轉(zhuǎn)換至像素的rgb空間后計(jì)算照明效果,例如,3d組裝的圖像被存儲(chǔ)在幀緩沖器中并且從那里進(jìn)行后處理。這包括被稱為推遲著色、屏幕空間環(huán)境光閉塞、屏幕空間直接閉塞、屏幕空間局部反射、屏幕空間陰影光線追蹤等等的技術(shù)。這些技術(shù)共享針對(duì)每個(gè)像素它們需要的至少下述各條信息:表面法線方向和材料性質(zhì)。它們也可能要求與光源相關(guān)的信息(位置、顏色、范圍等等)。
在步驟s400,服務(wù)器接收與第一3d建模對(duì)象的至少一個(gè)光柵圖像相關(guān)聯(lián)的一個(gè)或多個(gè)第一光源信息以及與第二3d建模對(duì)象相關(guān)聯(lián)的一個(gè)或多個(gè)第二光源信息。在實(shí)踐中,在與傳輸光柵圖像的相同流中傳送第一光源信息。作為選擇,它能夠使用深度緩存的流進(jìn)行發(fā)送,或者它能夠在自己的單個(gè)流中進(jìn)行發(fā)送。在幾何流中傳送第二光源信息;應(yīng)該理解,它還能夠在它自己的單個(gè)流中進(jìn)行發(fā)送。每個(gè)光源的信息至少包括該光源的位置(例如,在由第一建模對(duì)象和第二建模對(duì)象共享的參考坐標(biāo)系中)。它可以進(jìn)一步包括但不局限于光源的顏色、光譜分布、照明強(qiáng)度的空間分布。
然后,在步驟s410,通過(guò)合并第二3d建模對(duì)象與所述至少一個(gè)光柵圖像的第一深度緩存來(lái)計(jì)算第二深度緩存。按照針對(duì)第二3d建模對(duì)象與光柵圖像的合并相同的方式來(lái)執(zhí)行這一合并。
然后,在步驟s420,根據(jù)第二深度緩存來(lái)計(jì)算法線圖(s410)。該法線圖針對(duì)建模對(duì)象的3d組裝的每個(gè)像素存儲(chǔ)表面法線方向??梢酝ㄟ^(guò)向第二深度緩存應(yīng)用卷積濾波器來(lái)計(jì)算該法線圖。法線圖的該計(jì)算可以按照本領(lǐng)域公知的方式來(lái)執(zhí)行。計(jì)算深度的梯度(使用sobelmask作為濾波器的卷積);這一梯度是在屏幕空間中的法線的粗略近似。然后,這一梯度可以不被從2d空間(屏幕空間)“投射”至參考空間。
然后,在步驟s430,推斷與至少一個(gè)光柵圖像合并的第二3d建模對(duì)象的每個(gè)像素的材料性質(zhì)。這可以通過(guò)例如根據(jù)像素顏色或流式傳送來(lái)執(zhí)行。作為選擇,該材料性質(zhì)可以直接從包括該第一3d建模對(duì)象和第二3d建模對(duì)象的服務(wù)器獲得,例如它與光源信息在同一流中進(jìn)行發(fā)送。
然后,在步驟s440,計(jì)算標(biāo)識(shí)緩存。根據(jù)3d建模對(duì)象的第一集合,客戶端僅知道渲染圖像和深度緩存。如上文所述,照明技術(shù)可能針對(duì)每個(gè)像素要求深度、表面法線方向、少量材料性質(zhì)。因此需要額外步驟來(lái)恢復(fù)這一缺失的信息。這一額外緩存(標(biāo)識(shí)緩存)用于存儲(chǔ)針對(duì)每個(gè)像素的二進(jìn)制值,該二進(jìn)制值識(shí)別被繪制的像素來(lái)自于第一場(chǎng)景的被流式傳送的圖像還是來(lái)自于第二集合的3d部件的渲染。從現(xiàn)在開(kāi)始,知道了每個(gè)像素的起源(它們來(lái)自于哪個(gè)3d對(duì)象集合-第一3d建模對(duì)象還是第二3d建模對(duì)象),使得像素的照明僅考慮來(lái)自于另一集合的像素的信息以及與該另一集合相關(guān)聯(lián)的光源。
需要理解,圖5的流程圖僅僅是示例并且可以在不改變照明效果計(jì)算的情況下修改各步驟的次序。與圖7相關(guān)地提供另一示例。
客戶端計(jì)算機(jī)現(xiàn)在具有用于作為始于每個(gè)像素的表面法線方向和材料性質(zhì)的后處理的計(jì)算照明效果的所有信息。參考圖7,討論如參考圖4和圖5的流程圖所描述的本發(fā)明的示例。圖7是圖3的一種修改的流水線以包括利用后處理技術(shù)的照明校正;之前討論的圖3的各步驟仍然有效。用戶已經(jīng)請(qǐng)求了(s100)在計(jì)算機(jī)客戶端上顯示包括存儲(chǔ)在第一服務(wù)器上的第一集合s1的兩個(gè)3d建模對(duì)象(正方體和圓錐體)以及存儲(chǔ)在第二服務(wù)器上的第二集合s2的兩個(gè)3d建模對(duì)象(圓柱體和圓環(huán))的3d組裝。作為該請(qǐng)求的結(jié)果,由服務(wù)器計(jì)算(s102,s104)s1的光柵圖像r1和第一深度圖d1(或者深度緩存),在根據(jù)其已經(jīng)計(jì)算了r1的3d場(chǎng)景中識(shí)別第一光源l1(被符號(hào)化為燈泡)的信息,并且r1、d1和l1已經(jīng)被從第一服務(wù)器流式傳送至第二服務(wù)器。相伴地,由第二服務(wù)器將第二集合s2連同與s2相關(guān)聯(lián)的第二光源l2(同樣被符號(hào)化為燈泡)的信息的幾何流式傳送發(fā)送至客戶端??蛻舳巳缓髮?duì)這兩個(gè)流進(jìn)行合并,也就是說(shuō),客戶端將光柵圖像r1與幾何集合s2合并。作為合并的結(jié)果,獲得3d組裝r2。然后,推斷r2的對(duì)象的材料性質(zhì)(s430)。例如在識(shí)別在像素和幾何流內(nèi)發(fā)送的材料性質(zhì)時(shí)或在分析r2的像素的顏色時(shí)執(zhí)行r2的像素的材料性質(zhì)m的推斷。當(dāng)計(jì)算材料性質(zhì)時(shí),通過(guò)將第二集合s2與d1合并來(lái)計(jì)算第二深度緩存d2(s410),并且然后計(jì)算標(biāo)識(shí)緩存i(s430)。根據(jù)d2生成法線圖n(s420)?,F(xiàn)在,客戶端包括用于使用要求r2,d2,i,n,m以及來(lái)自s1和s2的光源信息作為輸入的后處理技術(shù)來(lái)執(zhí)行照明校正的數(shù)據(jù)。根據(jù)r2生成新圖像r3,其中考慮來(lái)自s1的各對(duì)象和光源對(duì)s2的對(duì)象的照明影響(反之亦然)。建模對(duì)象的3d組裝r3被渲染并顯示給用戶。
現(xiàn)在參考圖9,討論了當(dāng)客戶端的用戶改變渲染的3d組裝(例如,圖6中的r2和圖7中的r3)上的視點(diǎn)時(shí)服務(wù)器和客戶端之間的交互(或通信交換)??蛻舳撕头?wù)器可以是如圖8、15所示的客戶端2和服務(wù)器1。使用至少流式傳送通道來(lái)連接客戶端和服務(wù)器。客戶端和服務(wù)器第二計(jì)算機(jī)包括耦合至存儲(chǔ)器的處理電路??蛻舳诉M(jìn)一步包括允許用戶在3d場(chǎng)景上操作的圖形用戶界面。第一計(jì)算機(jī)和第二計(jì)算機(jī)的每個(gè)存儲(chǔ)器具有記錄在其上的用于執(zhí)行圖9所示的交換s600至s660的計(jì)算機(jī)程序。這意味著服務(wù)器存儲(chǔ)器上的計(jì)算機(jī)程序和客戶端存儲(chǔ)器上的計(jì)算機(jī)程序允許執(zhí)行本發(fā)明的方法。客戶端和服務(wù)器兩者的存儲(chǔ)器上的計(jì)算機(jī)程序可以相同。
作為選擇,服務(wù)器存儲(chǔ)器上的計(jì)算機(jī)程序允許創(chuàng)建和/或維護(hù)用于對(duì)數(shù)據(jù)進(jìn)行流式傳送的通道,并且它進(jìn)一步允許執(zhí)行步驟s620至s640;客戶端存儲(chǔ)器上的計(jì)算機(jī)程序允許創(chuàng)建和/或維護(hù)用于對(duì)數(shù)據(jù)進(jìn)行流式傳送的通道,并且它進(jìn)一步允許執(zhí)行步驟s600至s610以及650至660。在這一選擇中,客戶端和服務(wù)器上的計(jì)算機(jī)程序不同,但是協(xié)作以執(zhí)行本發(fā)明的方法。
在步驟s600,由用戶在客戶端計(jì)算機(jī)上選擇顯示的3d組裝上的新視點(diǎn)。這如本領(lǐng)域公知的方式執(zhí)行。具有3d組裝的新選擇的視點(diǎn)的坐標(biāo)的消息被發(fā)送至服務(wù)器s610。服務(wù)器接收該消息以及包含在其中的新坐標(biāo)s620。對(duì)于服務(wù)器來(lái)說(shuō)應(yīng)用該新坐標(biāo)是非常容易的操作,這是因?yàn)?,包括第?d建模對(duì)象的服務(wù)器上的3d場(chǎng)景以及與第二3d建模對(duì)象合并的光柵圖像共享相同的坐標(biāo)系;舉例來(lái)說(shuō),服務(wù)器的圖形處理單元能夠通過(guò)直接在3d場(chǎng)景上應(yīng)用該新視點(diǎn)來(lái)獲得要被顯示的新像素集合。服務(wù)器根據(jù)該新視點(diǎn)計(jì)算第一3d建模對(duì)象的新光柵圖像(s630),該新光柵圖像被從服務(wù)器流式傳送至客戶端(s640);并且最終由客戶端接收(s650)。該客戶端將第二3d建模對(duì)象與該流式傳送的新光柵圖像合并,并渲染該3d組裝的新視圖(s660)。如參考圖4-7所討論的那樣執(zhí)行步驟s630-s660。
有趣的是,圖9的各步驟僅當(dāng)用戶改變第一集合的3d建模對(duì)象的視點(diǎn)時(shí)應(yīng)用。實(shí)際上,當(dāng)用戶操縱(例如,移動(dòng)、旋轉(zhuǎn)等等)第二集合的建模對(duì)象時(shí),在從其流式傳送第二建模對(duì)象的服務(wù)器上不需要執(zhí)行請(qǐng)求,這是因?yàn)?,客戶端?jì)算機(jī)具有用于計(jì)算第二建模對(duì)象的新圖像的所有數(shù)據(jù)-舉例來(lái)說(shuō)根據(jù)新視點(diǎn)。
返回至圖1,在步驟s20,第二計(jì)算機(jī)將與第二3d建模對(duì)象相關(guān)的第一數(shù)據(jù)發(fā)送至第一計(jì)算機(jī)以進(jìn)行在第一3d建模對(duì)象和第二3d建模對(duì)象之間的接觸計(jì)算。術(shù)語(yǔ)接觸包括由3d建模對(duì)象建模的兩個(gè)物理體之間的沖突或碰撞。沖突或碰撞因此是兩個(gè)物理體之間的交叉。術(shù)語(yǔ)接觸還包括咬合,它是指當(dāng)兩個(gè)物體接近時(shí)被牽引至彼此的效果。它們的表面看起來(lái)被磁力粘住,但是剛性體積并不交叉。
在本發(fā)明中,使用所謂的混合流式傳送將建模對(duì)象的3d組裝渲染在第二計(jì)算機(jī)上,其中使用像素流和幾何流來(lái)構(gòu)建(在客戶端側(cè))該3d組裝。沒(méi)有計(jì)算機(jī)(客戶端和服務(wù)器)知道作為顯示在第二客戶端(第二計(jì)算機(jī))上的3d組裝的3d內(nèi)容的第一3d建模對(duì)象和第二3d建模對(duì)象兩者的真實(shí)幾何結(jié)構(gòu)。然而,在混合流式傳送的這一上下文中,如果服務(wù)器(第一計(jì)算機(jī))將像素流式傳送的真實(shí)幾何結(jié)構(gòu)發(fā)送至客戶端(第二計(jì)算機(jī))或者如果客戶端(第二計(jì)算機(jī))將第二3d建模對(duì)象的真實(shí)幾何結(jié)構(gòu)發(fā)送至服務(wù)器(第一計(jì)算機(jī)),則損失了混合流式傳送在性能方面的益處。
包括與第二3d建模對(duì)象相關(guān)的第一數(shù)據(jù)的消息由第一計(jì)算機(jī)接收并用于執(zhí)行接觸計(jì)算。在實(shí)踐中,該第一數(shù)據(jù)包括第二3d建模對(duì)象的簡(jiǎn)單表示(也被稱為簡(jiǎn)單碰撞幾何結(jié)構(gòu)):實(shí)際上,第一計(jì)算機(jī)已經(jīng)擁有了第一3d建模對(duì)象的真實(shí)幾何結(jié)構(gòu)。該簡(jiǎn)單表示是根據(jù)第二3d建模對(duì)象的真實(shí)幾何結(jié)構(gòu)推導(dǎo)的。簡(jiǎn)單表示可以例如是但不局限于3d建模對(duì)象的邊界框、包圍球、凸包(也被稱為碰撞外殼、碰撞網(wǎng)格或碰撞幾何結(jié)構(gòu))。
該簡(jiǎn)單表示包括簡(jiǎn)單表示的尺寸(邊界框的尺寸(高、寬、長(zhǎng)))以及該簡(jiǎn)單表示在3d組裝的3d空間中的坐標(biāo)(例如,第一3d建模對(duì)象以及與第二3d建模對(duì)象合并的光柵圖像共享相同的參考坐標(biāo)系)。
在實(shí)踐中,該簡(jiǎn)單表示(或碰撞幾何結(jié)構(gòu))的坐標(biāo)和尺寸的精確度至少是在從其觀察場(chǎng)景的相機(jī)的3d空間中被投射回的渲染的3d組裝的像素的大小。
在服務(wù)器已經(jīng)接收到包括該簡(jiǎn)單表示的消息后,它計(jì)算在第一3d建模對(duì)象和第二3d建模對(duì)象之間的接觸(s30)。也就是說(shuō),服務(wù)器計(jì)算第一3d建模對(duì)象和第二3d建模對(duì)象的簡(jiǎn)單表示之間的可能接觸。在這一步驟s30中,由服務(wù)器執(zhí)行的該計(jì)算快速丟棄了3d組裝中明顯不與包含在該消息中的簡(jiǎn)單表示碰撞的3d建模對(duì)象(例如,第一3d建模對(duì)象)。用于該計(jì)算的算法取決于接收到的簡(jiǎn)單表示的性質(zhì);舉例來(lái)說(shuō),在o’rourke,joseph(1985),“findingminimalenclosingboxes”,internationaljournalofcomputerandinformationsciences14(3):183-199中討論的算法可以用于邊界框。作為步驟s30的結(jié)果,第一計(jì)算機(jī)意識(shí)到已經(jīng)被渲染在客戶端上的一個(gè)或多個(gè)3d建模對(duì)象可能與第二3d建模對(duì)象接觸。
步驟s30可以被考慮為接觸檢測(cè)的寬階段并且因此包括在物理實(shí)體之間的簡(jiǎn)單測(cè)試以移除明顯不碰撞的大多數(shù)實(shí)體對(duì)。這一寬階段是沒(méi)有區(qū)別的但是需要很快。能夠使用的通用算法包括但不局限于空間散列、掃描和裁剪、空間分割方法等等。
然后,在步驟s40,服務(wù)器將包括與第一3d建模對(duì)象相關(guān)的第二數(shù)據(jù)的新消息發(fā)送至客戶端,該第一3d建模對(duì)象與第二對(duì)象接觸。在實(shí)踐中,這一消息包括在步驟s30中沒(méi)有被丟棄的一個(gè)或多個(gè)第一3d建模對(duì)象的簡(jiǎn)單表示。
與第一3d建模對(duì)象相關(guān)的第二數(shù)據(jù)可以是第一3d建模對(duì)象的幾何結(jié)構(gòu)。舉例來(lái)說(shuō),第二數(shù)據(jù)可以是第一對(duì)象的簡(jiǎn)化的幾何結(jié)構(gòu),例如凸包。作為選擇,第二數(shù)據(jù)可以是第一3d建模對(duì)象的一個(gè)或多個(gè)深度圖。實(shí)際上,本發(fā)明旨在計(jì)算與渲染的3d組裝相關(guān)聯(lián)的屏幕空間中的碰撞性質(zhì)(碰撞部分的形狀、滲透向量等等)。在相同屏幕空間中計(jì)算的深度圖的集合能夠足以表示物理實(shí)體的剛性體積的邊界。這已經(jīng)例如在jang,jeong和han的“gpu-basedimage-spaceapproachtocollisiondetectionamongclosedobjects”中進(jìn)行了討論。因此,不強(qiáng)制發(fā)送幾何結(jié)構(gòu)或簡(jiǎn)化的幾何結(jié)構(gòu),深度圖的集合將允許客戶端確認(rèn)第一3d建模對(duì)象是否與第二3d建模對(duì)象接觸。舉例來(lái)說(shuō),深度圖的集合可以包括從第一3d建模對(duì)象的正視圖獲得的深度圖(也就是,根據(jù)當(dāng)前視點(diǎn)的視圖)以及從與當(dāng)前視點(diǎn)相關(guān)的后視圖獲得的另一深度圖。應(yīng)該理解,深度圖的集合可以包括多于兩個(gè)的深度圖,特別是當(dāng)?shù)谝?d建模對(duì)象復(fù)雜時(shí)。
有趣的是,在步驟s20的第一消息中,與第一3d建模對(duì)象相關(guān)的第二數(shù)據(jù)能夠比與第二3d建模對(duì)象相關(guān)的第一數(shù)據(jù)更復(fù)雜或精確。然而,這并不增加要傳輸?shù)臄?shù)據(jù)量,因?yàn)槠谕谶@一消息中存在更少的簡(jiǎn)單表示。
該簡(jiǎn)單表示的坐標(biāo)和尺寸的精確度至少是從其觀察場(chǎng)景的相機(jī)的3d空間中被投射回的渲染的3d組裝的像素的大小。該服務(wù)器知道客戶端的像素大小,例如,客戶端已經(jīng)發(fā)送了這一信息連同與第二3d建模對(duì)象相關(guān)的第一數(shù)據(jù)。在第二數(shù)據(jù)是一個(gè)或多個(gè)深度圖的情況下,精確度是渲染的3d組裝的像素的大小。在與第一3d建模對(duì)象相關(guān)的第二數(shù)據(jù)是所述第一對(duì)象的簡(jiǎn)化幾何結(jié)構(gòu)的情況下,則在第一對(duì)象的簡(jiǎn)化幾何結(jié)構(gòu)和第一對(duì)象的幾何結(jié)構(gòu)之間的差異小于第二計(jì)算機(jī)上的像素的寬度;這有利地確保了將檢測(cè)到第一3d建模對(duì)象和第二3d建模對(duì)象之間的可能(或潛在)接觸。
有趣的是,包括該簡(jiǎn)單表示的消息的發(fā)送并不是由用于執(zhí)行客戶端上的渲染的交換像素和幾何流引起的或者與該交換像素和幾何流同步。這有利地允許獨(dú)立于該3d組裝的渲染而觸發(fā)碰撞檢測(cè)。因此,服務(wù)器仍將光柵圖像發(fā)送至客戶端,即使第一對(duì)象的幾何結(jié)構(gòu)被發(fā)送至客戶端;應(yīng)該理解,可以實(shí)現(xiàn)在像素流式傳送和簡(jiǎn)單表示的傳輸之間的同步。
接下來(lái),在步驟s50,第二計(jì)算機(jī)計(jì)算第二數(shù)據(jù)和第二3d建模對(duì)象之間的可能接觸(也被稱為潛在接觸)。這是接觸檢測(cè)的窄階段并且它執(zhí)行在寬階段之后仍可能碰撞的與第一3d建模對(duì)象相關(guān)的第二數(shù)據(jù)和第二3d建模對(duì)象之間的測(cè)試。這些測(cè)試更為精確。通用算法包括但不局限于分離軸理論和gilbert-johnson-keerthi距離算法。作為步驟s50的結(jié)果,如果沒(méi)有檢測(cè)到與包含在由服務(wù)器發(fā)送的消息中的第二數(shù)據(jù)的接觸,則丟棄該第二建模對(duì)象。
在不存在由第二計(jì)算機(jī)計(jì)算的接觸的情況下,不存在3d組裝的新渲染。
如果第二計(jì)算機(jī)計(jì)算出第一3d建模對(duì)象和第二3d建模對(duì)象之間的接觸,則根據(jù)該接觸計(jì)算再次執(zhí)行3d組裝的渲染。3d組裝的這一新渲染可以包括第二3d建模對(duì)象被移動(dòng)(s60)使得在第一3d建模對(duì)象和第二3d建模對(duì)象之間沒(méi)有更多的接觸:因此滿足了兩個(gè)對(duì)象之間的約束(沒(méi)有接觸)。作為選擇,3d組裝的新渲染可以包括接觸在3d組裝上的顯示,例如,兩個(gè)對(duì)象之間的接觸區(qū)使用特定顏色被渲染或者閃爍。此外,可以計(jì)算碰撞對(duì)象的形狀、每對(duì)碰撞對(duì)象的碰撞副本和滲透向量;舉例來(lái)說(shuō),擴(kuò)展多變曲線算法(expandingpolytopealgorithm)是與gilbert-johnson-keerthi距離算法相關(guān)的通用算法。
需要理解,窄階段可以由服務(wù)器執(zhí)行。然而,在客戶端上執(zhí)行窄階段是有利的,這是因?yàn)?,在客戶端和服?wù)器之間需要交換更少消息;尤其是因?yàn)?,服?wù)器不知道第二3d建模對(duì)象的幾何數(shù)據(jù)。
圖2示出了與圖6的示例相關(guān)的參考圖1討論的寬階段和窄階段。寬階段在第一計(jì)算機(jī)上執(zhí)行,該第一計(jì)算機(jī)從第二計(jì)算機(jī)接收邊界框信息,例如,3d建模對(duì)象的第二集合s2的圓環(huán)和圓柱體的邊界框的3d組裝r2中的大小和方向。第一計(jì)算機(jī)計(jì)算包括兩個(gè)第一3d建模對(duì)象的第一集合s1的子集s’1。子集s’1包括可能與s2的對(duì)象接觸的3d建模對(duì)象。第一計(jì)算機(jī)然后將具有s’1的3d建模對(duì)象的簡(jiǎn)單表示的消息發(fā)送至第二計(jì)算機(jī)。需要理解,第一計(jì)算機(jī)可以發(fā)送s1的3d建模對(duì)象的完整表示。簡(jiǎn)單表示優(yōu)選地是幾何數(shù)據(jù)的近似,使得s’1的3d建模對(duì)象的幾何數(shù)據(jù)和它們的簡(jiǎn)單表示之間的距離小于第二計(jì)算機(jī)的像素的距離。該距離可以是但不局限于歐氏距離。這確保了與s’1的對(duì)象相關(guān)的第二數(shù)據(jù)和第二對(duì)象之間的接觸(如果存在)的檢測(cè)。
圖3示出了粗糙碰撞檢測(cè)的示例。在這一示例中,僅發(fā)生了寬階段,它與圖2的寬階段相同。第二計(jì)算機(jī)通過(guò)網(wǎng)絡(luò)向第一計(jì)算機(jī)發(fā)送消息,并且這一消息包含第二3d建模對(duì)象的簡(jiǎn)單表示。在接收到這一第一表示后,第一計(jì)算機(jī)執(zhí)行計(jì)算以快速丟棄與包含在該消息中的簡(jiǎn)單表示明顯不接觸的一個(gè)或多個(gè)3d建模對(duì)象(例如,第一3d建模對(duì)象),并最終解決該碰撞。取決于接觸計(jì)算的目的(例如,顯示碰撞部分(沖突)或移動(dòng)對(duì)象以遵從固體約束),服務(wù)器可以進(jìn)一步計(jì)算碰撞的3d建模對(duì)象的形狀、每一對(duì)碰撞的3d建模對(duì)象的碰撞副本和滲透向量。然后,服務(wù)器將第二消息通過(guò)網(wǎng)絡(luò)發(fā)送回第二計(jì)算機(jī)。這一消息包含先前計(jì)算步驟的結(jié)果。該消息因此可以包括表示接觸的形狀的網(wǎng)格(簡(jiǎn)單的幾何表示),或者它可以簡(jiǎn)單地包括這一形狀的渲染圖像,或者與第一3d建模對(duì)象的實(shí)體接觸碰撞的第二3d建模對(duì)象的每個(gè)實(shí)體的碰撞副本和滲透向量。最后,如前面參考圖4-7所討論的,客戶端計(jì)算機(jī)可以在渲染的3d組裝上顯示第二3d建模對(duì)象(3d組裝因此被重新渲染或再次渲染)。作為選擇,客戶端能夠在產(chǎn)生渲染的3d建模組裝之前移動(dòng)該第二3d建模對(duì)象以遵從固體約束。有利地,僅移動(dòng)第二3d建模對(duì)象并不要求新發(fā)送第一3d建模對(duì)象的光柵圖像,這是因?yàn)榭蛻舳藫碛械诙?d建模對(duì)象的所有數(shù)據(jù),這使得使用新位置計(jì)算第二3d建模對(duì)象更加容易。
雖然已經(jīng)參考示例性實(shí)施例特別示出和描述了本發(fā)明,但是本領(lǐng)域技術(shù)人員將理解,在不脫離由附加的權(quán)利要求包含的本發(fā)明范圍的情況下,可在其中對(duì)形式和細(xì)節(jié)做出多種改變。