處理三維圖形對象的方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種處理至少一個三維圖形對象的方法和系統(tǒng),其包括:確定至少一個三維圖形對象的變化,產(chǎn)生一個消息,分配一個唯一標識符,發(fā)送所述消息和所述唯一標識符給一個場景引擎。所述變化是由創(chuàng)作工具做出的。所述消息中嵌有對應(yīng)所述變化的變化信息。場景引擎的功能可以由執(zhí)行創(chuàng)作工具的相同或不同的計算裝置執(zhí)行。
【專利說明】處理三維圖形對象的方法和系統(tǒng)
【【技術(shù)領(lǐng)域】】
[0001]本發(fā)明涉及三維圖形對象的處理。更具體地,本發(fā)明涉及一種方法,用于處理和顯示三維圖形對象。該三維圖形對象可以在相同或不同的計算設(shè)備中被改變。
【【背景技術(shù)】】
[0002]目前,利用場景引擎和/或?qū)ο髣?chuàng)作工具(如三維MAX、Maya)來創(chuàng)造和/或修改三維圖形對象時要經(jīng)過許多步驟階段才可以使修改了的場景或?qū)ο蠓从吃趫鼍帮@示應(yīng)用程序(如游戲開發(fā)軟件或用戶軟件)中,步驟包括:
[0003]?把三維建模工具的文檔轉(zhuǎn)換成應(yīng)用程序所需的二進制特定文檔;
[0004]?烘焙照明信息和產(chǎn)生應(yīng)用程序特定照明信息;
[0005]?優(yōu)化文檔打包來加快下載和流操作;
[0006]?加入與三維圖形對象有關(guān)聯(lián)的物理數(shù)據(jù)模型,如凸包或原始創(chuàng)作;應(yīng)用程序的額外數(shù)據(jù)關(guān)聯(lián),如人工智能路徑發(fā)現(xiàn)或避障;著色器編譯(Al)和層次細節(jié)(LOD)的產(chǎn)生。
【
【發(fā)明內(nèi)容】
】
[0007]三維圖形場景是由 許多三維圖形對象組成,包括背景、蒙皮、網(wǎng)格、紋理、照明、著色器、紋理照明、坐標、材質(zhì)、渲染、頂點、相機、等等,三維圖形對象的變化被送進一個內(nèi)容處理器,被內(nèi)容處理器處理后被發(fā)送到場景引擎。三維圖形對象的變化是被至少一個創(chuàng)作工具所產(chǎn)生的。然后場景引擎就能夠與三維圖形對象中的變化互動。創(chuàng)作工具也可以是場景引擎,使得創(chuàng)作工具可以與它和/或其他創(chuàng)作工具所產(chǎn)生的三維圖形對象的變化互動。
[0008]一個三維圖形對象可以有無數(shù)的方式被改變。例如,一種創(chuàng)作工具可以改變?nèi)S圖形對象的形狀、三維圖形對象的大小、三維圖形對象的物理模型、三維圖形對象的網(wǎng)格、三維圖形對象的紋理、三維圖形對象的照明、三維圖形對象在場景中的位置、在場景中使用的光、場景中三維對象的數(shù)目、場景攝像機的角度、三維圖形對象的攝像機角度、三維圖形對象的質(zhì)地、著色器、蒙皮等。根據(jù)其中一個實施例,有多個創(chuàng)作工具在同一時間改變一個三維圖形對象。例如,一個創(chuàng)作工具可改變?nèi)S圖形對象的網(wǎng)格,而同時另一個創(chuàng)作工具可改變場景的光線。然后,所有這些三維圖形對象的變化都從創(chuàng)作工具轉(zhuǎn)發(fā)到內(nèi)容處理器。
【【專利附圖】
【附圖說明】】
[0009]從下面的詳細描述,結(jié)合附圖,本發(fā)明的進一步的特征和優(yōu)點將變得明顯。
[0010]圖1A顯示一個內(nèi)容處理器、一個創(chuàng)作工具和一個場景引擎的連接關(guān)系。
[0011]圖1B顯示一個內(nèi)容處理器、多個創(chuàng)作工具和多個場景引擎的連接關(guān)系。
[0012]圖1C顯示多個內(nèi)容處理器、多個創(chuàng)作工具和多個場景引擎的連接關(guān)系。
[0013]圖2A顯示一種處理三維圖形對象變化的方法流程圖。
[0014]圖2B顯示一種處理三維圖形對象變化的方流程圖。
[0015]圖3顯示一種處理三維圖形對象變化的方法流程圖。[0016]圖4顯示一個系統(tǒng)體系結(jié)構(gòu)的方框圖,該系統(tǒng)可以用來執(zhí)行本發(fā)明中描述的系統(tǒng)和方法。
[0017]圖5顯示一個系統(tǒng)體系結(jié)構(gòu)的方框圖,該系統(tǒng)可以用來執(zhí)行本發(fā)明中描述的系統(tǒng)和方法。
【【具體實施方式】】
[0018]接下來的描述提供了優(yōu)選的示例性具體實施例,而并非旨在限制本發(fā)明的范圍、適用性或配置。相反,在優(yōu)選示例性具體實施例的隨后描述中,將提供本領(lǐng)域技術(shù)人員在本領(lǐng)域中用于實施本發(fā)明的優(yōu)選示例性實施例的有利的說明??梢岳斫獾氖牵景l(fā)明可以在功能和元素排列上有各種改動和變型,而不會脫離權(quán)利要求書中所述本發(fā)明的范圍和精神。
[0019]在下文的描述中,給出了大量具體的細節(jié)以便提供對本發(fā)明更為徹底的理解。但是要理解,本領(lǐng)域普通技術(shù)人員即使沒有這些具體細節(jié)也可實施這些實施例。在一些情況下,可能沒有提供熟知的方法、算法、結(jié)構(gòu)、技術(shù)的細節(jié),以避免模糊實施例。
[0020]另外,應(yīng)當注意,實施例可以被描述為一個過程,其可以描繪成流程圖、數(shù)據(jù)流圖、結(jié)構(gòu)圖、或方框圖。盡管流程圖可能將操作描述為順序處理,但是許多操作可以并行或同時執(zhí)行。此外,操作順序也可被重新安排。一個過程終止時,它的操作也都已完成,但是也可以有額外的步驟,未包含在圖中。一個過程可以對應(yīng)于一個方法、函數(shù)、程序、子例程、子程序等。當一個過程對應(yīng)于一個函數(shù)時,其終止則對應(yīng)于該函數(shù)返回到調(diào)用函數(shù)或主函數(shù)。
[0021]此外,本文所披露的術(shù)語「存儲介質(zhì)」或「計算機可讀存儲介質(zhì)」可以表示一個或多個用于存儲數(shù)據(jù)的設(shè)備,包括只讀存儲器(ROM)、隨機存取存儲器(RAM)、磁性隨機存取存儲器、閃存、非揮發(fā)性磁心存儲器、磁盤存儲介質(zhì)、光存儲介質(zhì)、閃存裝置、和/或用于存儲信息的其他機器可讀介質(zhì)。術(shù)語“計算機可讀存儲介質(zhì)”包括,但不限于便攜式或固定的存儲設(shè)備、光存儲設(shè)備、和各種其他能夠存儲、含有或保持指令和/或數(shù)據(jù)的介質(zhì)。隊列可以由存儲介質(zhì)的一個部分或多`個部分來實施。
[0022]此外,實施例可以由硬件、軟件、虛擬機、云計算、固件、中間件、微代碼、硬件描述語言、或其任意組合來實施。當由軟件、固件、中間件或微代碼實現(xiàn)時,執(zhí)行必要任務(wù)的程序代碼或代碼段可存儲在機器可讀介質(zhì)(如存儲介質(zhì))中。處理單元可用于執(zhí)行必要任務(wù)。處理單元可以是中央處理器、專用集成電路ASIC、半導(dǎo)體芯片、邏輯單元、數(shù)字處理器、模擬處理器、現(xiàn)場可編程門陣列FPGA或任何能夠進行邏輯和算術(shù)功能的處理器。一個代碼段可以表示一個過程、函數(shù)、子程序、程序、例程、子例程、模塊、軟件包或任何指令、數(shù)據(jù)結(jié)構(gòu)、或語句的組合。一個代碼段可以連接到另一個代碼段或硬件電路,以傳遞和/或接收信息、數(shù)據(jù)、參數(shù)或存儲內(nèi)容。信息、參數(shù)、數(shù)據(jù)等可經(jīng)存儲器共享,信息傳遞、令牌傳遞、網(wǎng)絡(luò)傳輸?shù)仁侄蝸韨鬟f、轉(zhuǎn)發(fā)和/或接收。
[0023]三維電腦游戲、視頻游戲、電腦輔助設(shè)計、電影設(shè)計和其他系統(tǒng)中使用的三維場景包含多個三維圖形對象。場景引擎可利用三維圖形對象,如背景、蒙皮、網(wǎng)格、紋理、照明、著色器、紋理照明、坐標、材質(zhì)、渲染、頂點、相機等等和三維圖形對象的其他屬性來產(chǎn)生三維的虛擬場景,并顯示在計算設(shè)備的顯示屏幕上。
[0024]圖1A顯示出本發(fā)明的實施例之一。實施方案中的系統(tǒng)所包含的內(nèi)容處理器102、創(chuàng)作工具101和場景引擎103。內(nèi)容處理器102處理來自創(chuàng)作工具101的場景和三維圖形對象的信息和變化信息。然后,內(nèi)容處理器102處理信息和變化信息,并將對應(yīng)該信息和變化信息的消息(message)傳遞到場景引擎103。內(nèi)容處理器102可以由計算設(shè)備上的一個程序來實施,計算設(shè)備包括膝上型計算機、臺式計算機、平板計算機、移動電話等等。
[0025]創(chuàng)作工具101可以創(chuàng)造、修改和刪除三維圖形對象。創(chuàng)作工具101從一個用戶接收其輸入,并通過創(chuàng)作工具顯示三維圖形對象給該用戶。因此,創(chuàng)作工具101具有輸入裝置。創(chuàng)作工具101可以通過計算設(shè)備的編程來實現(xiàn),計算設(shè)備包括筆記本電腦,臺式電腦,平板電腦,和移動電話。
[0026]內(nèi)容處理器102處理來自創(chuàng)作工具101的消息。內(nèi)容處理器102可以通過計算設(shè)備的編程來實現(xiàn),計算設(shè)備包括筆記本電腦,臺式電腦,平板電腦,和移動電話。
[0027]場景引擎103允許觀看基于三維圖形對象及其變化的三維場景。因此,當三維圖形對象在創(chuàng)作工具101上變化發(fā)生時,整個藝術(shù)創(chuàng)作過程可以幾乎同時被觀看到。因此,這提高三維場景的開發(fā)過程(如游戲開發(fā)過程)的速度。
[0028]有無數(shù)的方式能改變一個三維圖形對象。例如,創(chuàng)作工具101可以改變?nèi)S圖形對象的形狀、三維圖形對象的大小、應(yīng)用于三維圖形對象上的物理模型、三維圖形對象在三維場景中的位置、三維圖形對象在三維場景中的坐標、三維場景中的用光、在三維場景中三維圖形對象的數(shù)量、場景的相機角度、三維圖形對象的相機角度、三維對象的蒙皮、三維對象的網(wǎng)格、三維圖形對象的材料、三維圖形對象的著色器、三維圖形對象的渲染、三維圖形對象的紋理等。
[0029]根據(jù)本發(fā)明其中的一個實施例,本實施例的系統(tǒng)包括創(chuàng)作工具101和內(nèi)容處理器
102。內(nèi)容處理器102和的場景引擎103彼此通過網(wǎng)絡(luò)110連通。網(wǎng)絡(luò)110可以是一個局域網(wǎng)、廣域網(wǎng)、互聯(lián)網(wǎng)、內(nèi)聯(lián)網(wǎng)、外聯(lián)網(wǎng)。創(chuàng)作工具101和內(nèi)容處理器102,可以是在同一個計算設(shè)備運行過程中的不同線程。
[0030]根據(jù)本發(fā)明其中的一個實施例,本實施例的系統(tǒng)包括內(nèi)容處理器102和場景引擎
103。內(nèi)容處理器102和創(chuàng)作工具101通過網(wǎng)絡(luò)110彼此連通,網(wǎng)絡(luò)110包括局域網(wǎng)、廣域網(wǎng)、互聯(lián)網(wǎng)、內(nèi)聯(lián)網(wǎng)、外聯(lián)網(wǎng)。內(nèi)容處理器102和場景引擎103,可以是在同一個計算設(shè)備運行過程中的不同線程。
[0031]根據(jù)本發(fā)明其中的一個實施例,本實施例的系統(tǒng)包括創(chuàng)作工具101、內(nèi)容處理器
102、以及場景引擎103,該系統(tǒng)可以通過一個計算設(shè)備或多個計算設(shè)備的編程來實現(xiàn)。例如,創(chuàng)作工具101和內(nèi)容處理器102是由同一臺臺式電腦的編程實現(xiàn),而場景引擎103是通過移動電話的編程來實現(xiàn)。在另一個例子中,創(chuàng)作工具101是通過一臺臺式電腦的編程來實現(xiàn),內(nèi)容處理部102是通過托管在云計算服務(wù)提供商的服務(wù)器的編程來實現(xiàn),場景引擎103是通過移動電話的編程來實現(xiàn)。在另一個例子中,創(chuàng)作工具101、內(nèi)容處理器102和場景引擎103都通過一個平板電腦的編程來實現(xiàn),因此創(chuàng)作工具101、內(nèi)容處理器102和場景引擎103可以通過平板電腦內(nèi)的總線系統(tǒng)互相通信。當任何兩個或所有的創(chuàng)作工具101、內(nèi)容處理器102和場景引擎103的編程實現(xiàn),都在同一個計算設(shè)備內(nèi)時,同一計算設(shè)備內(nèi)編程實現(xiàn)的制作工具101、內(nèi)容處理器102和場景引擎103之間的通信并不需要通過通信網(wǎng)絡(luò)進行,而是通過其他通訊技術(shù)來進行,包括進程間通信、線程間通信、總線通信、串行通信。
[0032]舉例說明,當創(chuàng)作工具101改變一個三維圖形對象的著色時,該三維圖形對象的變化會被轉(zhuǎn)發(fā)到內(nèi)容處理器102進行處理或被內(nèi)容處理器102獲取并進行處理。然后內(nèi)容處理器102將包含已處理的三維圖形對象和/或改變的一個或多個消息轉(zhuǎn)發(fā)給一個或多個場景引擎103,以顯示更新后的三維圖形對象。在另一個方案中,一個或多個含有被處理的三維圖形對象和/或改變信息的信息被轉(zhuǎn)發(fā)到場景引擎103是由內(nèi)容處理器102根據(jù)從場景引擎103接收到的要求而轉(zhuǎn)發(fā)的。
[0033]圖1B示出本發(fā)明其中一個實施例。該實施例系統(tǒng)包括多個創(chuàng)作工具101、一個內(nèi)容處理器102和多個場景引擎103。多個創(chuàng)作工具101通過網(wǎng)絡(luò)111與內(nèi)容處理器102進行通信。多個創(chuàng)作工具101可以同時改變一個或多個三維圖形對象。舉例說明,第一創(chuàng)作工具101改變一個三維圖形對象的網(wǎng)格,而第二創(chuàng)作工具101改變另一個三維圖形對象的光線。然后所有這些三維圖形對象的變化,都通過網(wǎng)絡(luò)111被轉(zhuǎn)發(fā)到內(nèi)容處理器102或由內(nèi)容處理器102獲取并進行處理。然后,內(nèi)容處理器102將包含已處理的三維圖形對象和/或改變的一個或多個消息,通過網(wǎng)絡(luò)111轉(zhuǎn)發(fā)給一個或多個場景引擎103,以顯示更新后的三維圖形對象。創(chuàng)作工具101和內(nèi)容處理器102之間的通信,可以通過使用互聯(lián)網(wǎng)協(xié)議(IP)數(shù)據(jù)包來進行。創(chuàng)作工具101送出的互聯(lián)網(wǎng)協(xié)議數(shù)據(jù)包可使用用戶數(shù)據(jù)報協(xié)議(UDP)或傳輸控制協(xié)議(TCP)。
[0034]圖1C顯示本發(fā)明其中一個實施例。該實施例系統(tǒng)包括多個創(chuàng)作工具101、多個內(nèi)容處理器102和多個場景引擎103。這多個創(chuàng)作工具101可以在同一時間改變一個或多個三維圖形對象。舉例說明,第一創(chuàng)作工具101改變一個三維圖形對象的紋理,和第二創(chuàng)作工具101改變同一個三維圖形對象的位置。然后,由第一創(chuàng)作工具101所作的三維圖形對象變化被轉(zhuǎn)發(fā)到第一內(nèi)容處理器102或被第一內(nèi)容處理器102獲取并進行處理。同樣,第二創(chuàng)作工具101所作的三維圖形對象改變被轉(zhuǎn)發(fā)到第二內(nèi)容處理器102或被第二內(nèi)容處理器102獲取并進行處理。然后第一和第二內(nèi)容處理器102將包含已處理信息的一個或多個消息發(fā)送到一個或多個場景引擎103,以顯示該三維圖形對象。
[0035]本領(lǐng)域技術(shù)人員會認識到,一個服務(wù)器系統(tǒng)如一個數(shù)據(jù)處理系統(tǒng),包括中央處理器CPU、存儲器、輸入/輸出I/O、程序存儲、連接總線、和其他適當?shù)牟考?,可以被編程或以其它方式設(shè)計以實踐本發(fā)明,包括創(chuàng)作工具101、內(nèi)容處理器102和場景引擎103。這樣的創(chuàng)作工具101、內(nèi)容處理器102和場景引擎103包括相應(yīng)的程序來執(zhí)行和實施本發(fā)明。
[0036]方法
[0037]圖2A顯示本發(fā)明其中一個實施例。為了方便說明,圖2A結(jié)合圖1來說明該實施例。在步驟201,當內(nèi)容處理器102識別了一個三維圖形對象的變化,那么在步驟202,內(nèi)容處理器102將一個唯一的標識符分配給該三維圖形對象變化。然后在步驟203,內(nèi)容處理器102產(chǎn)生一個關(guān)于該三維圖形對象變化的消息,并存儲該消息于一個隊列中。舉例說明,該消息包含關(guān)于更新了的頂點、蒙皮、著色、紋理的變化信息。在另一個例子中,該消息可包含關(guān)于以下更新信息:如更新了的三維圖形對象的形狀、三維圖形對象的大小、三維圖形對象的物理模型、三維圖形對象的網(wǎng)格、三維圖形對象的紋理、三維圖形對象的照明、三維圖形對象在場景中的位置、場景中使用的光線、場景中三維圖形對象的數(shù)目、場景的相機角度、三維圖形對象的相機角度、三維圖形對象的著色器、蒙皮、質(zhì)感等。根據(jù)本發(fā)明其中一個實施例,該消息包含了所有三維圖形對象變化更新后的數(shù)值,或所有三維圖形對象的變化信息?;蛘撸撓⒅话撊S圖形對象的變化特性值。[0038]然后在步驟204,內(nèi)容處理器102將消息轉(zhuǎn)發(fā)到場景引擎103。然后在步驟205,場景引擎103利用接收到的信息而更新三維場景。根據(jù)本發(fā)明其中一個實施例,內(nèi)容處理器102通過減少三維圖形對象變化的復(fù)雜性來優(yōu)化該消息的內(nèi)容。舉例說明,減少三維圖形對象變化的復(fù)雜性包括:通過找到共同頂點而減少頂點數(shù),除去只與創(chuàng)作工具101相關(guān)的信息。
[0039]內(nèi)容處理器102在步驟201的識別,可通過使用一個軟件鉤(software hook),如創(chuàng)作工具101的應(yīng)用程序可編程接口(API)來執(zhí)行。因此,當創(chuàng)作工具101改變了一個三維圖形對象時,內(nèi)容處理器102就可以獲知該變化?;蛘?,使用散列碼(hash code)去計算三維圖形對象。當一個三維圖形對象的散列碼有變化時,意味該三維圖形對象有變化。因此,內(nèi)容處理器102可以識別該三維圖形對象有變化。有許多種技術(shù)能計算散列碼,包括采用循環(huán)冗余校驗(CRC)和安全散列算法(SHA)。散列碼的計算是使用三維圖形對象或三維圖形文件串行化后的數(shù)據(jù)。三維圖形對象變化的串行化是將三維圖形對象的數(shù)據(jù)結(jié)構(gòu)、對象狀態(tài)、或三維圖形對象變化的文件轉(zhuǎn)換為可以存儲和/或傳輸?shù)母袷剿_成。散列碼的計算能在場景或?qū)ο蟾聲r執(zhí)行,或定期執(zhí)行。
[0040]三維圖形對象變化的唯一標識符,是用于協(xié)助確認三維圖形對象的變化。由于可能在很短的一段時間中,三維圖形對象有大量的變化或大量三維圖形對象有變化,唯一標識符可以幫助內(nèi)容處理器102或場景引擎103區(qū)分三維圖形對象的不同變化。
[0041]在步驟203中所產(chǎn)生的消息可以是用一組字符串或二進制的數(shù)據(jù)形式。三維圖形對象變化和唯一標識符構(gòu)成部分該消息。因此,該信息的大小各不相同。根據(jù)本發(fā)明其中一個實施例,包含一個三維圖形對象新坐標的一個消息,可能只包括X、1、z坐標信息和相應(yīng)的唯一標識符,該消息的大小范圍可以從大約10個字節(jié)到一千個字節(jié)。例如,包含一個三維圖形對象新圖像的一個消息,可能有新圖像和相應(yīng)唯一標識符的二進制數(shù)據(jù),該消息的大小范圍可以從大約一萬字節(jié)到一千兆字節(jié)。另外,根據(jù)本發(fā)明其中一個實施例,如果有與新圖像相關(guān)的照明、紋理、網(wǎng)格、和相機信息,該消息的大小范圍可以從大約從一個千字節(jié)到幾十千兆字節(jié),最好不要超過10兆字節(jié),因為網(wǎng)絡(luò)能力的原因。
[0042]在步驟204中的消息轉(zhuǎn)發(fā),可以通過本領(lǐng)域技術(shù)人員已知的多種技術(shù)來實現(xiàn)。本領(lǐng)域技術(shù)人員會明白,有許多技術(shù)能在計算設(shè)備不同進程之間、在計算設(shè)備的不同線程之間、在計算設(shè)備的不同虛擬機之間、和在通信網(wǎng)絡(luò)中的不同計算設(shè)備之間轉(zhuǎn)發(fā)消息。在一個例子中,該消息嵌入在一個互聯(lián)網(wǎng)協(xié)議包中,并使用傳輸控制協(xié)定發(fā)送該互聯(lián)網(wǎng)協(xié)議包。在另一個例子中,該消息嵌入在一個互聯(lián)網(wǎng)協(xié)議包中,并通過蜂窩網(wǎng)絡(luò)使用傳輸控制協(xié)定發(fā)送互聯(lián)網(wǎng)協(xié)議包。
[0043]根據(jù)本發(fā)明其中一個實施例,如果創(chuàng)作工具101和內(nèi)容處理器102是通過同一個計算設(shè)備的編程實現(xiàn)的,那么通過將該消息存儲于一塊共同的計算機可讀存儲介質(zhì)中而實現(xiàn)消息轉(zhuǎn)發(fā)。根據(jù)本發(fā)明其中一個實施例,消息是嵌入在通過網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)包中來轉(zhuǎn)發(fā)的。根據(jù)本發(fā)明其中一個實施例,創(chuàng)作工具101是通過在有虛擬機能力的計算設(shè)備的編程來實現(xiàn),內(nèi)容處理器102也是通過該計算設(shè)備的另一個虛擬機的編程來實現(xiàn),而消息是嵌入在數(shù)據(jù)包在計算設(shè)備中轉(zhuǎn)送的。舉例說明,消息可以嵌入在互聯(lián)網(wǎng)協(xié)議(IP)數(shù)據(jù)包中,并使用傳輸控制協(xié)議(TCP )、用戶數(shù)據(jù)報協(xié)議(UDP )或其他協(xié)議轉(zhuǎn)發(fā)。
[0044]在收到內(nèi)容處理器102的消息后,在步驟205,場景引擎103根據(jù)包含在消息中的變化信息和已經(jīng)存儲了的場景和三維圖形對象,來更新場景,然后顯示更新的場景和三維圖形對象(如果需要的話)。如果場景引擎103沒有與變化信息有關(guān)的場景信息或三維圖形對象信息時,場景引擎205會要求內(nèi)容處理器102或其他來源提供有關(guān)的場景信息或三維圖形對象信息。根據(jù)本發(fā)明其中一個實施例,場景引擎205通過創(chuàng)作工具101來顯示更新后的場景和/或三維圖形對象。
[0045]圖2B顯示本發(fā)明其中一個實施例。為了方便說明,圖2B與圖1結(jié)合來說明本實施例。圖2A中的步驟202,由圖2B的步驟202b替換,而圖2A中的步驟203,由圖2B的步驟203b替換。另外,步驟203b是在步驟202b之前。在步驟203b,產(chǎn)生一個關(guān)于三維圖形對象變化的消息。然后在步驟202b,分配一個唯一標識符給步驟203b中產(chǎn)生的消息。在圖2B中的步驟204和步驟205,基本上執(zhí)行圖2A中步驟204和步驟205相同的操作。在另一個實施中,在圖2B中的步驟204,嵌入有唯一標識符與消息的數(shù)據(jù)包被發(fā)送到場面引擎
103。在另一個實施中,該消息被修改為包含該唯一標識符,然后發(fā)送到場景引擎103。
[0046]圖3顯示本發(fā)明其中一個實施例。為了方便說明,圖3與圖1結(jié)合來說明本實施例。圖3和圖2A之間的差異是,在圖3新增了步驟311和步驟312。當內(nèi)容處理器102在步驟203產(chǎn)生了一個消息后,在步驟311,該消息會首先被存儲在一個隊列中。存儲該消息的目的,是允許該消息在產(chǎn)生后不必被立即發(fā)送到場景引擎103。有很多原因使內(nèi)容處理器102不能或不應(yīng)立即轉(zhuǎn)發(fā)該消息給場景引擎103,包括網(wǎng)絡(luò)110的網(wǎng)絡(luò)容量、場景引擎103的處理能力、內(nèi)容處理器102的處理能力、該消息已經(jīng)過時、和該信息不是一個高優(yōu)先級消肩、O
[0047]在步驟312,當內(nèi)容處理器102確定要將一個消息轉(zhuǎn)發(fā)到場景引擎103時,或當場景引擎103通知內(nèi)容處理器102其已準備接收消息時,該消息從隊列中取回。類似于圖2中的實施例,然后該消息在步驟205被轉(zhuǎn)發(fā)到內(nèi)容處理器102。
[0048]根據(jù)本發(fā)明其中一個實施例,當隊列沒有更多的存儲空間或隊列大小超過一個閾值時,存儲在隊列中最長時間的那個消息會被除去,使得隊列有存儲空間來存儲剛剛在步驟203產(chǎn)生的消息。或者,刪除存儲在隊列中的多個消息,以釋放存儲空間?;蛘撸瑏G棄該消息,不存儲,因此省略步驟311。
[0049]根據(jù)本發(fā)明其中一個實施例,當在步驟203產(chǎn)生消息時,一個用作分類三維圖形對象變化的標簽也是該消息的一部分。該標簽可被內(nèi)容處理器102或場景引擎103使用,用以確定消息的類別。內(nèi)容處理器102也可以使用該標簽以確定該消息是否包含該三維圖形對象最新的變化,或是否要刪除那些包含過時三維圖形對象變化的消息。
[0050]根據(jù)本發(fā)明其中一個實施例,在轉(zhuǎn)發(fā)包含數(shù)據(jù)的消息到場景引擎103之前,內(nèi)容處理器102從創(chuàng)作工具101所接收的數(shù)據(jù)由內(nèi)容處理器102的陰影緩存(shadow cache)處理。數(shù)據(jù)是從創(chuàng)作工具101以原始格式取回。然后經(jīng)過初步檢查,看看自從上一次處理后有沒有變化。一旦決定需要更新,陰影緩存將使用一個線程系統(tǒng)對數(shù)據(jù)進行處理。不同的數(shù)值,如頂點數(shù)據(jù)、蒙皮數(shù)據(jù)、著色數(shù)據(jù)和紋理數(shù)據(jù),將從數(shù)據(jù)中解析出。優(yōu)化這些數(shù)據(jù)以產(chǎn)生消息。優(yōu)化包括找到共同頂點以減少頂點數(shù)目。優(yōu)化能減少場景引擎103所要傳輸和處理的數(shù)據(jù)量。
[0051]根據(jù)本發(fā)明其中一個實施例,由內(nèi)容處理器102從創(chuàng)作工具101接收到的數(shù)據(jù)被分類。分類是根據(jù)消息中的唯一標識符而進行的。一旦數(shù)據(jù)被分類后,就會被發(fā)送到場景引擎103的管道處理。場景引擎103首先從管道讀出數(shù)據(jù)到適當?shù)臄?shù)據(jù)結(jié)構(gòu),然后在計算設(shè)備的GPU存儲器或CPU存儲器中產(chǎn)生數(shù)據(jù)緩沖區(qū)。數(shù)據(jù)從數(shù)據(jù)緩沖區(qū)取出后,被加上一個分類標簽和管道原始數(shù)據(jù)的鏈接,并放入一個隊列。當從數(shù)據(jù)緩沖區(qū)中取出的數(shù)據(jù)已被驗證為準備好(ready)時,該數(shù)據(jù)會被認為是有效的(active),而場景引擎103就刪除管道的原始數(shù)據(jù)。另一個實施例,場景引擎103只有在確認管道中的原始數(shù)據(jù)不被使用時,才刪除該原始數(shù)據(jù)。
[0052]系統(tǒng)
[0053]圖4是本發(fā)明一個例子的內(nèi)容處理器系統(tǒng)架構(gòu)401的方框圖,圖中內(nèi)容處理器系統(tǒng)401能執(zhí)行圖1至圖3所描述的內(nèi)容處理器102的系統(tǒng)和方法。例如,內(nèi)容處理器系統(tǒng)401可以由計算設(shè)備實現(xiàn),如個人計算機、服務(wù)器、臺式機、筆記本電腦、平板電腦、移動電話
坐寸o
[0054]實施例的內(nèi)容處理器系統(tǒng)401包括處理單元402、主存儲器403、輔助存儲器404、和網(wǎng)絡(luò)接口 405。數(shù)據(jù)總線系統(tǒng)410,如一個數(shù)據(jù)總線和一塊主板,可用于建立和控制組件402、404、和405之間的數(shù)據(jù)通信。也可以使用其他的系統(tǒng)架構(gòu)的例子。主存儲器403可與處理單元402使用數(shù)據(jù)總線410或不同的數(shù)據(jù)總線通信。
[0055]例如,處理單元402可以包括一個或多個微處理器,具有一個或多個處理內(nèi)核。例如,主存儲器403可以包括一個隨機存取存儲裝置,如動態(tài)隨機存取存儲器、或其他類型的計算機可讀介質(zhì)存儲設(shè)備。主存儲器403可以用來作為高速緩存以存儲臨時數(shù)據(jù)、寄存器的數(shù)據(jù)和來自處理單元402或輔助存儲器404的指令。例如,輔助存儲器404可以包括一個或多個硬盤驅(qū)動器、閃存、和/或只讀存儲器、或其他類型的計算機可讀介質(zhì)存儲設(shè)備。
[0056]例如,網(wǎng)絡(luò)接口 405可以包括用于與網(wǎng)絡(luò)110或111進行數(shù)據(jù)往來通信的有線或無線網(wǎng)絡(luò)設(shè)備。
[0057]在一個實施中,內(nèi)容處理器系統(tǒng)401包括用于定義存儲在主存儲器403和/或輔助存儲器404中的一個操作系統(tǒng)的指令。操作系統(tǒng)例如包括基于微軟視窗電腦操作系統(tǒng)和自由和開放源代碼操作系統(tǒng)(Linux)或其他操作系統(tǒng)。操作系統(tǒng)指令執(zhí)行后,就可進入不同的系統(tǒng)對象。系統(tǒng)對象如包括數(shù)據(jù)文件、應(yīng)用程序、功能函數(shù)等。
[0058]處理單元402根據(jù)存儲在主存儲器403和/或輔助存儲器404中的指令執(zhí)行各種功能,辨認創(chuàng)作工具101中的三維圖形對象變化、處理從創(chuàng)作工具101接收的三維圖形對象的變化信息、減少三維圖形對象變化信息的復(fù)雜性、嵌入變化信息到消息內(nèi)、并經(jīng)由網(wǎng)絡(luò)接口 405轉(zhuǎn)發(fā)消息到場景引擎103。當處理單元402決定要暫時存儲該消息時,處理單元402就存儲該消息在主存儲器403和/或輔助存儲器404中。當處理單元402決定要轉(zhuǎn)發(fā)先前存儲的消息時,處理單元402就從主存儲器403和/或輔助存儲器404中取出該消息并通過網(wǎng)絡(luò)接口 405轉(zhuǎn)發(fā)該消息到場景引擎103。
[0059]根據(jù)存儲在主存儲器403和/或輔助存儲器404中的指示,處理單元402還執(zhí)行的功能有:分配唯一標識符給一個三維圖形對象的變化。在另一個實施例,處理單元402分配唯一標識符給包含有三維圖形對象變化的消息。
[0060]處理單元402也可以定期檢查主存儲器403和/或輔助儲器404的消息。當消息可能變得過時和/或沒有足夠的空間在主存儲器403和/或輔助存儲器404中以存儲新消息時,處理單元402就決定是否需要從主存儲器403和/或輔助存儲器404中刪除一條消肩、O
[0061]一個計算設(shè)備上運行創(chuàng)作工具101是至少需要一個人機界面(HCI)與用戶互動,和至少需要一個顯示用戶界面(圖形用戶界面)用作顯示場景或三維圖形對象給用戶,使用戶可以編寫、創(chuàng)作、編輯、改變、刪除場景和三維圖形對象。
[0062]在計算設(shè)備上運行場景引擎103時,需要至少一個顯示用戶界面來顯示場景或三維圖形對象,使用戶可以看到場景和三維圖形對象。
[0063]根據(jù)本發(fā)明其中一個實施例,當創(chuàng)作工具101和場景引擎103沒有與內(nèi)容處理器102運行在同一系統(tǒng)中時,內(nèi)容處理器系統(tǒng)401不需要有人機界面與用戶互動,不需要有顯示用戶界面向用戶顯示場景或三維圖形對象。
[0064]圖5是根據(jù)本發(fā)明其中一個實施例,創(chuàng)作工具101與內(nèi)容處理器102運行在同一系統(tǒng)中。內(nèi)容處理器系統(tǒng)501與內(nèi)容處理器系統(tǒng)401執(zhí)行類似的操作。實施例的內(nèi)容處理器系統(tǒng)501包括處理單元502、主存儲器503、輔助存儲器504、和網(wǎng)絡(luò)接口 505。此外,內(nèi)容處理器系統(tǒng)501具有與用戶互動的人機界面506和向用戶顯示場景或三維圖形對象的顯示接口 507。總線系統(tǒng)510,如一個數(shù)據(jù)總線和一個主板,可用于建立和控制組件502、504、505、506和507之間的數(shù)據(jù)通信。也可以使用其他的系統(tǒng)架構(gòu)的例子。主存儲器503可與處理單元502使用數(shù)據(jù)總線510或不同的數(shù)據(jù)總線進行通信。
[0065]處理單元502、主存儲器503、輔助存儲器504和網(wǎng)絡(luò)接口 505分別被實施為處理單元402、主存儲器403、輔助存儲器404和網(wǎng)絡(luò)接口 405。
[0066]例如,顯示接口 507可以包括視頻卡、圖形加速卡、圖形處理單元GPU或顯示適配器,并配置為能產(chǎn)生和輸出圖像給一個顯示裝置。在一個實施例中,顯示接口 507可用連接到總線系統(tǒng)510的專用硬件卡來實現(xiàn)。在另一個實施方案中,顯示接口 507可由集成到總線系統(tǒng)510芯片組的一個圖形控制器來實現(xiàn)。
[0067]例如,連接到人機界面506的輸入設(shè)備可以包括視頻攝像機、鍵盤、鼠標、手寫筆等,而連接到顯示接口 507的輸出設(shè)備可以包括顯示設(shè)備、液晶顯示器、三維顯示器、計算機屏幕、電視屏幕、投影機、發(fā)光二極管顯示屏等。
[0068]處理單元502也可以根據(jù)存儲在主存儲器503和/或輔助存儲器504中的指示來執(zhí)行創(chuàng)作工具101的功能。處理單元502通過從人機界面506接收到的用戶輸入來創(chuàng)作、產(chǎn)生、編輯、刪除存儲在主存儲器503和/或輔助存儲器504中的場景和三維圖形對象。處理單元502處理了場景和三維圖形對象后,通過顯示接口 507顯示場景和三維圖形對象給用戶。處理單元502也可以卸載某些運算給顯示接口 507,從而加快運算。
[0069]圖5也顯示本發(fā)明其中一個實施例的場景引擎103和內(nèi)容處理器102運行在同一系統(tǒng)中。內(nèi)容處理器系統(tǒng)501可以具有人機界面(HCI),以與用戶進行互動,并具有顯示用戶界面來顯示場景或三維的圖形對象給用戶。因此內(nèi)容處理器系統(tǒng)501還可以執(zhí)行場景引擎103的功能。人機界面506是可選的,這取決于用戶輸入是否是必需的。然后顯示接口507根據(jù)消息中包含的變化信息來顯示已處理的場景和三維圖形對象。
[0070]處理單元502也可以根據(jù)存儲在主存儲器503和/或輔助存儲器504中的指示,執(zhí)行場景引擎103的功能。處理單元502通過人機界面506接收來自用戶的可選輸入。處理單元502處理消息中包含的三維圖形對象的變化信息,然后通過顯示接口 507顯示更新后的場景和三維圖形對象給用戶。處理單元502也可以卸載某些運算給顯示接口 507,從而加快運算。
[0071]本說明書面闡述了本發(fā)明的最佳模式,并提供了一些例子,來描述本發(fā)明,使本領(lǐng)域普通技術(shù)人員能夠?qū)嵤┖褪褂帽景l(fā)明。該書面描述不會將本發(fā)明限于所披露的確切形式。因此,雖然本發(fā)明書已詳細描述不同的實施例,但是在不脫離本發(fā)明的范圍的情況下本領(lǐng)域普通技術(shù)人員仍然可以對實施例實現(xiàn)各種改變和修改。
【權(quán)利要求】
1.一種在第一計算裝置上處理至少一個三維圖形對象的方法,該方法包括: 確定至少一個三維圖形對象的變化,其中所述變化是由一個創(chuàng)作工具做出的,其中所述創(chuàng)作工具是一個在第一計算設(shè)備或在第二計算設(shè)備中執(zhí)行的程序; 產(chǎn)生一個消息,其中所述消息嵌入有對應(yīng)所述變化的變化信息; 分配一個唯一標識符給所述消息;和 發(fā)送所述消息和所述唯一標識符到一個場景引擎,其中所述場景引擎是一個由所述第一計算設(shè)備、所述第二計算設(shè)備、或第三計算設(shè)備中執(zhí)行的程序。
2.根據(jù)權(quán)利要求1所述的方法,還包括: 當所述消息在產(chǎn)生后還沒有準備好發(fā)送時,存儲所述消息在一個隊列中;當所述消息已準備好發(fā)送時,從所述隊列中取出所述消息。
3.根據(jù)權(quán)利要求2所述的方法,還包括:當所述消息已過時,從所述隊列中丟棄所述消肩、O
4.根據(jù)權(quán)利要求2所述的方法,還包括:當所述隊列已滿時,從所述隊列中丟棄所述消肩、O
5.根據(jù)權(quán)利要求1所述的方法,其中所述變化是利用所述創(chuàng)作工具的程序編程接口API來確定的。`
6.根據(jù)權(quán)利要求1所述的方法,其中所述變化是通過計算至少一個三維圖形對象的散列碼來確定的。
7.根據(jù)權(quán)利要求1所述的方法,其中所述消息是通過一個網(wǎng)絡(luò)使用傳輸控制協(xié)議來發(fā)送所述消息的。
8.根據(jù)權(quán)利要求1所述的方法,其中所述變化信息包含所述變化相對應(yīng)的原始數(shù)據(jù)。
9.根據(jù)權(quán)利要求1所述的方法,其中所述變化信息是在降低了所述變化相對應(yīng)的原始數(shù)據(jù)的復(fù)雜性后產(chǎn)生的。
10.根據(jù)權(quán)利要求1所述的方法,其中所述變化選自:蒙皮變化、紋理變化、場景變化、照明變化、著色變化、坐標變化、頂點變化、材料變化、網(wǎng)格變化。
11.根據(jù)權(quán)利要求1所述的方法,其中作數(shù)唯一標識符被嵌入在所述消息中。
12.根據(jù)權(quán)利要求1所述的方法,其中所述唯一標識符對應(yīng)所述變化信息。
13.根據(jù)權(quán)利要求1所述的方法,其中所述唯一標識符對應(yīng)所述消息。
14.一個三維圖形對象處理系統(tǒng),包括: 至少一個處理單元; 計算機可讀存儲介質(zhì),其具有能由所述至少一個處理單元執(zhí)行的程序指令; 其中所述程序指令確定至少一個三維圖形對象的變化,其中所述變化是由一個創(chuàng)作工具做出的,所述創(chuàng)作工具是一個由所述三維圖形對象處理系統(tǒng)或由第一計算設(shè)備執(zhí)行的程序; 其中所述程序指令產(chǎn)生一個消息,其中所述消息含有一個唯一標識符和對應(yīng)所述變化的變化信息; 其中所述程序指令發(fā)送所述消息到一個場景引擎,其中所述場景引擎是一個由所述系統(tǒng)、所述第一計算設(shè)備、或第二計算設(shè)備中執(zhí)行的程序。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),其中所述計算機可讀存儲介質(zhì)還包括可由所述至少一個處理單元執(zhí)行的程序指令,所述指令用于: 當所述信息產(chǎn)生后還沒有準備好發(fā)送時,存儲所述消息在一個隊列中; 當所述消息準備好發(fā)送時,從所述隊列中取出所述消息。
16.根據(jù)權(quán)利要求15所述的系統(tǒng),其中所述計算機可讀存儲介質(zhì)還包括可由所述至少一個處理單元執(zhí)行的程序指令,所述指令用于:當所述消息已過時時,從所述隊列中丟棄所述消息。
17.根據(jù)權(quán)利要求15所述的系統(tǒng),其中所述計算機可讀存儲介質(zhì)還包括可由所述至少一個處理單元執(zhí)行的程序指令,所述指令用于:當所述隊列已滿時,從所述隊列中丟棄所述消息。
18.根據(jù)權(quán)利要求14所述的系統(tǒng),其中所述變化是通過所述創(chuàng)作工具的程序編程接口API來確定的。
19.根據(jù)權(quán)利要求14所述的系統(tǒng),其中所述變化是通過計算所述至少一個三維圖形對象的散列碼來確定的。
20.根據(jù)權(quán)利要求14所述的系統(tǒng),其中所述消息是通過一個網(wǎng)絡(luò)使用傳輸控制協(xié)議來發(fā)送所述消息的。
21.根據(jù)權(quán)利要求14所述的系統(tǒng),其中所述變化信息包含所述變化相對應(yīng)的原始數(shù)據(jù)。
22.根據(jù)權(quán)利要求14所述 的系統(tǒng),其中所述變化信息是在降低了所述變化相對應(yīng)的原始數(shù)據(jù)的復(fù)雜性后產(chǎn)生的。
23.根據(jù)權(quán)利要求14所述的系統(tǒng),其中所述變化選自:蒙皮變化、紋理變化、場景變化、照明變化、著色變化、坐標變化、頂點變化、材料變化、網(wǎng)格變化。
24.根據(jù)權(quán)利要求14所述的系統(tǒng),其中所述唯一標識符嵌入在所述消息中。
25.根據(jù)權(quán)利要求14所述的系統(tǒng),其中所述唯一標識符是對應(yīng)所述變化信息的。
26.根據(jù)權(quán)利要求14所述的系統(tǒng),其中所述唯一標識符是對應(yīng)所述消息的。
【文檔編號】G06F9/44GK103488472SQ201310284574
【公開日】2014年1月1日 申請日期:2013年7月8日 優(yōu)先權(quán)日:2013年4月8日
【發(fā)明者】俞建國 申請人:凱樂工作室有限公司