網(wǎng)格序列文件格式的制作方法
【專利摘要】在此描述了用于生成二進(jìn)制切換文件的技術(shù)。在二進(jìn)制切換文件中可以生成多個動畫結(jié)構(gòu)。這些動畫結(jié)構(gòu)可定義三維網(wǎng)格的序列。在二進(jìn)制切換文件中還可以生成頭部。頭部可定義被應(yīng)用到這些三維網(wǎng)格的幻燈片以生成這些幻燈片間的切換??梢杂枚M(jìn)制切換文件修改演示程序應(yīng)用,由此使演示程序應(yīng)適于提供切換。
【專利說明】網(wǎng)格序列文件格式
[0001]背景
[0002]一般而言,電子演示程序應(yīng)用允許用戶創(chuàng)建包括文本、圖像、聲音、視頻和/或其它類型的多媒體的沖擊力強的動態(tài)幻燈片演示。一些演示程序應(yīng)用可在演示中提供幻燈片間的切換和其他特征?;脽羝袚Q可指當(dāng)用戶在給出演示時從ー張幻燈片移動至下一幻燈片時產(chǎn)生的像動畫的效果。為了向演示添加視覺風(fēng)格,用戶可將幻燈片切換包括在該演示中。
[0003]演示程序應(yīng)用可包括使用戶能夠從多個可用切換中選擇預(yù)定切換以包括在演示中的功能。在用于創(chuàng)建預(yù)定切換的常規(guī)反向工程工作流中,設(shè)計者可能靈機ー動地想到切換概念并接著創(chuàng)建該切換概念的視覺表示(例如,視頻)。使用該視覺表示作為參考,程序員可創(chuàng)建ー組表示切換概念中幻燈片的移動的數(shù)學(xué)表達(dá)式。在創(chuàng)建了該組數(shù)學(xué)表達(dá)式后,程序員可把該組數(shù)學(xué)表達(dá)式轉(zhuǎn)換成能合并到演示程序應(yīng)用中的程序代碼。測試者可測試演示程序應(yīng)用并確定所執(zhí)行的與程序代碼對應(yīng)的切換是否令人滿意。如果所執(zhí)行的切換不令人滿意,則程序員可能需要重新創(chuàng)建數(shù)學(xué)表達(dá)式并重新轉(zhuǎn)換程序代碼。
[0004]常規(guī)的反向工程工作流已隨時間被證明是耗時且麻煩的。在測試者確定所執(zhí)行的切換是令人滿意的之前,程序員可能需要多次重復(fù)創(chuàng)建多組數(shù)學(xué)表達(dá)式并把每組數(shù)學(xué)表達(dá)式轉(zhuǎn)換成程序代碼。與新的ー組數(shù)學(xué)表達(dá)式對應(yīng)的每個程序代碼可能需要大量測試。此外,ー些涉及復(fù)雜運動的切換可能不便于用數(shù)學(xué)表達(dá)式來表達(dá)。
[0005]本發(fā)明所做出的公開正是對于這些和其它考慮而提出的。
[0006]概述
[0007]在此描述了生成ニ進(jìn)制切換文件的技術(shù)。ニ進(jìn)制切換文件可定義表示切換的三維網(wǎng)格序列。三維網(wǎng)格可包括定義某三維幾何結(jié)構(gòu)的頂點的集合和定義三維幾何結(jié)構(gòu)的面的索引的集合以及其他信息。切換文件的大小可基于可作出的關(guān)于幻燈片切換的各種假設(shè)而被顯著地減小。
[0008]在ー些示例技術(shù)中,ー種方法被配置成生成ニ進(jìn)制切換文件。根據(jù)該方法,各種技術(shù)可生成ニ進(jìn)制切換文件中的多個動畫結(jié)構(gòu)。這些動畫結(jié)構(gòu)可定義三維網(wǎng)格的序列。各種技術(shù)還可生成ニ進(jìn)制切換文件中的頭部。頭部可定義應(yīng)用到三維網(wǎng)格的幻燈片以產(chǎn)生這些幻燈片間的切換。各種技術(shù)還可用ニ進(jìn)制切換文件來修改演示程序應(yīng)用。演示程序應(yīng)用可適用于在經(jīng)由ニ進(jìn)制切換文件修改后提供切換。
[0009]應(yīng)該了解,上文所描述的主題還可以被實現(xiàn)為計算機控制的裝置、計算機進(jìn)程、計算系統(tǒng)或諸如計算機可讀存儲介質(zhì)之類的制品。通過閱讀下面的詳細(xì)描述并審閱相關(guān)聯(lián)的附圖,這些及各種其他特征將變得顯而易見。
[0010]提供本概述是為了以簡化的形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的選擇的概念。本概述并不g在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不g在將本概述用來限制所要求保護(hù)的主題的范圍。此外,所要求保護(hù)的主題不限于解決在本公開的任一部分中所提及的任何或所有缺點的實現(xiàn)。
[0011]附圖簡述[0012]圖1是示出根據(jù)ー些實施例的適于生成ニ進(jìn)制切換文件的計算系統(tǒng)的框圖;
[0013]圖2是示出根據(jù)ー些實施例的描述在ニ進(jìn)制切換文件的示例數(shù)據(jù)格式中包含的示例切換信息的表的圖示;
[0014]圖3是示出根據(jù)ー些實施例的用于生成ニ進(jìn)制切換文件的方法的流程圖;以及
[0015]圖4是示出用于能夠?qū)崿F(xiàn)此處所提出的各實施例的計算系統(tǒng)的說明性計算機硬件架構(gòu)的計算機架構(gòu)圖。
[0016]詳細(xì)描述
[0017]以下的詳細(xì)描述涉及將切換的設(shè)計轉(zhuǎn)換成可被利用來在演示程序應(yīng)用中實現(xiàn)切換的ニ進(jìn)制切換文件的各種技木。通過利用在此呈現(xiàn)的技術(shù)和概念,可以生成ニ進(jìn)制切換文件,而不必將該設(shè)計反向工程成ー組數(shù)學(xué)表達(dá)式。結(jié)果,顯著地降低了用于開發(fā)新切換的開發(fā)成本。此外,現(xiàn)在可以開發(fā)出過去不可能實現(xiàn)成數(shù)學(xué)表達(dá)式或?qū)崿F(xiàn)成數(shù)學(xué)表達(dá)式太具挑戰(zhàn)性的特定切換。
[0018]ニ進(jìn)制切換文件可定義表示切換的三維網(wǎng)格的序列。三維網(wǎng)格可包括定義某三維幾何結(jié)構(gòu)的頂點集合和定義該三維幾何結(jié)構(gòu)的面的索引的集合。當(dāng)以序列示出各三維網(wǎng)格時,可以產(chǎn)生切換(即,動畫)。演示可包括多張幻燈片。演示中的ー張或多張幻燈片可作為紋理貼圖被應(yīng)用到該序列中的每ー個三維網(wǎng)格。也即,幻燈片中的位置可被映射到三維網(wǎng)格中的相應(yīng)位置。以此方式,在切換的執(zhí)行期間,幻燈片可以根據(jù)三維網(wǎng)格的序列而被動畫化。
[0019]一般而言,定義三維動畫的文件相對較大。這種文件當(dāng)被合并進(jìn)用戶通常期望較小的演示文件中時可能是不切實際的。例如,用戶可能期望演示文件小到足以通過可能有文件傳送大小限制的電子郵件來方便地傳送,和/或被存儲在具有有限存儲容量的便攜式閃存數(shù)據(jù)存儲設(shè)備中。為此,切換文件的大小可基于可作出的關(guān)于幻燈片切換的各種假設(shè)而被顯著地減小。通過使用合適的數(shù)據(jù)壓縮技術(shù)可以進(jìn)ー步地壓縮ニ進(jìn)制切換文件。
[0020]盡管在結(jié)合計算機系統(tǒng)上的操作系統(tǒng)和應(yīng)用程序的執(zhí)行而執(zhí)行的程序模塊的一般上下文中提出了本文描述的主題,但是本領(lǐng)域技術(shù)人員將認(rèn)識到,其他實現(xiàn)可以結(jié)合其他類型的程序模塊來執(zhí)行。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)和其他類型的結(jié)構(gòu)。此外,本領(lǐng)域技術(shù)人員將明白,可以利用其他計算機系統(tǒng)配置來實施本文描述的主題,這些計算機系統(tǒng)配置包括手持式設(shè)備、多處理器系統(tǒng)、基于微處理器的或可編程消費電子產(chǎn)品、小型計算機、大型計算機等等。
[0021]在以下詳細(xì)描述中,將參考構(gòu)成本發(fā)明的一部分并作為說明來示出的附圖、各【具體實施方式】、或示例。現(xiàn)在參考附圖,其中在若干附圖中相同的附圖標(biāo)記表示相同的元件,用于把切換的設(shè)計轉(zhuǎn)換成演示程序應(yīng)用可讀取來實現(xiàn)切換的切換文件的計算系統(tǒng)和方法。圖1是示出根據(jù)ー些實施例的適于生成ニ進(jìn)制切換文件的計算系統(tǒng)100的框圖。計算系統(tǒng)100可包括動畫應(yīng)用102、動畫包引擎104、轉(zhuǎn)換應(yīng)用106和演示程序應(yīng)用108。
[0022]切換設(shè)計者可利用動畫應(yīng)用102來創(chuàng)建表示給定切換的三維動畫110。在各種實施例中,動畫應(yīng)用102可以是任何合適的三維計算機圖形動畫程序。三維動畫110可以被實現(xiàn)在ー個或多個文件中。在一些實施例中,三維動畫110可以用波面技術(shù)公司(WAVEFRONTTECHNOLOGIES)的OBJ幾何定義文件格式來實現(xiàn)。例如,三維動畫110中每ー幀可由對應(yīng)的OBJ文件來表示。在另ー些實施例中,三維動畫110可以以任何合適的三維模型格式來實現(xiàn)。
[0023]在創(chuàng)建三維動畫110后,切換設(shè)計者可以利用動畫包引擎104把三維動畫110導(dǎo)出到動畫包112中。動畫包112可包括三維動畫110 (例如,OBJ文件)和切換模板114。切換模板114可包括定義切換的起始狀態(tài)和結(jié)束狀態(tài)的信息。一般而言,演示中的幻燈片占據(jù)相同的幾何空間。結(jié)果,不同于許多其他的動畫,起始狀態(tài)和結(jié)束狀態(tài)可能相同。
[0024]切換模板114還可以包括定義幻燈片的信息。例如,幻燈片可被表示為單個多邊形面。切換模板114還可以包括有關(guān)與幻燈片相關(guān)聯(lián)的坐標(biāo)系(例如,右手坐標(biāo)系)的信息。切換模板114還可以包括幻燈片位置(例如,幻燈片的中心可被置于坐標(biāo)系的原點(0,0,0))。
[0025]切換模板114還可以包括與幻燈片相關(guān)聯(lián)的幻燈片旋轉(zhuǎn)(例如,幻燈片可以繞X軸旋轉(zhuǎn)90度,從而將幻燈片平放在由X軸和y軸定義的平面上,z軸在正方向上從幻燈片的前面指向外)。切換模板114還可以包括與幻燈片相關(guān)聯(lián)的幻燈片尺度(例如,幻燈片的尺寸可以被配置成映射到13.33xlOOBJ単元的10”x7.5”幻燈片)。當(dāng)演示程序應(yīng)用的用戶沒有定義照明配置吋,切換模板114還可以包括默認(rèn)幻燈片照明(例如,以1.0的強度向下指向負(fù)z軸的單向照明)。
[0026]切換設(shè)計者可以把動畫包112輸入到轉(zhuǎn)換應(yīng)用106中。轉(zhuǎn)換應(yīng)用106可以被配置成對作為轉(zhuǎn)換過程的參數(shù)的動畫包112執(zhí)行轉(zhuǎn)換過程。轉(zhuǎn)換過程可以基于三維動畫110和切換模板114把動畫包112轉(zhuǎn)換成ニ進(jìn)制切換文件116。轉(zhuǎn)換過程可以從三維動畫110提取切換信息。切換信息可以包括與在演示程序應(yīng)用108中實現(xiàn)切換相關(guān)的信息。轉(zhuǎn)換過程可接著根據(jù)切換模板114改編切換信息,從而生成ニ進(jìn)制切換文件116。
[0027]ニ進(jìn)制切換文件116可以以ニ進(jìn)制格式存儲數(shù)據(jù)。在一些實施例中,轉(zhuǎn)換應(yīng)用106還可以被配置成執(zhí)行通過合適的數(shù)據(jù)壓縮技術(shù)來壓縮ニ進(jìn)制切換文件116的壓縮過程。例如,轉(zhuǎn)換應(yīng)用106可以把ニ進(jìn)制切換文件106壓縮成ZIP文件容器。將參照附圖2更加詳細(xì)的描述ニ進(jìn)制切換文件116的文件格式的示例。文件格式包含ニ進(jìn)制切換文件116中可包括的切換信息的各種示例。
[0028]在生成ニ進(jìn)制切換文件116后,切換設(shè)計者可更新演示程序應(yīng)用108以包括ニ進(jìn)制切換文件116。例如,切換設(shè)計者可更新演示程序應(yīng)用108中的動態(tài)鏈接庫資源文件118或其他共享的資源文件以包括新的切換。切換設(shè)計者還可以更新演示程序應(yīng)用108的用戶界面120以包括新的切換。以此方式,用戶能夠從演示程序應(yīng)用108的用戶界面中選擇新的切換。
[0029]圖2是示出根據(jù)ー些實施例的描述在ニ進(jìn)制切換文件116的示例數(shù)據(jù)格式中包含的示例切換信息的表200的圖示。ニ進(jìn)制切換文件中的切換信息可以與切換對應(yīng)。在各種實現(xiàn)中,數(shù)據(jù)格式可以包括表200中所包含的部分或全部信息的組合。表200包括標(biāo)識符列202和數(shù)據(jù)類型列204。標(biāo)識符列202可指定ニ進(jìn)制切換文件116中所包含的示例信息類型的標(biāo)識符。數(shù)據(jù)類型列204可指定對應(yīng)信息類型的示例數(shù)據(jù)類型。
[0030]ニ進(jìn)制切換文件116可包括頭部208。頭部208可包括動畫計數(shù)210。動畫計數(shù)210可被配置為存儲切換中諸如幻燈片之類的對象的數(shù)目(S卩,數(shù)量)的32位無符號整型。例如,動畫計數(shù)210可以存儲與ニ進(jìn)制切換文件116對應(yīng)的切換中使用的幻燈片的數(shù)目。典型的切換可涉及兩張幻燈片(即,前一幻燈片和下一幻燈片)。在此情況下,動畫計數(shù)210可存儲值2。其他切換可以使用多于兩張的幻燈片。
[0031]頭部208還可包括動畫數(shù)組212。動畫數(shù)組212可以被配置成具有多個動畫數(shù)據(jù)結(jié)構(gòu)的數(shù)組。數(shù)組中動畫數(shù)據(jù)結(jié)構(gòu)的數(shù)目與動畫計數(shù)210對應(yīng)。每個動畫數(shù)據(jù)結(jié)構(gòu)可以存儲與切換中將要使用的演示的不同幻燈片有關(guān)的動畫數(shù)據(jù)。動畫數(shù)據(jù)可以包括合適的圖像數(shù)據(jù)(例如,各種文本、形狀、顔色等的位置和內(nèi)容)以使得演示程序應(yīng)用108能夠渲染每張幻燈片。
[0032]例如,如果動畫計數(shù)210為ニ,則動畫數(shù)組212可包括兩個動畫數(shù)據(jù)結(jié)構(gòu)。動畫數(shù)組212中的第一動畫數(shù)據(jù)結(jié)構(gòu)可存儲與第一張幻燈片對應(yīng)的動畫數(shù)據(jù),而動畫數(shù)組212中的第二動畫數(shù)據(jù)結(jié)構(gòu)可存儲與第二張幻燈片對應(yīng)的動畫數(shù)據(jù)。動畫數(shù)組212可以被配置成按照與幻燈片的次序?qū)?yīng)的順序次序來存儲各動畫數(shù)據(jù)結(jié)構(gòu)(例如,動畫[0]可對應(yīng)于序列的第一張幻燈片,動畫[I]可對應(yīng)于序列的第二張幻燈片,并以此類推)。
[0033]ニ進(jìn)制切換文件116還可包括動畫結(jié)構(gòu)214的多個實例。動畫結(jié)構(gòu)214的每個實例與切換中的三維網(wǎng)格對應(yīng)。例如,如果切換包括三個三維網(wǎng)格,則ニ進(jìn)制切換文件116可包括動畫結(jié)構(gòu)214的三個實例。動畫結(jié)構(gòu)214可包括幻燈片標(biāo)識符216,標(biāo)志值218,環(huán)境照明值220,幀計數(shù)222,索引計數(shù)224,索引數(shù)組226,頂點計數(shù)228,頂點數(shù)據(jù)數(shù)組230,包括X軸值234和y軸值236的頂點數(shù)據(jù)結(jié)構(gòu)232,增量結(jié)構(gòu)數(shù)組238,包括最小值242、范圍值244和増量數(shù)據(jù)結(jié)構(gòu)數(shù)組246的増量數(shù)據(jù)結(jié)構(gòu)240,和/或増量數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)248。
[0034]幻燈片標(biāo)識符216可被配置成指定被應(yīng)用到對應(yīng)三維網(wǎng)格的幻燈片的標(biāo)識符的32位無符號整型(例如,雙字(DWORD))。如前所述,用于渲染幻燈片的動畫數(shù)據(jù)可以被存儲在動畫數(shù)組212中??梢愿鶕?jù)與各幻燈片在演示中的次序?qū)?yīng)的順序標(biāo)識符來標(biāo)識幻燈片。例如,第一張幻燈片可具有為0的標(biāo)識符,第二張幻燈片可具有為I的標(biāo)識符,第三張幻燈片可具有為2的標(biāo)識符,并以此類推。
[0035]標(biāo)志值218可被配置成指定用來提供與對應(yīng)三維網(wǎng)格和/或切換有關(guān)的附加信息的一系列開/關(guān)標(biāo)志的32位無符號整型。32位無符號整型中的每一位可以與具有0值或I值的不同標(biāo)志對應(yīng)。示例標(biāo)志可指定對應(yīng)三維網(wǎng)格被渲染成單側(cè)三維網(wǎng)格還是被渲染成雙側(cè)三維網(wǎng)格。在該示例中,0值可對應(yīng)于單側(cè)三維網(wǎng)格,而I值可對應(yīng)于雙側(cè)三維網(wǎng)格。
[0036]環(huán)境照明值220可以被配置成指定被應(yīng)用到對應(yīng)三維網(wǎng)格的環(huán)境照明量的浮點值。例如,環(huán)境照明值220的范圍可從0.0到1.0。幀計數(shù)222可被配置為指定切換中呈現(xiàn)有對應(yīng)三維網(wǎng)格的動畫幀的數(shù)目的32位無符號整型。ニ進(jìn)制切換文件116中的每個三維網(wǎng)格可以被呈現(xiàn)在不同數(shù)目的動畫幀中。即,切換可以對ー個或多個動畫幀使用相同的三維網(wǎng)格。
[0037]索引計數(shù)224可被配置為指定對應(yīng)三維網(wǎng)格中的索引的數(shù)目的32位無符號整型。索引數(shù)組226可被配置成具有多個元素的數(shù)組。每個元素可被配置為順序地存儲對應(yīng)三維網(wǎng)格中的索引的16位無符號整型(例如,字(WORD))。索引數(shù)組226中的元素的數(shù)目可與索引計數(shù)224中指定的索引數(shù)目對應(yīng)。在一些實施例中,索引可被存儲為三個ー組的16位值(例如,三點定義ー三角形)。例如,如果存在編號0到4的四個頂點,則索引可以用這四個頂點構(gòu)成兩個三角形。第一個三角形可以利用頂點O、I和2,而第二個三角形可以利用頂點
0、2和3 (頂點0和2被共享)。索引使得各三角形能夠共享頂點。
[0038]在一些實施例中,僅第一動畫幀的三維網(wǎng)格中的索引被存儲在索引數(shù)組226中。這是因為第一動畫幀的三維網(wǎng)格中的索引在用于附加動畫幀的其他三維網(wǎng)格的切換中自始至終保持恒定。結(jié)果,通過不必為附加動畫結(jié)構(gòu)214存儲相同的信息,可以顯著減小二進(jìn)制切換文件116的大小。
[0039]頂點計數(shù)228可被配置為指定對應(yīng)三維網(wǎng)格中的頂點的數(shù)目的32位無符號整型。頂點數(shù)據(jù)數(shù)組230可以被配置成具有多個頂點數(shù)據(jù)結(jié)構(gòu)232的數(shù)組。每個頂點數(shù)據(jù)結(jié)構(gòu)232可被配置為順序地存儲對應(yīng)三維網(wǎng)格中的頂點的每個軸的16位無符號整型。頂點數(shù)據(jù)結(jié)構(gòu)232可包括X軸值234和y軸值236。頂點數(shù)據(jù)數(shù)組230中頂點數(shù)據(jù)結(jié)構(gòu)232的數(shù)目可與頂點計數(shù)228中指定的頂點數(shù)目對應(yīng)。
[0040]在一些實施例中,僅第一動畫幀的三維網(wǎng)格中的頂點被存儲在頂點數(shù)據(jù)結(jié)構(gòu)232中。二進(jìn)制切換文件116中的各個三維網(wǎng)格中的頂點的數(shù)目在切換過程期間可不變。可以用增量結(jié)構(gòu)數(shù)組238來定義頂點位置的改變(在此也稱作“增量值”),這將在下文中更加詳細(xì)地描述。頂點位置從ー動畫幀到下一動畫幀的改變通常較小。通過僅存儲位置的改變而不是頂點的全部坐標(biāo)值,可以顯著地減小二進(jìn)制切換文件116的大小。
[0041 ] 此外,在一些實施例中,僅第一動畫幀的三維網(wǎng)格中的頂點的X軸和Y軸坐標(biāo)而非z軸坐標(biāo)被存儲在頂點數(shù)據(jù)結(jié)構(gòu)232中。這是因為,在切換的第一幀中,對應(yīng)三維網(wǎng)格通常被平放在平面上(即,z軸值將為O)。通過僅存儲第一動畫幀的三維網(wǎng)格中的頂點的X軸和y軸坐標(biāo)而不存儲z軸坐標(biāo),可以顯著減小二進(jìn)制切換文件116的大小。
[0042]增量結(jié)構(gòu)數(shù)組238可以被配置成具有多個增量數(shù)據(jù)結(jié)構(gòu)240的數(shù)組。増量結(jié)構(gòu)數(shù)組238中増量數(shù)據(jù)結(jié)構(gòu)240的數(shù)目與幀計數(shù)222對應(yīng)。増量數(shù)據(jù)結(jié)構(gòu)240中的每ー個可存儲最小值242、范圍值244和増量數(shù)據(jù)結(jié)構(gòu)數(shù)組246。最小值242可被配置為存儲跨用于對應(yīng)幀的對應(yīng)三維網(wǎng)格中的頂點的最小增量值的每個軸的32位浮點值(例如,浮點型)。范圍值244可被配置為存儲跨用于對應(yīng)幀的對應(yīng)三維網(wǎng)格中的頂點的增量值范圍的每個軸的32位浮點值?!?br>
[0043]増量數(shù)據(jù)結(jié)構(gòu)數(shù)組246可以被配置成具有多個增量數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)248的數(shù)組。增量數(shù)據(jù)結(jié)構(gòu)數(shù)組246中増量數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)248的數(shù)目可與對應(yīng)三維網(wǎng)格的頂點計數(shù)228對應(yīng)。也即,增量數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)248中的每ー個與對應(yīng)三維網(wǎng)格中的各頂點中的ー個對應(yīng)。增量數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)248中的每ー個可被配置為16位有符號整型。該16位有符號整型的各個部分可被分配為定義當(dāng)前幀的三維網(wǎng)格和先前幀的三維網(wǎng)格之間的對應(yīng)頂點的X軸的改變、y軸的改變和z軸的改變。例如,前六位可定義X軸的改變,接下來的五位定義y軸的改變,而最后五位定義z軸的改變。
[0044]通過在單個16位有符號整型中存儲針對X軸、y軸和z軸的增量值,而不是存儲三個單獨的值,可以顯著減小二進(jìn)制切換文件116的大小。此外,如果動畫幀的視平面跨切換保持相對恒定(即,z軸的改變相對較小),則原先分配給z軸的位數(shù)可重新分配給X軸和/或y軸。為了計算第一幀之后的每ー幀的頂點位置,可以使用以下計算(這僅是X軸的示例,但相同的計算可適用于其他軸):X,=增量.X*范圍.X+最小? X, (X,=delta.x*range.x+min.x)其中符號‘.X’表示各個項的X分量。接著用相對于先前幀的計算的位置的増量來生成下ー幀。
[0045]二進(jìn)制切換文件116的以上實現(xiàn)不為跨切換的各三維網(wǎng)格中的每個三維網(wǎng)格的每個頂點存儲法線。在一些實施例中,演示程序應(yīng)用108可以以足夠的精度在“運行中”計算每個頂點的法線,“在運行中”指這些法線不需要被提前計算并被存儲在ニ進(jìn)制切換文件116中。這是因為三角形定義暗示了方向,并且標(biāo)準(zhǔn)法線計算被使用。通過免去對用于跨切換的每個三維網(wǎng)格中每個頂點的法線的存儲,可以顯著減小ニ進(jìn)制切換文件116的大小。
[0046]現(xiàn)在參考圖3,將提供有關(guān)轉(zhuǎn)換應(yīng)用106的操作的附加細(xì)節(jié)。圖3是示出根據(jù)ー些實施例的用于生成ニ進(jìn)制切換文件的方法的流程圖。應(yīng)理解,此處所述的邏輯操作被實現(xiàn)為(I) 一系列計算機實現(xiàn)的動作或運行于計算系統(tǒng)上的程序模塊,和/或(2)計算系統(tǒng)內(nèi)的互連的機器邏輯電路或電路模塊。該實現(xiàn)是取決于計算系統(tǒng)的性能及其他要求的選擇問題。因此,此處描述的邏輯操作被不同地稱為狀態(tài)操作、結(jié)構(gòu)設(shè)備、動作或模塊。這些操作、結(jié)構(gòu)設(shè)備、動作和模塊可以用軟件、固件、專用數(shù)字邏輯及其任何組合來實現(xiàn)。應(yīng)該理解,可以執(zhí)行比附圖中示出的和此處所描述的操作更多或更少的操作。這些操作還可以按與此處所描述的不同次序來執(zhí)行。
[0047]圖3中,例程300始于操作302,在操作302,轉(zhuǎn)換應(yīng)用106生成諸如ニ進(jìn)制切換文件116的ニ進(jìn)制切換文件中的諸如動畫結(jié)構(gòu)214的多個動畫結(jié)構(gòu)。ニ進(jìn)制切換文件可定義三維網(wǎng)格的序列。例如,多個動畫結(jié)構(gòu)可包括定義三維網(wǎng)格的動畫結(jié)構(gòu)。在一些實施例中,動畫結(jié)構(gòu)可包括指定三維網(wǎng)格中的索引的數(shù)量的索引計數(shù),諸如索引計數(shù)224。動畫結(jié)構(gòu)還可以包括諸如索引數(shù)組226的包括多個元素的索引數(shù)組。每個元素可以存儲索引中的一個。
[0048]在一些實施例中,動畫結(jié)構(gòu)可包括指定三維網(wǎng)格中的頂點的數(shù)量的頂點計數(shù),諸如頂點計數(shù)228。動畫結(jié)構(gòu)還可以包括諸如頂點數(shù)據(jù)數(shù)組230的頂點數(shù)據(jù)數(shù)組,頂點數(shù)據(jù)數(shù)組包括諸如頂點數(shù)據(jù)結(jié)構(gòu)232的多個頂點數(shù)據(jù)結(jié)構(gòu)。每個頂點數(shù)據(jù)結(jié)構(gòu)可以存儲頂點中的ー個。例如,每個頂點數(shù)據(jù)結(jié)構(gòu)可以存儲對應(yīng)頂點的X軸值和對應(yīng)頂點的I軸值。每個頂點數(shù)據(jù)結(jié)構(gòu)可不存儲對應(yīng)頂點的z軸值。
[0049]在一些實施例中,動畫結(jié)構(gòu)可包括指定該切換的呈現(xiàn)有該三維網(wǎng)格的各動畫幀的數(shù)量的巾貞計數(shù),諸如巾貞計數(shù)222。動畫結(jié)構(gòu)還可以包括諸如增量結(jié)構(gòu)數(shù)組238的增量結(jié)構(gòu)數(shù)組,増量結(jié)構(gòu)數(shù)組包括諸如增量數(shù)據(jù)結(jié)構(gòu)240的多個增量數(shù)據(jù)結(jié)構(gòu)。每個增量數(shù)據(jù)結(jié)構(gòu)可以與動畫幀中的ー個對應(yīng)。每個增量數(shù)據(jù)結(jié)構(gòu)可存儲最小值、范圍值和增量數(shù)據(jù)結(jié)構(gòu)數(shù)組。諸如最小值242的最小值可指定跨這些頂點的多個增量值中的最小増量值。諸如范圍值244的范圍值可指定跨這些頂點的增量值的范圍。
[0050]諸如增量數(shù)據(jù)結(jié)構(gòu)數(shù)組246的増量數(shù)據(jù)結(jié)構(gòu)數(shù)組可包括諸如增量數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)248的多個增量數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)。每個增量數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)可以與這些頂點中的ー個對應(yīng)。每個增量數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)可以存儲X軸增量值、y軸增量值和z軸增量值。在一些實施例中,X軸增量值、y軸增量值和z軸增量值可以被存儲在單個整型中。
[0051 ] 在一些實施例中,動畫結(jié)構(gòu)可包括指定被應(yīng)用到三維網(wǎng)格的幻燈片中的一張的幻燈片標(biāo)識符,諸如幻燈片標(biāo)識符216。動畫結(jié)構(gòu)還可以包括提供有關(guān)三維網(wǎng)格的附加信息的標(biāo)志值,諸如標(biāo)志值218。標(biāo)志值218的每一位可表示不同的標(biāo)志。例如,標(biāo)志值可以包括定義三維網(wǎng)格是被渲染成雙側(cè)三維網(wǎng)格還是被渲染成單側(cè)三維網(wǎng)格的位。動畫結(jié)構(gòu)還可以包括指定被應(yīng)用到三維網(wǎng)格的環(huán)境照明量的環(huán)境照明值,諸如環(huán)境照明值220。當(dāng)轉(zhuǎn)換應(yīng)用106生成ニ進(jìn)制切換文件中的動畫結(jié)構(gòu)時,例程300可前進(jìn)至操作304。
[0052]在操作304,轉(zhuǎn)換應(yīng)用106可生成ニ進(jìn)制切換文件中的頭部。在一些實施例中,頭部可包括指定切換中的幻燈片的數(shù)量的動畫計數(shù),諸如動畫計數(shù)210。頭部還可以包括諸如動畫數(shù)組212的動畫數(shù)組。動畫數(shù)組212可以包括多個動畫數(shù)據(jù)結(jié)構(gòu)。每個動畫數(shù)據(jù)結(jié)構(gòu)可以指定動畫數(shù)據(jù),從而使得諸如演示程序應(yīng)用108的演示程序應(yīng)用能夠渲染與該動畫數(shù)據(jù)對應(yīng)的幻燈片。當(dāng)轉(zhuǎn)換應(yīng)用106生成ニ進(jìn)制切換文件的頭部時,例程300前進(jìn)至操作306。
[0053]在操作306,轉(zhuǎn)換應(yīng)用106可修改演示程序應(yīng)用以包括ニ進(jìn)制切換文件。例如,轉(zhuǎn)換應(yīng)用106可以更新演示程序應(yīng)用中的諸如動態(tài)鏈接庫資源文件118的共享的資源文件以包括新的切換。轉(zhuǎn)換應(yīng)用106還可以更新演示程序應(yīng)用的諸如用戶界面120的用戶界面以包括新的切換。當(dāng)轉(zhuǎn)換應(yīng)用106修改演示程序應(yīng)用以包括ニ進(jìn)制切換文件時,例程300可以要么(例如周期性地、連續(xù)地或者需要時按照需求)重復(fù),要么終止。
[0054]現(xiàn)在轉(zhuǎn)向圖4,示出了展示出計算機400的示例計算機架構(gòu)圖。計算機400的示例可包括計算系統(tǒng)100。計算機400可以包括中央處理單元402、系統(tǒng)存儲器404以及將存儲器404耦合到中央處理單元402的系統(tǒng)總線406。計算機400還可包括用于存儲一個或多個程序模塊414和數(shù)據(jù)存儲416的大容量存儲設(shè)備412。程序模塊414的示例可包括轉(zhuǎn)換應(yīng)用106和演示程序應(yīng)用108。數(shù)據(jù)存儲416可以存儲動畫包112和ニ進(jìn)制切換文件116。大容量存儲設(shè)備412可以通過連接到總線406的大容量存儲控制器(未示出)來連接到處理単元402。大容量存儲設(shè)備412以及其相關(guān)聯(lián)的計算機存儲介質(zhì)可以為計算機400提供非易失性存儲。雖然此處包含的計算機存儲介質(zhì)的描述引用了諸如硬盤或CD-ROM驅(qū)動器之類的大容量存儲設(shè)備,但是本領(lǐng)域技術(shù)人員應(yīng)該了解,計算機存儲介質(zhì)可以是可由計算機400訪問的任何可用的計算機存儲介質(zhì)。
[0055]作為示例而非限制,計算機存儲介質(zhì)可以包括以用于非瞬時地存儲諸如計算機存儲指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)之類的信息的任何方法或技術(shù)實現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。例如,計算機存儲介質(zhì)包括,但不僅限于,RAM、R0M、EPR0M、EEPR0M、閃存或其他固態(tài)存儲器技術(shù),⑶-ROM、數(shù)字多功能盤(“DVD”)、HD-DVD、藍(lán)光或其他光學(xué)存儲,磁帶盒、磁帶、磁盤存儲器或其他磁存儲設(shè)備,或可以用來存儲所需信息并可由計算機400訪問的任何其他介質(zhì)。
[0056]根據(jù)各實施例,計算機400可以使用通過網(wǎng)絡(luò)418至遠(yuǎn)程計算機的邏輯連接在聯(lián)網(wǎng)環(huán)境中操作。計算機400可以通過連接至總線406的網(wǎng)絡(luò)接ロ単元410來連接到網(wǎng)絡(luò)418。應(yīng)當(dāng)理解,網(wǎng)絡(luò)接ロ単元410還可以被用來連接到其他類型的網(wǎng)絡(luò)和遠(yuǎn)程計算機系統(tǒng)。計算機400還可包括輸入/輸出控制器408,用于接收和處理來自多個輸入設(shè)備(未示出)的輸入,該多個輸入設(shè)備包括鍵盤、鼠標(biāo)、話筒和游戲控制器。類似地,輸入/輸出控制器408也可以向顯示器或其他類型的輸出設(shè)備(未示出)提供輸出。
[0057]總線406可以使處理單元402能夠從大容量存儲設(shè)備412或其他計算機存儲介質(zhì)讀取或向其寫入代碼和/或數(shù)據(jù)。計算機存儲介質(zhì)可以表示使用任何合適的技術(shù)來實現(xiàn)的存儲元件形式的裝置,這些技術(shù)包括但不限于半導(dǎo)體、磁性材料、光學(xué)等等。計算機存儲介質(zhì)可以表示存儲器組件,而無論是被表征為RAM、ROM、閃存還是其他類型的技木。
[0058]計算機存儲介質(zhì)無論是被實現(xiàn)成硬盤驅(qū)動器還是以其他方式來實現(xiàn)都還可以表示輔助存儲。硬盤驅(qū)動器實現(xiàn)可以被表征為固態(tài),或者可以包括存儲磁編碼信息的旋轉(zhuǎn)介質(zhì)。[0059]程序模塊414可以包括軟件指令,這些指令在被加載到處理單元402中并被執(zhí)行時致使計算機400生成ニ進(jìn)制切換文件。程序模塊414還可以提供計算機400可以使用在整個本說明書中所討論的組件、流程以及數(shù)據(jù)結(jié)構(gòu)來參與到整個系統(tǒng)或操作環(huán)境內(nèi)的各種工具或技術(shù)。例如,程序模塊414可實現(xiàn)用于生成ニ進(jìn)制切換文件的界面。
[0060]一般而言,程序模塊414在被加載到處理單元402中并被執(zhí)行時,可以將處理單元402和整個計算機400從通用計算系統(tǒng)變換成被定制成生成ニ進(jìn)制切換文件的專用計算系統(tǒng)。處理單元402可以用任意數(shù)量的晶體管或其他分立電路元件(它們可以單獨或共同采取任意數(shù)量的狀態(tài))來構(gòu)造。更具體而言,處理單元402可以響應(yīng)于程序模塊414中所包含的可執(zhí)行指令,作為有限狀態(tài)機來操作。這些計算機可執(zhí)行指令可以通過指定處理單元402如何在各狀態(tài)之間進(jìn)行轉(zhuǎn)換來變換處理單元402,由此變換構(gòu)成處理單元402的晶體管或其他分立硬件元件。
[0061]對程序模塊414進(jìn)行編碼還可以變換計算機存儲介質(zhì)的物理結(jié)構(gòu)。在本說明書的不同實現(xiàn)中,物理結(jié)構(gòu)的具體轉(zhuǎn)換可取決于各種因素。這些因素的示例包括但不限于:用于實現(xiàn)計算機存儲介質(zhì)的技術(shù),而不管該計算機存儲介質(zhì)被表征為主存儲還是輔助存儲等等。例如,如果計算機存儲介質(zhì)被實現(xiàn)為基于半導(dǎo)體的存儲器,則當(dāng)在其中編碼軟件時,程序模塊414可以變換半導(dǎo)體存儲器的物理狀態(tài)。例如,程序模塊414可以變換構(gòu)成半導(dǎo)體存儲器的晶體管、電容器或其他分立電路元件的狀態(tài)。
[0062]作為另ー示例,計算機存儲介質(zhì)可以使用磁性或光學(xué)技術(shù)來實現(xiàn)。在這樣的實現(xiàn)中,程序模塊414可以在該軟件在磁性或光學(xué)介質(zhì)中編碼時變換該磁性或光學(xué)介質(zhì)的物理狀態(tài)。這些轉(zhuǎn)換可包括更改給定磁性介質(zhì)內(nèi)的特定位置的磁性特征。這些轉(zhuǎn)換還可以包括改變給定光學(xué)介質(zhì)內(nèi)的特定位置的物理特征或特性,以改變這些位置的光學(xué)特性。在沒有偏離本說明書的范圍的情況下,物理介質(zhì)的其他變換也是可能的,前面提供的示例只是為了便于這ー討論。
[0063]基于上文,應(yīng)當(dāng)理解在此呈現(xiàn)了用于把切換的設(shè)計轉(zhuǎn)換成可被利用來在演示程序應(yīng)用中實現(xiàn)切換的ニ進(jìn)制切換文件的各種技木。雖然已經(jīng)以計算機結(jié)構(gòu)特征、方法動作、以及計算機可讀介質(zhì)專用的語言描述了本文提出的主題,但是將理解,在所附權(quán)利要求書中所限定的本發(fā)明不一定限于本文描述的具體特征、動作或介質(zhì)。相反,這些具體特征、動作以及介質(zhì)是作為實現(xiàn)權(quán)利要求的示例形式而公開的。
[0064]以上所述的主題僅作為說明提供,并且不應(yīng)被解釋為限制??蓪Ρ疚闹兴枋龅闹黝}作出各種修改和改變,而不必遵循示出和描述的示例實施例和應(yīng)用且不背離所附權(quán)利要求書中所闡述的本發(fā)明的真正精神和范圍。
【權(quán)利要求】
1.一種用于生成二進(jìn)制切換文件的計算機實現(xiàn)的方法,所述方法包括以下計算機實現(xiàn)的操作: 由具有處理器和存儲器的計算機生成二進(jìn)制切換文件中的多個動畫結(jié)構(gòu),所述多個動畫結(jié)構(gòu)定義三維網(wǎng)格的序列; 由所述計算機生成所述二進(jìn)制切換文件中的頭部,所述頭部定義被應(yīng)用到所述三維網(wǎng)格的幻燈片以產(chǎn)生所述幻燈片之間的切換;以及 由所述計算機用所述二進(jìn)制切換文件來修改演示程序應(yīng)用,所述演示程序應(yīng)用在所述修改后適于提供所述切換。
2.如權(quán)利要求1所述的計算機實現(xiàn)的方法,其特征在于,生成二進(jìn)制切換文件中的多個動畫結(jié)構(gòu)包括以下計算機實現(xiàn)的操作: 由所述計算機生成所述二進(jìn)制切換文件中的第一動畫結(jié)構(gòu),所述第一動畫結(jié)構(gòu)定義所述三維網(wǎng)格的序列中的第一三維網(wǎng)格。
3.如權(quán)利要求2所述的計算機實現(xiàn)的方法,其特征在干,生成所述二進(jìn)制切換文件中的第一動畫結(jié)構(gòu)包括以下計算機實現(xiàn)的操作: 由所述計算機生成所述第一動畫結(jié)構(gòu)中的索引計數(shù),所述索引計數(shù)指定所述第一三維網(wǎng)格中的索引的數(shù)量;以及 由所述計算機生成所述第一動畫結(jié)構(gòu)中的索引數(shù)組,所述索引數(shù)組包括多個元素,所述多個元素中的每個元素存儲所述索引中的ー個索引。
4.如權(quán)利要求3所述的計 算機實現(xiàn)的方法,其特征在干,生成所述二進(jìn)制切換文件中的第一動畫結(jié)構(gòu)還包括以下計算機實現(xiàn)的操作: 由所述計算機生成所述第一動畫結(jié)構(gòu)中的頂點計數(shù),所述頂點計數(shù)指定所述第一三維網(wǎng)格中的頂點的數(shù)量;以及 由所述計算機生成所述第一動畫結(jié)構(gòu)中的頂點數(shù)據(jù)數(shù)組,所述頂點數(shù)據(jù)數(shù)組包括多個頂點數(shù)據(jù)結(jié)構(gòu),所述多個頂點數(shù)據(jù)結(jié)構(gòu)中的每個頂點數(shù)據(jù)結(jié)構(gòu)存儲所述頂點中的ー個頂點。
5.如權(quán)利要求4所述的計算機實現(xiàn)的方法,其特征在于,所述頂點數(shù)據(jù)結(jié)構(gòu)中的每ー個頂點數(shù)據(jù)結(jié)構(gòu)包括所述頂點中的一個頂點的X軸值和所述頂點中的一個頂點的y軸值。
6.如權(quán)利要求5所述的計算機實現(xiàn)的方法,其特征在干,生成所述二進(jìn)制切換文件中的第一動畫結(jié)構(gòu)還包括以下計算機實現(xiàn)的操作: 由所述計算機生成所述第一動畫結(jié)構(gòu)中的幀計數(shù),所述幀計數(shù)指定所述切換的呈現(xiàn)有所述第一三維網(wǎng)格的動畫幀的數(shù)量;以及 由所述計算機生成所述第一動畫結(jié)構(gòu)中的增量結(jié)構(gòu)數(shù)組,所述增量結(jié)構(gòu)數(shù)組包括多個増量數(shù)據(jù)結(jié)構(gòu),所述多個増量數(shù)據(jù)結(jié)構(gòu)中的每個增量數(shù)據(jù)結(jié)構(gòu)與所述動畫幀中的一個動畫幀對應(yīng)。
7.如權(quán)利要求6所述的計算機實現(xiàn)的方法,其特征在于,所述多個増量數(shù)據(jù)結(jié)構(gòu)中的每個增量數(shù)據(jù)結(jié)構(gòu)包括指定跨所述動畫幀之一中的頂點的多個增量值中的最小增量值的最小值、指定跨所述動畫幀之一中頂點的多個增量值的范圍的范圍值、以及増量數(shù)據(jù)結(jié)構(gòu)數(shù)組。
8.如權(quán)利要求7所述的計算機實現(xiàn)的方法,其中所述增量數(shù)據(jù)結(jié)構(gòu)數(shù)組包括多個增量數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu),所述多個増量數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)中的每個增量數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)與所述頂點中的一個對應(yīng);并且其中所述多個増量數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)中的每個增量數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)包括X軸增量值、y軸增量值和Z軸增量值。
9. 一種其上存儲有計算機可執(zhí)行指令的計算機可讀存儲介質(zhì),所述計算機可執(zhí)行指令在由計算機執(zhí)行時使得所述計算機: 生成二進(jìn)制切換文件中的多個動畫結(jié)構(gòu),所述多個動畫結(jié)構(gòu)定義三維網(wǎng)格的序列,所述多個動畫結(jié)構(gòu)指定形成所述三維網(wǎng)格的頂點和索引; 生成所述二進(jìn)制切換文件中的頭部,所述頭部定義被應(yīng)用到所述三維網(wǎng)格的幻燈片以產(chǎn)生所述幻燈片之間的切換;以及 用所述二進(jìn)制切換文件來修改演示程序應(yīng)用,所述演示程序應(yīng)用在所述修改后適于提供所述切換。
10.一種計算機系統(tǒng),包括: 處理器; 在通信上耦合到所述處理器的存儲器;以及 程序模塊,所述程序模塊通過所述存儲器在所述處理器中執(zhí)行,并且所述程序模塊在由所述處理器執(zhí)行時使得所述計算機系統(tǒng): 生成二進(jìn)制切換文件中的多個動畫結(jié)構(gòu),所述多個動畫結(jié)構(gòu)定義三維網(wǎng)格的序列,所述多個動畫結(jié)構(gòu)指定形成所述三維網(wǎng)格的頂點和索引; 生成所述二進(jìn)制切換文件中的頭部,所述頭部定義被應(yīng)用到所述三維網(wǎng)格的幻燈片以產(chǎn)生所述幻燈片之間的切換,所述二進(jìn)制切換文件存儲所述頂點在所述切換中的各幀之間的増量值;以及 用所述二進(jìn)制切換文件來修改演示程序應(yīng)用,所述演示程序應(yīng)用在所述修改后適于提供所述切換。
【文檔編號】G06F17/00GK103597467SQ201280027126
【公開日】2014年2月19日 申請日期:2012年5月30日 優(yōu)先權(quán)日:2011年6月3日
【發(fā)明者】C·馬洛尼, R·C·希爾 申請人:微軟公司