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