專利名稱:用于嵌入式裝置中的3d內(nèi)容的離線優(yōu)化管線的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的方面涉及促進(jìn)開發(fā)及實(shí)施嵌入式裝置中所用3D內(nèi)容的工具。本發(fā)明的 其它方面涉及優(yōu)化所述3D內(nèi)容的工具。嵌入式裝置可以是捕捉、接收及/或傳輸語(yǔ)音、 數(shù)據(jù)、文本及/或圖像的移動(dòng)裝置。
背景技術(shù):
存在促進(jìn)開發(fā)及實(shí)施嵌入式裝置中所用3D內(nèi)容的各種系統(tǒng)。所述嵌入式裝置通 常包括顯示3D內(nèi)容的顯示器。就此來說,Qualcomm公司在商品名BREWTM下出售許 多軟件產(chǎn)品,其包括(舉例來說)SDK, SDK可在既定計(jì)算機(jī)平臺(tái)上運(yùn)行以開發(fā)用于 在嵌入式裝置(就像移動(dòng)電話)中提供3D內(nèi)容的程序。發(fā)明內(nèi)容根據(jù)一個(gè)實(shí)施例,提供包括定義包括3D圖標(biāo)及景物的3D模型以及所述3D模型 的動(dòng)畫的資源的設(shè)備。提供一種離線優(yōu)化引擎,其處理將由目標(biāo)嵌入式裝置的圖形引 擎作用的數(shù)據(jù)。提供一種圖形引擎模擬器,其在計(jì)算機(jī)平臺(tái)而非目標(biāo)嵌入式裝置上模 擬運(yùn)行圖形引擎的目標(biāo)嵌入式裝置的選擇功能,包括直接調(diào)用所述目標(biāo)嵌入式裝置的 硬件級(jí)API的API功能的API調(diào)用。
參照所注明的圖式在以下詳細(xì)說明中進(jìn)一步描述本發(fā)明的非限定實(shí)例性實(shí)施例, 其中貫穿所述圖式的數(shù)個(gè)視圖,相同參考編號(hào)表示相同部分,且其中 圖1是一個(gè)或多個(gè)裝置內(nèi)容開發(fā)平臺(tái)的方塊圖;圖2是圖解說明目標(biāo)嵌入式裝置中的軟件架構(gòu)的實(shí)施例的方塊圖;圖3是3D模型文件的實(shí)例性數(shù)據(jù)結(jié)構(gòu)的示意圖;圖4是用戶接口(UI)布局文件的實(shí)例性數(shù)據(jù)結(jié)構(gòu)的示意圖;圖5是離線優(yōu)化管線的方塊圖;圖6是目標(biāo)嵌入式裝置中選擇代碼及數(shù)據(jù)的示意圖; 圖7及8圖解說明用于烘培動(dòng)畫的過程的流程圖;圖9是圖解說明用于對(duì)3D模型及動(dòng)畫數(shù)據(jù)分層實(shí)施分層更新預(yù)處理的過程的簡(jiǎn) 圖;及圖10是用于確定(除其它之外)嵌入式裝置中將需要的存儲(chǔ)器空間的預(yù)分配過 程的流程圖。
具體實(shí)施方式
現(xiàn)在更加詳細(xì)地參照?qǐng)D式,圖1圖解說明3D內(nèi)容開發(fā)系統(tǒng)9。所圖解說明的系 統(tǒng)9包括一個(gè)或多個(gè)裝置內(nèi)容開發(fā)平臺(tái)IO及移動(dòng)裝置11。所圖解說明的移動(dòng)裝置11 包括顯示器12及鍵13??蓪?dǎo)致所圖解說明的顯示器12顯示包括3D圖標(biāo)及景物的3D 圖形虛擬接口。就此來說,可開發(fā)包括圖標(biāo)關(guān)聯(lián)構(gòu)件的3D圖標(biāo)應(yīng)用程序以將景物中 的既定3D對(duì)象與移動(dòng)裝置接口工具相關(guān)聯(lián)以通過對(duì)所述既定3D對(duì)象的操縱導(dǎo)致關(guān)于 所述移動(dòng)裝置的信號(hào)或信息的輸入及輸出中的至少一者。舉例來說,移動(dòng)裝置可為移 動(dòng)電話。輸入可涉及移動(dòng)裝置的控制功能、移動(dòng)裝置的開關(guān)狀態(tài)改變或移動(dòng)裝置的文 本輸入。輸出可涉及信息顯示、裝置的狀態(tài)或關(guān)于移動(dòng)裝置的狀況指示。通過使用所 述3D圖形虛擬接口 (包括3D圖標(biāo))輸入或輸出的信息可是關(guān)于移動(dòng)裝置11的操作、 設(shè)定、事件、狀態(tài)及/或狀況的信息。所圖解說明的移動(dòng)裝置11是一種類型的嵌入式裝置,其捕捉、接收及/或傳輸語(yǔ) 音、數(shù)據(jù)、文本及/或圖像。所圖解說明的移動(dòng)裝置11包括顯示器12及鍵13,以允許 對(duì)移動(dòng)裝置11進(jìn)行控制以及將信息輸入到移動(dòng)裝置11中。所圖解說明的裝置內(nèi)容開發(fā)平臺(tái)IO可是單個(gè)或分布式平臺(tái),或可包括多個(gè)平臺(tái)。 所圖解說明的平臺(tái)設(shè)置包括許若干個(gè)軟件接口,所述軟件接口與計(jì)算機(jī)平臺(tái)上的對(duì)應(yīng) 窗口或屏幕相互作用且提供所述對(duì)應(yīng)窗口或屏幕。所述對(duì)應(yīng)窗口或屏幕包括腳本窗口 14a及對(duì)應(yīng)的腳本語(yǔ)言接口 14b。提供對(duì)應(yīng)于源代碼接口 16b的源代碼窗口 16a。通過 使用對(duì)應(yīng)窗口 14a及16a,接口 14b及16b的每一者可操作以經(jīng)由計(jì)算機(jī)屏幕接收控 制及信息并向用戶顯示信息。所圖解說明的平臺(tái)設(shè)置IO進(jìn)一步具有可包括目標(biāo)模擬器19的離線優(yōu)化引擎18。腳本語(yǔ)言接口 14b耦合到一個(gè)或多個(gè)腳本文件20且產(chǎn)生一個(gè)或多個(gè)腳本文件20, 所述腳本文件20供用于在目標(biāo)嵌入式裝置上建造3D用戶接口。所述腳本文件20提 供用于3D圖標(biāo)及景物定義以及用于對(duì)所定義3D圖標(biāo)及景物的動(dòng)畫進(jìn)行編程的信息。源代碼接口 16b結(jié)合源代碼窗口 16a允許使用源代碼(通常使用為原始設(shè)備制造 商(OEM)提供的代碼中所提供的命令)創(chuàng)建程序??商峁?D模型系統(tǒng)32以允許所屬技術(shù)領(lǐng)域的技術(shù)人員執(zhí)行3D建模及/或圖像處 理以創(chuàng)建3D用戶接口資源且定義用戶接口布局,以各自形成且最終定義3D用戶接口。 可提供導(dǎo)出器30以導(dǎo)出文件,艮P,將來自3D模型系統(tǒng)32的所述文件轉(zhuǎn)換為可由經(jīng) 編譯腳本及/或源代碼24使用的某種類型的文件以導(dǎo)致可被導(dǎo)出到目標(biāo)嵌入式裝置的 特定類型的3D用戶接口。由導(dǎo)出器30執(zhí)行的"導(dǎo)出"不同于由裝置導(dǎo)出接口41執(zhí) 行的導(dǎo)出,裝置導(dǎo)出接口 41執(zhí)行的導(dǎo)出經(jīng)提供以將所得的代碼及數(shù)據(jù)導(dǎo)出到目標(biāo)嵌入 式裝置,例如移動(dòng)裝置11。導(dǎo)出器30將信息轉(zhuǎn)換為可與經(jīng)編譯腳本及/或源代碼24 兼容的文件(且還可由根據(jù)經(jīng)編譯的代碼操作的圖形引擎使用),而裝置導(dǎo)出接口 41 促進(jìn)將所述經(jīng)編譯的腳本及/或源代碼以及相關(guān)聯(lián)的用戶接口資源及用戶接口布局文 件物理導(dǎo)出到移動(dòng)裝置ll。在所圖解說明的實(shí)施例中,導(dǎo)出器30將來自3D建模系統(tǒng)32的信息導(dǎo)出為一組 定義用戶接口資源25、 26及27的文件以及一組定義用戶接口布局28的文件。具體來 說,所述用戶接口資源包括3D模型25、動(dòng)畫26及紋理27。離線優(yōu)化引擎18可包括目標(biāo)模擬器19,所述目標(biāo)模擬器19模擬圖形引擎以在計(jì) 算機(jī)平臺(tái)(即,平臺(tái)IO)而非目標(biāo)嵌入式裝置上模擬運(yùn)行圖形引擎(舉例來說,圖2 中所圖解說明的圖形引擎)的目標(biāo)嵌入式裝置的選擇功能。圖2提供一旦被導(dǎo)出到目標(biāo)嵌入式裝置(例如,移動(dòng)裝置ll)中便存在的軟件的 架構(gòu)圖。所述架構(gòu)包括經(jīng)編譯腳本及/或源代碼40 (其包括API調(diào)用)、受管理API44、 基礎(chǔ)結(jié)構(gòu)及API 46以及硬件級(jí)API 64。所述經(jīng)編譯腳本及/或源代碼直接與受管理API 44及基礎(chǔ)結(jié)構(gòu)API46的每一者通信,即,在受管理API44及基礎(chǔ)結(jié)構(gòu)API46的每一 者內(nèi)執(zhí)行對(duì)API功能的API調(diào)用。受管理API44包括渲染API48、資源管理API 50 及照相機(jī)管理API52。渲染API48負(fù)責(zé)存儲(chǔ)器管理、渲染狀態(tài)及其它簿記任務(wù)?;A(chǔ)結(jié)構(gòu)及API 46包括紋理54、網(wǎng)格56、動(dòng)畫58、照相機(jī)60以及數(shù)學(xué)和實(shí)用 程序62。所述結(jié)構(gòu)及API提供對(duì)所有幾何形狀、動(dòng)畫流及其它下層引擎數(shù)據(jù)類型的完 全存取。此外,可提供可獨(dú)立于所述引擎的其余部分使用的固定點(diǎn)數(shù)學(xué)及容器結(jié)構(gòu)。 可在經(jīng)編譯腳本及/或源代碼40內(nèi)實(shí)施、體現(xiàn)應(yīng)用程序,以便介接穿過受管理API 44以實(shí)施某些或所有功能。所述應(yīng)用程序可實(shí)施其自己的資源管理及存儲(chǔ)器例示技術(shù), 且因此直接與基礎(chǔ)結(jié)構(gòu)及API46介接。此外,如果OEM開發(fā)者想要寫入利用導(dǎo)出器及網(wǎng)格優(yōu)化工具的源代碼或另外保持對(duì)實(shí)施多高級(jí)功能性的控制,那么完全繞開受管 理API 44是可能的。受管理API44與基礎(chǔ)結(jié)構(gòu)及API46—起組成優(yōu)化引擎層42。舉例來說,硬件級(jí)API 64可包括OpenGL-ES軟件、Direct 3Dmobile軟件或SKT GIGA軟件。圖3示意性地顯示3D模型文件70的數(shù)據(jù)結(jié)構(gòu)的一個(gè)實(shí)施例。既定3D模型文件 70包括識(shí)別模型72的識(shí)別符72及材料參數(shù)74a、 74b...74c組,所述參數(shù)定義可繪制 所述模型的幾何形狀的方式。舉例來說,特定材料74a可具有網(wǎng)格的特定紋理及映射 色彩、特定的透明度值及特定的白熾值。材料信息74a包括所述渲染參數(shù)。提供對(duì)應(yīng) 于一既定組材料參數(shù)74a的渲染網(wǎng)格76。在所圖解說明的結(jié)構(gòu)中,渲染網(wǎng)格76包括 頂點(diǎn)陣列78、紋理坐標(biāo)陣列80及渲染群組82。渲染群組82包括渲染圖元(三角形帶、 三角形列表等等)群組??商峁┮粋€(gè)或多個(gè)更新分層84,其用于動(dòng)畫且用于將渲染群 組從本地空間變換為世界空間。圖4示意性地描繪用戶接口布局文件90的數(shù)據(jù)結(jié)構(gòu)。UI布局文件90包括UI定 義文件92及景物文件94。 UI定義文件92包括資源鏈接信息及包括UI狀態(tài)、狀態(tài)管 理、某些狀態(tài)轉(zhuǎn)變出現(xiàn)時(shí)的命令及UI事件的其它信息。景物文件94包括鏈接節(jié)點(diǎn)信 息及景物節(jié)點(diǎn)信息。景物節(jié)點(diǎn)是所有那些未鏈接到3D模型的節(jié)點(diǎn)。鏈接節(jié)點(diǎn)具有與其相關(guān)聯(lián)的3D 模型。將與鏈接節(jié)點(diǎn)相關(guān)聯(lián)的模型導(dǎo)出到其自己的文件,且在UI定義文件92中規(guī)定 其鏈接節(jié)點(diǎn)關(guān)聯(lián)。腳本語(yǔ)言可用于提供一組標(biāo)簽,所述標(biāo)簽可與外部創(chuàng)建的3D資源 (另外,可稱作用戶接口資源) 一起使用且可由另一組軟件(如圖1中所示的3D模 型系統(tǒng)32)產(chǎn)生。由所述外部軟件產(chǎn)生的所述文件由導(dǎo)出器30導(dǎo)出,且因此轉(zhuǎn)換成 與3D用戶接口開發(fā)代碼24(如從腳本文件20及/或源代碼22編譯而來)兼容的格式。圖5是可用于實(shí)施圖1中所示的離線優(yōu)化引擎18的實(shí)例性離線優(yōu)化管線99的方 塊圖。圖5中所示的離線優(yōu)化管線99以開始階段100開始。在所述開始階段中,進(jìn)行 數(shù)據(jù)驗(yàn)證及一般設(shè)置以促進(jìn)優(yōu)化過程的剩余階段。在開始階段100之后,管線繼續(xù)進(jìn) 行到抽取景物階段102。在抽取景物階段102中,管線抽取將在管線中針對(duì)3D用戶接 口中的特定景物進(jìn)行處理的數(shù)據(jù)。后續(xù)階段連續(xù)包括烘培動(dòng)畫階段104、離線設(shè)置階 段106、分層更新預(yù)處理階段108及預(yù)分配階段110。在烘培動(dòng)畫階段104中,對(duì)所抽取景物的動(dòng)畫進(jìn)行烘培以減少在目標(biāo)嵌入式裝置 中執(zhí)行3D動(dòng)畫更新時(shí)的處理時(shí)間,且對(duì)經(jīng)烘培的動(dòng)畫進(jìn)行壓縮以減少動(dòng)畫數(shù)據(jù)在目 標(biāo)嵌入式裝置中所占用的空間。在離線設(shè)置階段106中,執(zhí)行各種處理步驟,包括(例 如)簿記、索引構(gòu)筑、數(shù)據(jù)準(zhǔn)備及存儲(chǔ)器分配。在后續(xù)分層更新預(yù)處理階段108中,重新布置所抽取景物(針對(duì)3D模型及針對(duì) 動(dòng)畫)的每一分層以便目標(biāo)嵌入式裝置中的分層更新(包括從本地坐標(biāo)到世界坐標(biāo)的 轉(zhuǎn)換)將因執(zhí)行分層樹的寬度優(yōu)先遍歷而涉及非遞歸性樹遍歷。此外,在此階段中, 對(duì)樹的節(jié)點(diǎn)進(jìn)行壓縮(包括為允許目標(biāo)嵌入式裝置在空中執(zhí)行分層更新而需要存在的 節(jié)點(diǎn)),且將分層填充到單個(gè)鄰接緩沖器中。在所圖解說明的實(shí)施例中, 一旦此緩沖器 被導(dǎo)出到目標(biāo)裝置,那么所述緩沖器將采取樹數(shù)據(jù)緩沖器129 (如在圖6中所示)的 形式。在預(yù)分配階段110中,將識(shí)別所抽取景物將需要的每一數(shù)據(jù)結(jié)構(gòu)且將確定目標(biāo)嵌 入式裝置中所需的存儲(chǔ)器分配。此產(chǎn)生可在目標(biāo)嵌入式裝置中加以利用的總存儲(chǔ)器分 配圖(另外,在本文中有時(shí)稱作填充總量)以與原本可能需要的眾多存儲(chǔ)器分配調(diào)用相比僅執(zhí)行單個(gè)存儲(chǔ)器分配調(diào)用(舉例來說,使用ANSIC的MALLOC調(diào)用)。圖7及8描繪用于烘培動(dòng)畫及用于壓縮經(jīng)烘培動(dòng)畫的過程的流程圖。提供圖7及8中顯示的所圖解說明的流程圖以通過在離線步驟中預(yù)評(píng)估動(dòng)畫曲線 而在目標(biāo)嵌入式裝置上優(yōu)化動(dòng)畫更新。在圖7及8中顯示的所圖解說明的實(shí)施例產(chǎn)生 (如圖6中所示)經(jīng)烘培動(dòng)畫査找表(LUT) 124,査找表124將在目標(biāo)嵌入式裝置120 中最終成為代碼及數(shù)據(jù)122的一部分。在圖7及8中顯示的所圖解說明烘培過程中,在初始動(dòng)作200中,從所抽取的景 物中抽取動(dòng)畫分層。在下一動(dòng)作202中,為所抽取分層的每一節(jié)點(diǎn)創(chuàng)建動(dòng)畫流。在動(dòng) 作204中,為已創(chuàng)建的所有動(dòng)畫流確定取樣速率。就此來說,用戶可選擇特定的取樣 速率。大體來說,取樣速率遠(yuǎn)遠(yuǎn)高于幀的標(biāo)準(zhǔn)速率,其中動(dòng)畫的幀存儲(chǔ)在由導(dǎo)出器30 導(dǎo)出的動(dòng)畫文件26中(如圖l中所示)。可使用迭代過程調(diào)整取樣速率。舉例來說, 作者可使用所選擇的特定取樣速率模擬3D用戶接口應(yīng)用程序的所得腳本。如果所得 圖形的質(zhì)量不充分符合作者的預(yù)期,那么可相應(yīng)地改變?nèi)铀俾?。在下一?dòng)作206中,在所選擇的取樣速率下評(píng)估所有(或在替代實(shí)施例中為一子 組)的動(dòng)畫曲線。此時(shí),已獲得已在所確定的取樣速率下烘培的原始動(dòng)畫數(shù)據(jù)流。所 述數(shù)據(jù)存儲(chǔ)在離線平臺(tái)中。以實(shí)例的方式,所述原始動(dòng)畫數(shù)據(jù)可存儲(chǔ)在帶索引陣列(未顯示)中,其中可通 過將索引值(例如,通過使用索引査找表(LUT)(未顯示)確定的)輸入到所述陣列 中來存取所述帶索引陣列中的每一行。所述帶索引陣列將屬性組存儲(chǔ)在各自的行中, 其中每一行與特定的節(jié)點(diǎn)及幀相關(guān)聯(lián)。所述屬性可是(例如)x、 y、 z、 rll、 r12、 r13、 r21、 r22、 r23、 r31、 r32、 r33及色彩。x、 y及z屬性可以是景物的本地坐標(biāo)或景物的 —部分。屬性rll、 r12、 r13、 r21、 r22、 r23、 r31、 r32、 r33是旋轉(zhuǎn)及定向值,其可(例 如)對(duì)應(yīng)于3x3矩陣。在下一動(dòng)作208中,將每一幀/節(jié)點(diǎn)組合的旋轉(zhuǎn)及定向值(來自經(jīng)烘培的原始動(dòng)畫 數(shù)據(jù)流)轉(zhuǎn)換為四元數(shù)。四元數(shù)是(舉例來說)替代使用歐拉角及矩陣來表示旋轉(zhuǎn)及 定向的另一種方式。四元數(shù)可由4個(gè)值(a、 J3、 y、 w)來表示。因此,在此實(shí)例中,9 個(gè)旋轉(zhuǎn)及定向值可變換為4個(gè)四元數(shù)值。在下一動(dòng)作210中,創(chuàng)建每一唯一值的群集,所述每一唯一值均處在已從經(jīng)烘培 原始動(dòng)畫數(shù)據(jù)流的旋轉(zhuǎn)及定向轉(zhuǎn)換而來的四元數(shù)內(nèi)。在所圖解說明的實(shí)例中,群集是 可通過使用本地組坐標(biāo)(x、 y、 z)及四元數(shù)值(a、 (3、 y、 co)形成的7元組值。 一方面, 當(dāng)7元組值是唯一時(shí)便可形成所述群集。因此,如果在經(jīng)烘培原始動(dòng)畫數(shù)據(jù)中存在M 個(gè)數(shù)據(jù)行(即,對(duì)應(yīng)于幀及節(jié)點(diǎn)值的各自不同組合),那么由于非唯一的7元組值而可 存在N個(gè)群集,其中N小于M。群集可由群集向量(x、 y、 z)及群集四元數(shù)(a、 p、 y、CO)組成。在下一動(dòng)作212中,針對(duì)一既定對(duì)群集做出所述群集之間的誤差是否小于既定閾 值的確定。每一群集具有誤差值。以實(shí)例的方式,所述誤差值可是各自群集的中點(diǎn)值。舉例來說,可通過在以下兩個(gè)空間中處理7元組來識(shí)別群集對(duì)(l)笛卡爾空間(X、y、 z);及(2)四元數(shù)空間)。在笛卡爾空間中,任何兩個(gè)群集向量之間的中點(diǎn)的量值可 產(chǎn)生中點(diǎn)值mpvl。同樣地,在四元數(shù)空間中,任何兩個(gè)群集四元數(shù)之間的中點(diǎn)弧距離 的量值可產(chǎn)生中點(diǎn)值mpv2。當(dāng)動(dòng)作212處的確定確定誤差小于閾值時(shí),那么過程繼續(xù)進(jìn)行到動(dòng)作214,其中 所述對(duì)群集合并到新的群集中,且為新合并的群集計(jì)算新的最小誤差值(即,中點(diǎn)量 值的值)。過程返回到動(dòng)作212以評(píng)估另一對(duì)群集??蓪⑺鼍奂^程認(rèn)為是一種減少對(duì)應(yīng)于唯一幀節(jié)點(diǎn)對(duì)的數(shù)據(jù)行的數(shù)目的方法, 以使得可具有動(dòng)畫數(shù)據(jù)(大體來說,為翻譯信息、定向及旋轉(zhuǎn)信息)的多個(gè)唯一幀節(jié) 點(diǎn)對(duì)具有相同組的所聚集數(shù)據(jù)。當(dāng)無更多對(duì)群集滿足動(dòng)作212的條件時(shí),過程繼續(xù)進(jìn)行到動(dòng)作216,在此點(diǎn)處, 針對(duì)既定群集的既定組動(dòng)畫值,將四元數(shù)值(大體來說,四個(gè)不同的值)填充到單個(gè) 二進(jìn)制字(例如,其具有N個(gè)位,N可是例如32個(gè)位)中。在動(dòng)作216之后,壓縮過程結(jié)束。可形成更大或更小的群集以分別增加動(dòng)畫重放精確度或減小文件大小。 一旦將所 述流壓縮,便可將所述動(dòng)畫流中的個(gè)別值填充到單個(gè)鄰接存儲(chǔ)器緩沖器中,所述鄰接 存儲(chǔ)器緩沖器是針對(duì)移動(dòng)裝置的高速緩存器線特征對(duì)準(zhǔn)及優(yōu)化的。如圖6中所示, 一旦將所述動(dòng)畫流壓縮,便可將所述動(dòng)畫流中的個(gè)別值填充到單 個(gè)鄰接動(dòng)畫值存儲(chǔ)器緩沖器128中,而所述值最終被導(dǎo)出到目標(biāo)嵌入式裝置120。如圖6中所示,為了目標(biāo)裝置存取動(dòng)畫值緩沖器128中的數(shù)據(jù)的既定過程,提供 動(dòng)畫查找表(LUT) 124,其為每一唯一幀節(jié)點(diǎn)組合輸出在緩沖器128中找出對(duì)應(yīng)動(dòng)畫數(shù) 據(jù)的偏移值。.圖9是3D對(duì)象分層220的示意圖。所圖解說明的對(duì)象分層220為兩足動(dòng)物,包 括腰,腰為根節(jié)點(diǎn)。右上腿、左上腿及胸各自連接到腰。所述節(jié)點(diǎn)的每一者是腰節(jié)點(diǎn) 的孩子。左下腿及左下足各自連接到左上腿。所述節(jié)點(diǎn)的每一者是右上腿節(jié)點(diǎn)的孩子 節(jié)點(diǎn),及腰節(jié)點(diǎn)的孫子節(jié)點(diǎn)。左下腿及左下足節(jié)點(diǎn)各自耦合到左上腿節(jié)點(diǎn),是左上腿 節(jié)點(diǎn)的孩子,且是腰節(jié)點(diǎn)的孫子。所提供的頭、右上臂及左上臂節(jié)點(diǎn)是胸節(jié)點(diǎn)的孩子, 及腰節(jié)點(diǎn)的孫子。如果使用遞歸算法(其中以寬度優(yōu)先遍歷次序處理所述節(jié)點(diǎn))更新圖9中所圖解 說明的分層,那么將以以下次序處理所述節(jié)點(diǎn)首先腰節(jié)點(diǎn);其次右上腿節(jié)點(diǎn);第三 左右腿節(jié)點(diǎn);第四左右足節(jié)點(diǎn);第五左上腿節(jié)點(diǎn);等等。相反,在圖9中所示的實(shí)施 例中,使用其中以以下次序處理節(jié)點(diǎn)的寬度優(yōu)先遍歷次序首先處理腰節(jié)點(diǎn);其次處 理右上腿節(jié)點(diǎn);第三處理左上腿節(jié)點(diǎn);及第四處理胸節(jié)點(diǎn)。處理所述節(jié)點(diǎn)的次序由相關(guān)聯(lián)節(jié)點(diǎn)中的每一者左邊的編號(hào)指示。因此,在往下處理下一深度級(jí)處的節(jié)點(diǎn)之前, 分別以首先、其次、第三及第四的次序來處理腰節(jié)點(diǎn)、右上腿節(jié)點(diǎn)、左上腿節(jié)點(diǎn)及胸 節(jié)點(diǎn)。所述對(duì)節(jié)點(diǎn)的處理最終出現(xiàn)在目標(biāo)嵌入式裝置中,但可通過控制所述節(jié)點(diǎn)以此存儲(chǔ)在最終形成在目標(biāo)嵌入式裝置的堆存儲(chǔ)器中的樹數(shù)據(jù)緩沖器129 (如圖6中所示) 的鄰接部分中的次序來控制處理所述節(jié)點(diǎn)的次序。因此,可提供(通過如圖5中所示 的分層更新預(yù)處理級(jí)108離線)數(shù)據(jù)結(jié)構(gòu)221以實(shí)現(xiàn)存儲(chǔ)器的鄰接量且實(shí)現(xiàn)以最終在 目標(biāo)嵌入式裝置中處理節(jié)點(diǎn)的特定次序?qū)⑺龉?jié)點(diǎn)存儲(chǔ)在所述存儲(chǔ)器中。如圖6中所示,可將寬度優(yōu)先分層更新構(gòu)件130提供為目標(biāo)嵌入式裝置120中的 代碼及數(shù)據(jù)122的一部分,以在空中執(zhí)行特定分層的分層更新。為確定與所述分層相 關(guān)聯(lián)的數(shù)據(jù)位于動(dòng)畫數(shù)據(jù)緩沖器128中何處,寬度優(yōu)先分層更新構(gòu)件130根據(jù)經(jīng)烘培 動(dòng)畫LUT 124所提供的偏移值來找出所述數(shù)據(jù)。一旦寬度優(yōu)先分層更新構(gòu)件130在動(dòng)畫數(shù)據(jù)緩沖器128中找出所述數(shù)據(jù),解碼構(gòu) 件126便對(duì)所述數(shù)據(jù)進(jìn)行解碼(通過將所述數(shù)據(jù)轉(zhuǎn)換為齊次變換矩陣),且如樹數(shù)據(jù)緩 沖器129中所存儲(chǔ)的那樣,針對(duì)所述樹的結(jié)構(gòu)以其連續(xù)次序處理所述節(jié)點(diǎn),即,針對(duì) 圖9中的實(shí)例,首先處理腰節(jié)點(diǎn),其次為右上腿節(jié)點(diǎn),第三為左上腿節(jié)點(diǎn)等等。然后, 針對(duì)節(jié)點(diǎn)將經(jīng)更新的動(dòng)畫數(shù)據(jù)存儲(chǔ)在樹數(shù)據(jù)緩沖器129中為所述數(shù)據(jù)提供的保存空間 中。寬度優(yōu)先方法以以下次序處理既定樹的節(jié)點(diǎn)首先處理根節(jié)點(diǎn);然后孩子1、然后孩子2、...孩子N;孫子l、孫子2、...孫子M;曾孫l...。在圖9中所示的實(shí)例中,高速緩存器線邊界至少延伸兩個(gè)鄰接節(jié)點(diǎn)所需的存儲(chǔ)器 的量。因此,如果提供在目標(biāo)嵌入式裝置內(nèi)的高速緩存器具有兩條線,那么僅需要處 理一個(gè)高速緩存器未命中,即,針對(duì)圖9中所示實(shí)例中的第一到第四節(jié)點(diǎn)更新分層。 為促進(jìn)將兩個(gè)節(jié)點(diǎn)存儲(chǔ)在一個(gè)高速緩存器線邊界的空間內(nèi)的能力,可(舉例來說)使 用從如圖5中所示的經(jīng)烘培動(dòng)畫階段104提供的經(jīng)烘培動(dòng)畫產(chǎn)生的壓縮來對(duì)個(gè)別節(jié)點(diǎn) 進(jìn)行壓縮。涉及深度優(yōu)先遍歷次序的分層更新通常將導(dǎo)致眾多高速緩存器未命中。分層的節(jié) 點(diǎn)未存儲(chǔ)在鄰接存儲(chǔ)器中的事實(shí)是造成所述問題的原因中的某些原因。此外,由于遍 歷為遞歸的,因此對(duì)于每一節(jié)點(diǎn),處理及更新所述節(jié)點(diǎn)需要直到最終根節(jié)點(diǎn)的其父母 節(jié)點(diǎn)的每一者的數(shù)據(jù)。出于對(duì)關(guān)于更新分層的論述的目的,舉例來說,針對(duì)圖9中所示的實(shí)例,更新是 指在目標(biāo)嵌入式裝置的顯示器上進(jìn)行渲染之前節(jié)點(diǎn)從其本地坐標(biāo)到世界坐標(biāo)的轉(zhuǎn)換。圖9中所示的實(shí)例中的組織節(jié)點(diǎn)數(shù)據(jù)的方法的優(yōu)點(diǎn)在于此過程可消除為更新分層 信息而使用目標(biāo)裝置中的堆棧。此外,無需模仿目標(biāo)嵌入式裝置的存儲(chǔ)器的堆中的堆 棧。另外,在目標(biāo)嵌入式裝置的堆存儲(chǔ)器中耗用的總空間降到最低,以便可容納更大 的分層樹。如圖6中所示, 一旦寬度優(yōu)先分層更新構(gòu)件130將節(jié)點(diǎn)數(shù)據(jù)更新,所述節(jié)點(diǎn)數(shù)據(jù)便準(zhǔn)備好由渲染構(gòu)件135進(jìn)行渲染。圖10顯示預(yù)分配過程的流程圖。在第一動(dòng)作250中,為每一資源且為到此刻為 止在離線優(yōu)化管線99中創(chuàng)建的每一數(shù)據(jù)結(jié)構(gòu)分配存儲(chǔ)器。在動(dòng)作252中,將建立在目 標(biāo)嵌入式裝置運(yùn)行腳本且執(zhí)行所有必要操作時(shí)將處于所述目標(biāo)嵌入式裝置中的任何引 擎數(shù)據(jù)結(jié)構(gòu)。在動(dòng)作254中,目標(biāo)模擬器19模擬目標(biāo)裝置,此可涉及對(duì)(舉例來說) 所模擬的目標(biāo)嵌入式裝置內(nèi)的堆、堆棧及高速緩沖存儲(chǔ)器進(jìn)行模仿。目標(biāo)模擬器19 可進(jìn)一步模擬用于3D程序中的每一資源的引擎的所有數(shù)據(jù)結(jié)構(gòu)。在動(dòng)作256中,以引擎存取或創(chuàng)建的次序?qū)⒂伤M引擎存取的或由所模擬引擎 創(chuàng)建的所有數(shù)據(jù)填充到"模擬的"堆存儲(chǔ)器的鄰接部分中。在動(dòng)作258中,可創(chuàng)建對(duì) 目標(biāo)嵌入式裝置中的引擎有所幫助的元數(shù)據(jù)結(jié)構(gòu)。此外,可存儲(chǔ)從預(yù)分配過程產(chǎn)生的 分配數(shù)據(jù)。大致來說,分配數(shù)據(jù)包括總存儲(chǔ)器空間及在動(dòng)作256中所填充的鄰接存儲(chǔ) 器的大小。圖10中所示的分配過程(在如圖5中所示的離線優(yōu)化管線99的預(yù)分配階段110 中執(zhí)行)最終在目標(biāo)嵌入式裝置120中導(dǎo)致存儲(chǔ)器分配及拷貝構(gòu)件136根據(jù)作為預(yù)分 配過程的結(jié)果產(chǎn)生的元數(shù)據(jù)及填充總量數(shù)據(jù)138采取存儲(chǔ)器分配及拷貝動(dòng)作。具體來 說,可在開始執(zhí)行3D應(yīng)用程序時(shí)在目標(biāo)嵌入式裝置120的存儲(chǔ)器134內(nèi)進(jìn)行單個(gè)存 儲(chǔ)器分配;以及對(duì)在預(yù)分配過程中的填充動(dòng)作256期間填充的所有數(shù)據(jù)進(jìn)行單個(gè)存儲(chǔ) 器拷貝。然后,可將離線建造的任何所建造引擎數(shù)據(jù)結(jié)構(gòu)拷貝到存儲(chǔ)器中,從而產(chǎn)生 準(zhǔn)備供在目標(biāo)嵌入式裝置中使用的數(shù)據(jù)所需的單個(gè)分配及單個(gè)存儲(chǔ)器拷貝。此將目標(biāo) 嵌入式裝置所需的分配降到最低。另外,可將目標(biāo)嵌入式裝置的啟動(dòng)及初始化次數(shù)降 到最低,因?yàn)樗斜惶畛涞臄?shù)據(jù)一次性載入到目標(biāo)嵌入式裝置存儲(chǔ)器中。在本文中,由圖中所示的每一元件執(zhí)行的處理可由通用計(jì)算機(jī)及/或?qū)S锰幚碛?jì)算 機(jī)來執(zhí)行。所述處理可由單個(gè)平臺(tái)、分布式處理平臺(tái)或單獨(dú)平臺(tái)執(zhí)行。另外,可以專 用硬件的形式或以由通用計(jì)算機(jī)運(yùn)行的軟件的形式實(shí)施所述處理。在所述處理中所處 理的任何數(shù)據(jù)或作為所述處理的結(jié)果創(chuàng)建的任何數(shù)據(jù)可存儲(chǔ)在任何類型的存儲(chǔ)器中。 以實(shí)例的方式,所述數(shù)據(jù)可存儲(chǔ)在臨時(shí)存儲(chǔ)器中,例如存儲(chǔ)在既定計(jì)算機(jī)系統(tǒng)或子系 統(tǒng)的RAM中。另外或另一選擇為,所述數(shù)據(jù)可存儲(chǔ)在長(zhǎng)期存儲(chǔ)裝置中,舉例來說, 磁盤、可重寫光盤等等。出于本文中本發(fā)明的目的,計(jì)算機(jī)可讀媒體可包含任何形式 的數(shù)據(jù)存儲(chǔ)構(gòu)件,包括所述存儲(chǔ)器技術(shù)以及所述結(jié)構(gòu)及所述數(shù)據(jù)的硬件或電路表達(dá)。 可在任何機(jī)器可讀媒體及/或集成電路中實(shí)施所述過程。如同以原文形式提供的那樣以及當(dāng)其可能被變更時(shí),權(quán)利要求書均涵蓋本文中所 揭示實(shí)施例及教示的變化形式、替代方案、修改、改進(jìn)、等效物及實(shí)質(zhì)等效物,包括 目前不可預(yù)見或不了解的以及(舉例來說)可出自申請(qǐng)者/專利權(quán)所有人及其他人的那 些變化形式、替代方案、修改、改進(jìn)、等效物及實(shí)質(zhì)等效物。
權(quán)利要求
1、一種設(shè)備,其包含計(jì)算機(jī)可讀媒體,其在計(jì)算機(jī)平臺(tái)而非目標(biāo)移動(dòng)裝置中體現(xiàn)3D應(yīng)用程序;及離線引擎,其在所述計(jì)算機(jī)平臺(tái)上處理將由所述目標(biāo)移動(dòng)裝置的圖形引擎作用的數(shù)據(jù)。
2、 如權(quán)利要求1所述的設(shè)備,其中所述3D應(yīng)用程序包括3D用戶接口應(yīng)用程序。
3、 如權(quán)利要求1所述的設(shè)備,其中所述離線引擎包括數(shù)據(jù)結(jié)構(gòu)構(gòu)件,所述數(shù)據(jù) 結(jié)構(gòu)構(gòu)件創(chuàng)建且準(zhǔn)備將由所述目標(biāo)移動(dòng)裝置的所述圖形引擎作用的數(shù)據(jù)結(jié)構(gòu)。
4、 如權(quán)利要求2所述的設(shè)備,其進(jìn)一步包含圖形引擎模擬器,所述圖形引擎模 擬器在所述計(jì)算機(jī)平臺(tái)上模擬運(yùn)行圖形引擎的所述目標(biāo)移動(dòng)裝置的選擇功能,包括直 接調(diào)用所述目標(biāo)移動(dòng)裝置的硬件級(jí)API的API功能的API調(diào)用。
5、 一種設(shè)備,其包含 移動(dòng)裝置,其包括圖形引擎;及移動(dòng)裝置資源載入構(gòu)件,其將從離線計(jì)算機(jī)平臺(tái)產(chǎn)生的資源載入到所述圖形引擎 中,所述移動(dòng)裝置資源載入構(gòu)件使用單個(gè)分配來準(zhǔn)備供使用的數(shù)據(jù)。
6、 如權(quán)利要求5所述的設(shè)備,其中所述資源包括定義包括3D圖標(biāo)的3D模型以 及所述3D模型的動(dòng)畫的資源。
7、 一種設(shè)備,其包含資源,其定義包括3D圖標(biāo)及景物的3D模型以及所述3D模型的動(dòng)畫; 離線優(yōu)化引擎,其在計(jì)算機(jī)平臺(tái)而非目標(biāo)嵌入式裝置上處理將由目標(biāo)嵌入式裝置的圖形引擎作用的數(shù)據(jù);及圖形引擎模擬器,其在所述計(jì)算機(jī)平臺(tái)上模擬運(yùn)行圖形引擎的所述目標(biāo)嵌入式裝置的選擇功能,包括直接調(diào)用所述目標(biāo)嵌入式裝置的硬件級(jí)API的API功能的API調(diào)用。
8、 如權(quán)利要求7所述的設(shè)備,其中定義所述3D模型以及所述3D模型的所述動(dòng) 畫的所述資源為已從3D圖像定義系統(tǒng)導(dǎo)出的導(dǎo)出資源。
9、 如權(quán)利要求8所述的設(shè)備,其中所述離線優(yōu)化引擎包括管線。
10、 如權(quán)利要求9所述的設(shè)備,其進(jìn)一步包含腳本語(yǔ)言接口,所述腳本語(yǔ)言接口 經(jīng)由計(jì)算機(jī)屏幕輸入接收定義3D用戶接口的腳本語(yǔ)句,且產(chǎn)生一組表示定義所述3D 用戶接口的所述腳本語(yǔ)句的腳本文件。
11、 如權(quán)利要求10所述的設(shè)備,其進(jìn)一步包含圖標(biāo)關(guān)聯(lián)構(gòu)件,所述圖標(biāo)關(guān)聯(lián)構(gòu) 件將景物中的既定3D對(duì)象與移動(dòng)電話接口工具相關(guān)聯(lián),以通過對(duì)所述既定3D對(duì)象的 操縱導(dǎo)致關(guān)于所述移動(dòng)電話的信號(hào)的輸入及輸出中的至少一者。
12、 如權(quán)利要求7所述的設(shè)備,其中所述圖形引擎模擬器將模擬可與Open GL-ES、Direct 3D mobile及SKT GIGA中的一者兼容的圖形引擎。
13、 如權(quán)利要求7所述的設(shè)備,其進(jìn)一步包含烘培構(gòu)件,所述烘培構(gòu)件可在所述 計(jì)算機(jī)平臺(tái)中操作以針對(duì)既定景物動(dòng)畫將所有動(dòng)畫數(shù)據(jù)烘培到要載入到所述目標(biāo)嵌入式裝置的所述圖形引擎中的動(dòng)畫數(shù)據(jù)結(jié)構(gòu)中,所述所有動(dòng)畫數(shù)據(jù)包括關(guān)于在渲染所述 動(dòng)畫景物時(shí)用于將要顯示的每一顯示幀的所有節(jié)點(diǎn)的節(jié)點(diǎn)位置、定向及旋轉(zhuǎn)數(shù)據(jù)。
14、 如權(quán)利要求13所述的設(shè)備,其中所述烘培構(gòu)件包括用以將定向及旋轉(zhuǎn)數(shù)據(jù) 轉(zhuǎn)換為四元數(shù)的轉(zhuǎn)換構(gòu)件、用以聚集值群組的聚集構(gòu)件及用以填充四元數(shù)值群組的填 充構(gòu)件。
15、 如權(quán)利要求7所述的設(shè)備,其進(jìn)一步包含分層更新預(yù)處理構(gòu)件,所述分層更 新預(yù)處理構(gòu)件建立對(duì)3D模型樹中的節(jié)點(diǎn)的處理次序且將經(jīng)處理節(jié)點(diǎn)保存地點(diǎn)布置在 樹數(shù)據(jù)緩沖器中以供導(dǎo)出到所述目標(biāo)嵌入式裝置。
16、 如權(quán)利要求15所述的設(shè)備,其中所述節(jié)點(diǎn)的所述建立的處理次序?yàn)樗?D 模型樹的寬度優(yōu)先遍歷次序。
17、 如權(quán)利要求16所述的設(shè)備,其中所述經(jīng)處理節(jié)點(diǎn)保存地點(diǎn)是與以未修改格 式保存所述節(jié)點(diǎn)信息需要的存儲(chǔ)器空間的量相關(guān)的每一壓縮保存地點(diǎn)。
18、 如權(quán)利要求7所述的設(shè)備,其進(jìn)一步包含所述計(jì)算機(jī)平臺(tái)中的預(yù)分配構(gòu)件,所述預(yù)分配構(gòu)件包括引擎數(shù)據(jù)結(jié)構(gòu)建造器,其建造引擎數(shù)據(jù)結(jié)構(gòu); 模擬的引擎;模擬數(shù)據(jù)填充器,其填充由所述模擬的引擎存取及產(chǎn)生的數(shù)據(jù)且填充所建造的引 擎數(shù)據(jù)結(jié)構(gòu);及填充總量確定器。
19、 一種方法,其包含將3D應(yīng)用程序存儲(chǔ)在計(jì)算機(jī)平臺(tái)而非目標(biāo)移動(dòng)裝置中;及 在所述計(jì)算機(jī)平臺(tái)上離線處理將由所述目標(biāo)移動(dòng)裝置的圖形引擎作用的數(shù)據(jù)。
20、 如權(quán)利要求19所述的方法,其中所述3D應(yīng)用程序包括3D用戶接口應(yīng)用程序。
21、 如權(quán)利要求19所述的方法,其中所述處理包括創(chuàng)建且準(zhǔn)備將由所述目標(biāo)移 動(dòng)裝置的所述圖形引擎作用的數(shù)據(jù)結(jié)構(gòu)。
22、 如權(quán)利要求20所述的方法,其進(jìn)一步包含在所述計(jì)算機(jī)平臺(tái)上模擬運(yùn)行圖 形引擎的所述目標(biāo)移動(dòng)裝置的選擇功能,包括直接調(diào)用所述目標(biāo)移動(dòng)裝置的硬件級(jí) API的API功能的API調(diào)用。
23、 一種方法,其包含 提供包括圖形引擎的移動(dòng)裝置;及將從離線計(jì)算機(jī)平臺(tái)產(chǎn)生的資源載入到所述圖形引擎中,所述載入使用單個(gè)分配 來準(zhǔn)備供使用的數(shù)據(jù)。
24、 如權(quán)利要求23所述的方法,其中所述資源包括定義包括3D圖標(biāo)的3D模型 以及所述3D模型的動(dòng)畫的資源。
25、 一種方法,其包含存儲(chǔ)定義包括3D圖標(biāo)及景物的3D模型以及所述3D模型的動(dòng)畫的資源; 在計(jì)算機(jī)平臺(tái)而非目標(biāo)嵌入式裝置上處理將由目標(biāo)嵌入式裝置的圖形引擎作用的數(shù)據(jù);及在所述計(jì)算機(jī)平臺(tái)上模擬運(yùn)行圖形引擎的所述目標(biāo)嵌入式裝置的選擇功能,包括 直接調(diào)用所述目標(biāo)嵌入式裝置的硬件級(jí)API的API功能的API調(diào)用。
26、 如權(quán)利要求25所述的方法,其中所述定義所述3D模型以及所述3D模型的 所述動(dòng)畫的資源為已從3D圖像定義系統(tǒng)導(dǎo)出的導(dǎo)出資源。
27、 如權(quán)利要求25所述的方法,其進(jìn)一步包含在所述計(jì)算機(jī)平臺(tái)中進(jìn)行烘培, 所述針對(duì)既定景物動(dòng)畫的烘培包括將所有動(dòng)畫數(shù)據(jù)烘培到要載入到所述目標(biāo)嵌入式裝 置的所述圖形引擎中的動(dòng)畫數(shù)據(jù)結(jié)構(gòu)中,所述所有動(dòng)畫數(shù)據(jù)包括關(guān)于在渲染所述動(dòng)畫 景物時(shí)用于將要顯示的每一顯示幀的所有節(jié)點(diǎn)的節(jié)點(diǎn)位置、定向及旋轉(zhuǎn)數(shù)據(jù)。
28、 如權(quán)利要求27所述的方法,其中所述烘培包括將定向及旋轉(zhuǎn)數(shù)據(jù)轉(zhuǎn)換為四 元數(shù)、聚集值群組及填充四元數(shù)值群組。
29、 如權(quán)利要求25所述的方法,其進(jìn)一步包含執(zhí)行分層更新預(yù)處理以建立對(duì)3D模型樹中的節(jié)點(diǎn)的處理次序且將經(jīng)處理節(jié)點(diǎn)保存地點(diǎn)布置在樹數(shù)據(jù)緩沖器中以供導(dǎo)出 到所述目標(biāo)嵌入式裝置。
30、 如權(quán)利要求29所述的方法,其中所述節(jié)點(diǎn)的所述建立的處理次序?yàn)樗?D模型樹的寬度優(yōu)先遍歷次序。
31、 如權(quán)利要求30所述的方法,其中所述經(jīng)處理節(jié)點(diǎn)保存地點(diǎn)是與以未修改格 式保存所述節(jié)點(diǎn)信息需要的存儲(chǔ)器空間的量相關(guān)的每一壓縮保存地點(diǎn)。
32、 如權(quán)利要求25所述的方法,其進(jìn)一步在所述計(jì)算機(jī)平臺(tái)中執(zhí)行預(yù)分配,所 述預(yù)分配包括建造引擎數(shù)據(jù)結(jié)構(gòu); 模擬引擎;填充由所述模擬的引擎存取及產(chǎn)生的數(shù)據(jù)且填充所建造的引擎數(shù)據(jù)結(jié)構(gòu);及 確定填充總量。
33、 一種編碼有數(shù)據(jù)的機(jī)器可讀媒體,所述經(jīng)編碼數(shù)據(jù)可與機(jī)器互操作以致使 將3D應(yīng)用程序存儲(chǔ)在計(jì)算機(jī)平臺(tái)而非目標(biāo)移動(dòng)裝置中;及 在所述計(jì)算機(jī)平臺(tái)上離線處理將由所述目標(biāo)移動(dòng)裝置的圖形引擎作用的數(shù)據(jù)。
34、 如權(quán)利要求33所述的機(jī)器可讀媒體,其中所述3D應(yīng)用程序包括3D用戶接 口應(yīng)用程序。
35、 如權(quán)利要求33所述的機(jī)器可讀媒體,其中所述經(jīng)編碼數(shù)據(jù)可與機(jī)器互操作 以進(jìn)一步致使所述處理包括創(chuàng)建且準(zhǔn)備將由所述目標(biāo)移動(dòng)裝置的所述圖形引擎作用的數(shù)據(jù)結(jié)構(gòu)。
36、 如權(quán)利要求34所述的機(jī)器可讀媒體,其中所述經(jīng)編碼數(shù)據(jù)可與機(jī)器互操作以進(jìn)一步致使在所述計(jì)算機(jī)平臺(tái)上模擬運(yùn)行圖形引擎的所述目標(biāo)移動(dòng)裝置的選擇功能,包括直接調(diào)用所述目標(biāo)移動(dòng)裝置的硬件級(jí)API的API功能的API調(diào)用。
37、 一種編碼有數(shù)據(jù)的機(jī)器可讀媒體,所述經(jīng)編碼數(shù)據(jù)可與機(jī)器互操作以致使 提供包括圖形引擎的移動(dòng)裝置;及將從離線計(jì)算機(jī)平臺(tái)產(chǎn)生的資源載入到所述圖形引擎中,所述載入使用單個(gè)分配 來準(zhǔn)備供使用的數(shù)據(jù)。
38、 如權(quán)利要求37所述的機(jī)器可讀媒體,其中所述資源包括定義包括3D圖標(biāo)的 3D模型以及所述3D模型的動(dòng)畫的資源。
39、 一種編碼有數(shù)據(jù)的機(jī)器可讀媒體,所述經(jīng)編碼數(shù)據(jù)可與機(jī)器互操作以致使 存儲(chǔ)定義包括3D圖標(biāo)及景物的3D模型以及所述3D模型的動(dòng)畫的資源; 在計(jì)算機(jī)平臺(tái)而非目標(biāo)嵌入式裝置上處理將由目標(biāo)嵌入式裝置的圖形引擎作用的數(shù)據(jù);及在所述計(jì)算機(jī)平臺(tái)上模擬運(yùn)行圖形引擎的所述目標(biāo)嵌入式裝置的選擇功能,包括 直接調(diào)用所述目標(biāo)嵌入式裝置的硬件級(jí)API的API功能的API調(diào)用。
40、 如權(quán)利要求39所述機(jī)器可讀媒體,其中所述定義所述3D模型以及所述3D 模型的所述動(dòng)畫的資源為已從3D圖像定義系統(tǒng)導(dǎo)出的導(dǎo)出資源。
41、 如權(quán)利要求39所述的機(jī)器可讀媒體,其中所述經(jīng)編碼數(shù)據(jù)可與機(jī)器互操作 以致使在所述計(jì)算機(jī)平臺(tái)中進(jìn)行烘培,所述針對(duì)既定景物動(dòng)畫的烘培包括將所有動(dòng)畫 數(shù)據(jù)烘培到要載入到所述目標(biāo)嵌入式裝置的所述圖形引擎中的動(dòng)畫數(shù)據(jù)結(jié)構(gòu)中,所述 所有動(dòng)畫數(shù)據(jù)包括關(guān)于在渲染所述動(dòng)畫景物時(shí)用于將要顯示的每一顯示幀的所有節(jié)點(diǎn) 的節(jié)點(diǎn)位置、定向及旋轉(zhuǎn)數(shù)據(jù)。
42、 如權(quán)利要求41所述的機(jī)器可讀媒體,其中所述經(jīng)編碼數(shù)據(jù)可與機(jī)器互操作 以進(jìn)一步致使所述烘培包括將定向及旋轉(zhuǎn)數(shù)據(jù)轉(zhuǎn)換為四元數(shù)、聚集值群組及填充四元 數(shù)值群組。
43、 如權(quán)利要求39所述的機(jī)器可讀媒體,其中所述經(jīng)編碼數(shù)據(jù)可與機(jī)器互操作 以進(jìn)一步致使執(zhí)行分層更新預(yù)處理以建立對(duì)3D模型樹中的節(jié)點(diǎn)的處理次序且將經(jīng)處 理節(jié)點(diǎn)保存地點(diǎn)布置在樹數(shù)據(jù)緩沖器中以供導(dǎo)出到所述目標(biāo)嵌入式裝置。
44、 如權(quán)利要求43所述的機(jī)器可讀媒體,其中所述節(jié)點(diǎn)的所述建立的處理次序 為所述3D模型樹的寬度優(yōu)先遍歷次序。
45、 如權(quán)利要求44所述的機(jī)器可讀媒體,其中所述經(jīng)編碼數(shù)據(jù)可與機(jī)器互操作 以進(jìn)一步致使所述經(jīng)處理節(jié)點(diǎn)保存地點(diǎn)成為與以未修改格式保存所述節(jié)點(diǎn)信息需要的 存儲(chǔ)器空間的量相關(guān)的每一壓縮保存地點(diǎn)。
46、 如權(quán)利要求39所述的機(jī)器可讀媒體,其中所述經(jīng)編碼數(shù)據(jù)可與機(jī)器互操作 以進(jìn)一步致使在所述計(jì)算機(jī)平臺(tái)中執(zhí)行預(yù)分配,所述預(yù)分配包括建造引擎數(shù)據(jù)結(jié)構(gòu); 模擬引擎;填充由所述模擬的引擎存取及產(chǎn)生的數(shù)據(jù)且填充所建造的引擎數(shù)據(jù)結(jié)構(gòu);及 確定填充總量。
47、 一種設(shè)備,其包含存儲(chǔ)裝置,其用于將3D應(yīng)用程序存儲(chǔ)在計(jì)算機(jī)平臺(tái)而非目標(biāo)移動(dòng)裝置中;及 處理裝置,其用于在所述計(jì)算機(jī)平臺(tái)上離線處理將由所述目標(biāo)移動(dòng)裝置的圖形引 擎作用的數(shù)據(jù)。
48、 如權(quán)利要求47所述的設(shè)備,其中所述3D應(yīng)用程序包括3D用戶接口應(yīng)用程序。
49、 如權(quán)利要求47所述的設(shè)備,其中所述處理裝置包括用于創(chuàng)建且準(zhǔn)備將由所 述目標(biāo)移動(dòng)裝置的所述圖形引擎作用的數(shù)據(jù)結(jié)構(gòu)的裝置。
50、 如權(quán)利要求48所述的設(shè)備,其進(jìn)一步包含模擬裝置,所述模擬裝置用于在 所述計(jì)算機(jī)平臺(tái)上模擬運(yùn)行圖形引擎的所述目標(biāo)移動(dòng)裝置的選擇功能,包括直接調(diào)用 所述目標(biāo)移動(dòng)裝置的硬件級(jí)API的API功能的API調(diào)用。
51、 一種設(shè)備,其包含提供裝置,其用于提供包括圖形引擎的移動(dòng)裝置;及載入裝置,其用于將從離線計(jì)算機(jī)平臺(tái)產(chǎn)生的資源載入到所述圖形引擎中,所述 載入裝置使用單個(gè)分配來準(zhǔn)備供使用的數(shù)據(jù)。
52、 如權(quán)利要求51所述的設(shè)備,其中所述資源包括定義包括3D圖標(biāo)的3D模型 以及所述3D模型的動(dòng)畫的資源。
53、 一種設(shè)備,其包含存儲(chǔ)裝置,其用于存儲(chǔ)定義包括3D圖標(biāo)及景物的3D模型以及所述3D模型的動(dòng) 畫的資源;處理裝置,其用于在計(jì)算機(jī)平臺(tái)而非目標(biāo)嵌入式裝置上處理將由目標(biāo)嵌入式裝置 的圖形引擎作用的數(shù)據(jù);及模擬裝置,其用于在所述計(jì)算機(jī)平臺(tái)上模擬運(yùn)行圖形引擎的所述目標(biāo)嵌入式裝置 的選擇功能,包括直接調(diào)用所述目標(biāo)嵌入式裝置的硬件級(jí)API的API功能的API調(diào)用。
54、 如權(quán)利要求53所述的設(shè)備,其中所述定義所述3D模型以及所述3D模型的 所述動(dòng)畫的資源為已從3D圖像定義系統(tǒng)導(dǎo)出的導(dǎo)出資源。
55、 如權(quán)利要求53所述的設(shè)備,其進(jìn)一步包含烘培裝置,所述烘焙裝置用于在 所述計(jì)算機(jī)平臺(tái)中進(jìn)行烘培,所述針對(duì)既定景物動(dòng)畫的烘培包括將所有動(dòng)畫數(shù)據(jù)烘培 到要載入到所述目標(biāo)嵌入式裝置的所述圖形引擎中的動(dòng)畫數(shù)據(jù)結(jié)構(gòu)中,所述所有動(dòng)畫 數(shù)據(jù)包括關(guān)于在渲染所述動(dòng)畫景物時(shí)用于將要顯示的每一顯示幀的所有節(jié)點(diǎn)的節(jié)點(diǎn)位 置、定向及旋轉(zhuǎn)數(shù)據(jù)。
56、 如權(quán)利要求55所述的設(shè)備,其中所述烘培裝置包括用于將定向及旋轉(zhuǎn)數(shù)據(jù)轉(zhuǎn)換為四元數(shù)的裝置、用于聚集值群組的裝置及用于填充四元數(shù)值群組的裝置。
57、 如權(quán)利要求53所述的設(shè)備,其進(jìn)一步包含執(zhí)行裝置,所述執(zhí)行裝置用于執(zhí) 行分層更新預(yù)處理以建立對(duì)3D模型樹中的節(jié)點(diǎn)的處理次序且將經(jīng)處理節(jié)點(diǎn)保存地點(diǎn) 布置在樹數(shù)據(jù)緩沖器中以供導(dǎo)出到所述目標(biāo)嵌入式裝置。
58、 如權(quán)利要求57所述的設(shè)備,其中所述節(jié)點(diǎn)的所述建立的處理次序?yàn)樗?D 模型樹的寬度優(yōu)先遍歷次序。
59、 如權(quán)利要求58所述的設(shè)備,其中所述經(jīng)處理節(jié)點(diǎn)保存地點(diǎn)是與以未修改格 式保存所述節(jié)點(diǎn)信息需要的存儲(chǔ)器空間的量相關(guān)的每一壓縮保存地點(diǎn)。
60、 如權(quán)利要求53所述的設(shè)備,其進(jìn)一步包含用于在所述計(jì)算機(jī)平臺(tái)中執(zhí)行預(yù) 分配的裝置,所述預(yù)分配包括建造引擎數(shù)據(jù)結(jié)構(gòu); 模擬引擎;填充由所述模擬的引擎存取及產(chǎn)生的數(shù)據(jù)且填充所建造的引擎數(shù)據(jù)結(jié)構(gòu);及 確定填充總量。
全文摘要
本發(fā)明提供包括定義包括3D圖標(biāo)及景物的3D模型以及所述3D模型的動(dòng)畫的資源的設(shè)備。提供一種離線優(yōu)化引擎,其處理將由目標(biāo)嵌入式裝置的圖形引擎作用的數(shù)據(jù)。提供一種圖形引擎模擬器,其在計(jì)算機(jī)平臺(tái)而非目標(biāo)嵌入式裝置上模擬運(yùn)行圖形引擎的目標(biāo)嵌入式裝置的選擇功能,包括直接調(diào)用所述目標(biāo)嵌入式裝置的硬件級(jí)API的API功能的API調(diào)用。
文檔編號(hào)G06T15/70GK101243473SQ200680030415
公開日2008年8月13日 申請(qǐng)日期2006年6月29日 優(yōu)先權(quán)日2005年6月29日
發(fā)明者巴巴克·埃爾米, 戴維·L·杜爾尼爾, 莫里亞·沙阿, 詹姆斯·里茨 申請(qǐng)人:高通股份有限公司