專(zhuān)利名稱(chēng):基于圖像和幾何場(chǎng)景合成的統(tǒng)一表面模型的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及用于3D圖形的建模語(yǔ)言,并且更具體地說(shuō),涉及將圖像嵌入場(chǎng)景中。
背景技術(shù):
在計(jì)算機(jī)圖形學(xué)中,傳統(tǒng)的實(shí)時(shí)3D場(chǎng)景渲染是基于場(chǎng)景的3D幾何學(xué)描述的評(píng)估,使得在計(jì)算機(jī)顯示器上產(chǎn)生圖像呈現(xiàn)(presentation)。虛擬現(xiàn)實(shí)建模語(yǔ)言(下文稱(chēng)為VRML)是常規(guī)建模語(yǔ)言,其定義了在常規(guī)3D應(yīng)用(諸如分層轉(zhuǎn)換、光源、視圖原點(diǎn)、幾何、動(dòng)畫(huà)、霧化、材料特性和紋理映射)中所發(fā)現(xiàn)的大部分常用的語(yǔ)義學(xué)。紋理映射過(guò)程通常用于將外部提供的圖像數(shù)據(jù)應(yīng)用到場(chǎng)景內(nèi)的給定幾何圖形。例如,VRML允許將外部提供的圖像數(shù)據(jù)、外部提供的視頻數(shù)據(jù)或外部提供的像素?cái)?shù)據(jù)應(yīng)用到表面。然而,VRML不允許將渲染的場(chǎng)景用作要說(shuō)明性地紋理映射到另一場(chǎng)景中的圖像。在說(shuō)明性標(biāo)記語(yǔ)言中,獲得期望結(jié)果所需的語(yǔ)義學(xué)是隱含的,并且因此結(jié)果的描述足夠得到期望的結(jié)果。這樣,不必提供得到期望結(jié)果的過(guò)程(即寫(xiě)腳本)。因此,希望能夠使用說(shuō)明來(lái)合成場(chǎng)景。說(shuō)明性語(yǔ)言的一個(gè)示例是超文本標(biāo)記語(yǔ)言(HTML)。
此外,希望說(shuō)明性地組合任意兩個(gè)表面,在其上應(yīng)用圖像數(shù)據(jù)以產(chǎn)生第三表面。還希望說(shuō)明性地重新渲染應(yīng)用到表面的圖像數(shù)據(jù)以反映該圖像的當(dāng)前狀態(tài)。
傳統(tǒng)上,整體地渲染3D場(chǎng)景,給由場(chǎng)景復(fù)雜性或紋理交換確定的最壞情況性能所控制的觀察器產(chǎn)生最終幀速率。然而,如果在同一屏幕上對(duì)于不同單元使用不同的渲染速率,則質(zhì)量會(huì)提高,并且觀看體驗(yàn)會(huì)更像電視而不像網(wǎng)頁(yè)的觀看體驗(yàn)。
發(fā)明內(nèi)容
一種用于借助有效的說(shuō)明性標(biāo)記語(yǔ)言的復(fù)雜、動(dòng)態(tài)和交互體驗(yàn)的實(shí)時(shí)合成與呈現(xiàn)的系統(tǒng)和方法。使用表面構(gòu)造,開(kāi)發(fā)者可以將圖像或全運(yùn)動(dòng)視頻數(shù)據(jù)嵌入到在其3D場(chǎng)景內(nèi)他們要使用傳統(tǒng)紋理映射的任何地方。開(kāi)發(fā)者還可以將渲染一個(gè)場(chǎng)景描述的結(jié)果用作要被紋理映射到另一個(gè)場(chǎng)景中的圖像。具體地說(shuō),表面允許將任何渲染應(yīng)用的結(jié)果用作開(kāi)發(fā)者的場(chǎng)景內(nèi)的紋理。這允許用去耦(decoupled)渲染速率說(shuō)明性地渲染嵌套場(chǎng)景以及渲染具有分量表面的場(chǎng)景。
圖1A示出了Blendo的基本結(jié)構(gòu)。
圖1B是說(shuō)明通過(guò)Blendo引擎的內(nèi)容流的流程圖。
圖2A說(shuō)明如何以不同的渲染速率渲染場(chǎng)景中的兩個(gè)表面。
圖2B是說(shuō)明在以不同的渲染速率渲染圖2A所示的兩個(gè)表面中所涉及的操作的流程圖。
圖3A說(shuō)明嵌套場(chǎng)景。
圖3B是顯示渲染圖3A的嵌套場(chǎng)景所執(zhí)行的操作的流程圖。
具體實(shí)施例方式
Blendo是本發(fā)明的示范性實(shí)施例,它允許媒體資產(chǎn)的暫時(shí)操作,包括動(dòng)畫(huà)和可視影像的控制以及到正在播放的媒體資產(chǎn)的音頻媒體、視頻媒體、動(dòng)畫(huà)和事件數(shù)據(jù)的插入字幕。圖1示出了基本Blendo結(jié)構(gòu)。Blendo結(jié)構(gòu)的核心處是核心運(yùn)行時(shí)間模塊10(下文稱(chēng)核心),它給出了各種應(yīng)用編程接口(下文稱(chēng)API)單元和到在系統(tǒng)11中給出的對(duì)象集的對(duì)象模型。在正常操作期間,解析器14將文件解析為原始場(chǎng)景圖16,并傳遞到核心10,在此用具體例子說(shuō)明它的對(duì)象,并構(gòu)建運(yùn)行時(shí)間場(chǎng)景圖。對(duì)象可以是內(nèi)置對(duì)象18、開(kāi)發(fā)者定義的對(duì)象20、本機(jī)對(duì)象24等。對(duì)象使用可用的管理器26的集合以獲得平臺(tái)服務(wù)32。這些平臺(tái)服務(wù)32包括事件處理、資產(chǎn)加載、媒體播放等。對(duì)象使用渲染層28來(lái)合成中間或最終圖像用于顯示。頁(yè)面集成部分30用于將Blendo對(duì)接到外部環(huán)境,諸如HTML或XML頁(yè)面。
Blendo包含關(guān)于管理器26集合的系統(tǒng)對(duì)象。每個(gè)管理器26提供API集合以控制系統(tǒng)11的某方面。事件管理器26D提供訪問(wèn)由用戶(hù)輸入或環(huán)境事件所引起的輸入系統(tǒng)事件。加載管理器26C便于Blendo文件和本機(jī)節(jié)點(diǎn)實(shí)現(xiàn)的加載。媒體管理器26E提供加載、控制和播放音頻、圖像和視頻媒體資產(chǎn)的能力。渲染管理器26G允許渲染場(chǎng)景所用的對(duì)象的創(chuàng)建和管理。場(chǎng)景管理器26A控制場(chǎng)景圖。表面管理器26F允許在其上可合成場(chǎng)景單元和其它資產(chǎn)的表面的創(chuàng)建和管理。線程管理器26B給開(kāi)發(fā)者產(chǎn)生并控制線程以及在它們之間通信的能力。
圖1B說(shuō)明通過(guò)Blendo引擎的內(nèi)容流的概念性描述的流程圖。在塊50中,呈現(xiàn)開(kāi)始于包括被帶入解析器14(圖1A)的內(nèi)容的文件或流34(圖1A)的源。該源可以本機(jī)的類(lèi)似VRML的文本格式、本機(jī)二進(jìn)制格式、基于XML的格式等。不管源的格式,在塊55中,將源轉(zhuǎn)換為原始場(chǎng)景圖16(圖1A)。原始場(chǎng)景圖16可以表示內(nèi)容中的節(jié)點(diǎn)、字段和其它對(duì)象,以及字段初始化值。它還可包含對(duì)象原型的描述、流34中的外部原型引用和路由語(yǔ)句。
原始場(chǎng)景圖16的頂層包括節(jié)點(diǎn)、頂層字段和函數(shù)、包含在文件中的原型和路由。除傳統(tǒng)單元外,Blendo還允許字段和函數(shù)在頂層。這些用于給外部環(huán)境(諸如HTML頁(yè)面)提供接口。當(dāng)流34用作外部原型的內(nèi)容時(shí),它們還提供對(duì)象接口。
每個(gè)原始節(jié)點(diǎn)包括在其范圍內(nèi)初始化的字段列表。每個(gè)原始字段項(xiàng)包括那個(gè)字段的名稱(chēng)、類(lèi)型(如果給出)和數(shù)據(jù)值。每個(gè)數(shù)據(jù)值包括可表示明確輸入的字段值的數(shù)字、字符串、原始節(jié)點(diǎn)和/或原始字段。
在塊60中,從原始場(chǎng)景圖16(圖1A)的頂層提取原型,并將其用于填充可由這個(gè)場(chǎng)景訪問(wèn)的對(duì)象原型的數(shù)據(jù)庫(kù)。
然后通過(guò)構(gòu)建遍歷發(fā)送原始場(chǎng)景圖16。在這個(gè)遍歷過(guò)程中,使用對(duì)象原型的數(shù)據(jù)庫(kù)構(gòu)建每個(gè)對(duì)象(塊65)。
在塊70中,建立流34中的路由。隨后,在塊75中,初始化場(chǎng)景中的每個(gè)字段。這是通過(guò)將初始事件發(fā)送到對(duì)象的非缺省字段來(lái)實(shí)現(xiàn)的。由于通過(guò)使用節(jié)點(diǎn)字段獲得場(chǎng)景圖結(jié)構(gòu),所以塊75也構(gòu)造場(chǎng)景層次。使用整齊遍歷激發(fā)事件。遇到的第一節(jié)點(diǎn)列舉節(jié)點(diǎn)中的字段。如果字段是節(jié)點(diǎn),則首先遍歷那個(gè)節(jié)點(diǎn)。
因此,初始化樹(shù)的那個(gè)特定分支中的節(jié)點(diǎn)。然后,將事件發(fā)送到具有節(jié)點(diǎn)字段初始值的那個(gè)節(jié)點(diǎn)字段。
在給定節(jié)點(diǎn)已經(jīng)將其字段初始化之后,允許開(kāi)發(fā)者將初始化邏輯(塊80)加到原型對(duì)象,以確保在調(diào)用時(shí)間完全初始化該節(jié)點(diǎn)。上述塊產(chǎn)生根場(chǎng)景。在塊85中,場(chǎng)景被傳遞到為場(chǎng)景創(chuàng)建的場(chǎng)景管理器26A(圖1A)。在塊90中,場(chǎng)景管理器26A用于隱含地或在開(kāi)發(fā)者控制下渲染并執(zhí)行特性處理。
使用來(lái)自Blendo對(duì)象層次中的對(duì)象可構(gòu)造由場(chǎng)景管理者26A渲染的場(chǎng)景。對(duì)象可從其父對(duì)象中導(dǎo)出一些它們的功能性,并隨后擴(kuò)展或修改其功能性。層次的底部是對(duì)象。從對(duì)象導(dǎo)出的對(duì)象的兩個(gè)主要類(lèi)是節(jié)點(diǎn)和字段。其中,節(jié)點(diǎn)包含作為一部分渲染遍歷調(diào)用的渲染方法。節(jié)點(diǎn)的數(shù)據(jù)屬性稱(chēng)為字段。在Blendo之中,對(duì)象層次是稱(chēng)為“定時(shí)對(duì)象”的對(duì)象的類(lèi),下面詳細(xì)描述。下面的代碼部分用于示范目的。應(yīng)該注意到,每個(gè)代碼部分中的行號(hào)只表示那個(gè)特定代碼部分的行號(hào),而不表示原始源代碼中的行號(hào)。
表面對(duì)象表面對(duì)象是類(lèi)型“表面節(jié)點(diǎn)”的節(jié)點(diǎn)。“表面節(jié)點(diǎn)”類(lèi)是將2D圖像描述為色彩、深度和不透明度值(α)值的陣列的所有對(duì)象的基本類(lèi)。“表面節(jié)點(diǎn)”主要用于提供要用作紋理映射的圖像。從“表面節(jié)點(diǎn)”類(lèi)導(dǎo)出的是“電影表面”、“圖像表面”、“遮片(matte)表面”、“像素表面”和“場(chǎng)景表面”。應(yīng)該注意到,各代碼部分的行號(hào)只表示那個(gè)代碼部分的行號(hào),而不表示原始源代碼中的行號(hào)。
電影表面以下代碼部分說(shuō)明“電影表面”節(jié)點(diǎn)。之后為節(jié)點(diǎn)中各字段的描述。
1)MovieSurfaceSurfaceNode TimedNode AudioSourceNode{2) field MF String url []3) field TimeBaseNode timeBase NULL4) field Time duration05) field Time loadTime 06) field StringloadStatus “NONE”}通過(guò)提供訪問(wèn)定義電影的圖像序列,“電影表面”節(jié)點(diǎn)將電影渲染在表面上?!半娪氨砻妗钡摹岸〞r(shí)節(jié)點(diǎn)”父類(lèi)確定在任一時(shí)刻哪個(gè)幀被渲染到該表面上。電影還可用作音頻源。
在代碼部分的第2行中,(“多值字段”)URL字段提供用于表面的電影數(shù)據(jù)的潛在位置列表。將該列表排序,以使單元0描述數(shù)據(jù)的優(yōu)選源。如果因?yàn)槿魏卧騿卧?不可用,或者以不支持的格式,則可使用下一單元。
在第3行中,“時(shí)基”字段(如果指定了)指定要為電影提供定時(shí)信息的節(jié)點(diǎn)。具體地說(shuō),“時(shí)基”會(huì)給電影提供確定在任一給定時(shí)刻電影的哪個(gè)幀在表面上顯示所需的信息。如果沒(méi)有指定“時(shí)基”,則該表面將顯示電影的第一幀。
在第4行中,一旦已經(jīng)取出電影數(shù)據(jù),“電影表面”節(jié)點(diǎn)就將持續(xù)時(shí)間字段設(shè)置為電影的長(zhǎng)度(以秒為單位)。
在第5和第6行,“加載時(shí)間”和“加載狀態(tài)”字段提供來(lái)自“電影表面”節(jié)點(diǎn)有關(guān)電影數(shù)據(jù)可用性的信息?!凹虞d狀態(tài)”具有5個(gè)可能的值“無(wú)”、“請(qǐng)求”、“失敗”、“中止”和“加載”。
“無(wú)”是初始狀態(tài)。如果通過(guò)將值的數(shù)量設(shè)置為0或?qū)⒌谝籙RL字符串設(shè)置為空字符串而將節(jié)點(diǎn)的url清零,則也發(fā)送“無(wú)”事件。當(dāng)這發(fā)生時(shí),表面的像素被設(shè)為黑色且不透明(即,色彩為0,0,0并且透明度為0)。
每當(dāng)設(shè)置非空url值時(shí),就發(fā)送“請(qǐng)求”事件。在“請(qǐng)求”事件之后,表面的像素保持不變。
如果電影加載沒(méi)有成功,則在“請(qǐng)求”事件之后發(fā)送“失敗”。例如在URL引用不存在的文件或在該文件不包含有效數(shù)據(jù)的情況下,這可能發(fā)生。在“失敗”事件之后,表面的像素保持不變。
如果當(dāng)前狀態(tài)是“請(qǐng)求”,則發(fā)送“中止”事件,并且然后URL再改變。如果URL變?yōu)榉强罩担瑒t“中止”之后為“請(qǐng)求”事件。如果URL變?yōu)榭罩担瑒t“中止”之后為“無(wú)”值。在“中止”事件之后,表面的像素保持不變。
當(dāng)準(zhǔn)備顯示電影時(shí),發(fā)送“加載”事件。該事件之后為“加載時(shí)間”事件,其值與當(dāng)前時(shí)間相匹配。由“時(shí)基”字段指示的電影的幀被渲染到表面上。如果“時(shí)基”是空,則將電影的第一幀渲染到表面上。
圖像表面以下代碼部分說(shuō)明“圖像表面”節(jié)點(diǎn)。之后為節(jié)點(diǎn)中各字段的描述。
1)ImageSurfaceSurfaceNode{2) field MF Stringurl []3) field Time loadTime04) field String loadStatus “NONE”}“圖像表面”節(jié)點(diǎn)將圖像文件渲染到表面上。在代碼部分的第2行中,URL字段提供用于該表面的圖像數(shù)據(jù)的潛在位置列表。該列表被排序以使單元0描述數(shù)據(jù)的最優(yōu)選源。如果因?yàn)槿魏卧騿卧?不可用,或以不支持的格式,則可使用下一單元。
在第3行和第4行中,“加載時(shí)間”和“加載狀態(tài)”字段提供來(lái)自“圖像表面”節(jié)點(diǎn)有關(guān)圖像數(shù)據(jù)可用性的信息?!凹虞d狀態(tài)”具有五個(gè)可能的值“無(wú)”、“請(qǐng)求”、“失敗”、“中止”以及“加載”。
“無(wú)”是初始狀態(tài)。如果通過(guò)將值的數(shù)量設(shè)置為0或?qū)⒌谝籙RL字符串設(shè)置為空字符串而將節(jié)點(diǎn)的URL清零,則也發(fā)送“無(wú)”事件。當(dāng)這發(fā)生時(shí),表面的像素被設(shè)置為黑色且不透明(即,色彩為0,0,0并且透明度為0)。
每當(dāng)設(shè)置非空URL值時(shí),就發(fā)送“請(qǐng)求”事件。在“請(qǐng)求”事件之后,表面的像素保持不變。
如果圖像加載沒(méi)有成功,則在“請(qǐng)求”事件之后發(fā)送“失敗”。例如在URL引用不存在的文件或在該文件不包含有效數(shù)據(jù)的情況下,這可能發(fā)生。在“失敗”事件之后,表面的像素保持不變。
如果當(dāng)前狀態(tài)是“請(qǐng)求”,則發(fā)送“中止”事件,并且然后URL再改變。如果URL變?yōu)榉强罩?,則“中止”之后將是“請(qǐng)求”事件。如果URL變?yōu)榭罩担瑒t“中止”之后將是“無(wú)”值。在“中止”事件之后,表面的像素保持不變。
當(dāng)圖像已經(jīng)被渲染到表面上時(shí),發(fā)送“加載”事件。該事件之后為“加載時(shí)間”事件,其值與當(dāng)前時(shí)間相匹配。
遮片表面以下代碼部分說(shuō)明“遮片表面”節(jié)點(diǎn)。之后為節(jié)點(diǎn)中各字段的描述1)MatteSurfaceSurfaceNode{2) field SurfaceNode surface1 NULL3) field SurfaceNode surface2 NULL4) field String operation ““5) field MF Float parameter06) field Bool overwriteSurface2 FALSE}“遮片表面”節(jié)點(diǎn)使用圖像合成操作來(lái)將來(lái)自表面1和表面2的圖像數(shù)據(jù)組合到第三表面上。以表面2的分辨率計(jì)算合成操作的結(jié)果。如果表面1的尺寸與表面2的不同,則在執(zhí)行該操作前將表面1上的圖像數(shù)據(jù)放大或縮小以使表面1的尺寸等于表面2的尺寸。
在代碼部分的第2行和第3行中,表面1和表面2字段指定為合成操作提供輸入圖像數(shù)據(jù)的兩個(gè)表面。在第4行中,操作字段指定合成功能在兩個(gè)輸入表面上執(zhí)行。下面描述可能的操作。
“REPLACE_ALPHA”用來(lái)自表面1的數(shù)據(jù)覆寫(xiě)表面2的α通道A。如果表面1有1個(gè)分量(只是灰度級(jí)強(qiáng)度),則那個(gè)分量用作α(不透明度)值。如果表面1有2或4個(gè)分量(灰度級(jí)強(qiáng)度+α或RGBA),則α通道A用于提供α值。如果表面1有3個(gè)分量(RGB),則操作是未定義的。這個(gè)操作可用于為靜態(tài)或動(dòng)態(tài)圖像提供靜態(tài)或動(dòng)態(tài)α遮罩(mask)。例如,“場(chǎng)景表面”可相對(duì)于透明背景渲染動(dòng)畫(huà)的詹姆斯.邦德人物。然后這個(gè)圖像的α分量可用作視頻剪輯的遮罩形狀。
“MULTIPLY_ALPHA”類(lèi)似于REPLACE_ALPHA,只是來(lái)自表面1的α值與來(lái)自表面2的α值相乘。
“CROSS_FADE”使用參數(shù)值在兩個(gè)表面之間消退(fade)以控制可見(jiàn)的各表面的百分比。這個(gè)操作可動(dòng)態(tài)地在兩個(gè)靜態(tài)或動(dòng)態(tài)圖像之間消退。通過(guò)將參數(shù)值(第5行)從0激勵(lì)為1,表面1上的圖像消退到表面2的圖像中。
“混合”使用來(lái)自表面2的α通道組合來(lái)自表面1和表面2的圖像數(shù)據(jù)以控制混合百分比。這個(gè)操作允許表面2的α通道控制兩個(gè)圖像的混合。通過(guò)渲染“場(chǎng)景表面”或播放“電影表面”來(lái)激勵(lì)表面2的α通道,你可以產(chǎn)生復(fù)雜的移動(dòng)遮片效果。如果R1、G1、B1和A1表示表面1像素的紅、綠、藍(lán)和α值,并且R2、G2、B2和A2表示表面2對(duì)應(yīng)像素的紅、綠、藍(lán)和α值,則那個(gè)像素的紅、綠、藍(lán)和α分量的結(jié)果值為紅=R1*(1-A2)+R2*A2 (1)綠=G1*(1-A2)+G2*A2 (2)藍(lán)=B1*(1-A2)+B2*A2 (3)α=1 (4)
“加”和“減”增加或減少表面1和表面2的色彩通道。結(jié)果的α等于表面2的α。
在第5行中,參數(shù)字段提供一個(gè)或多個(gè)浮點(diǎn)參數(shù),這些參數(shù)可改變合成功能的效果。參數(shù)值的具體解釋取決于哪個(gè)操作被指定。
在第6行中,“覆寫(xiě)表面2”字段指示“遮片表面”節(jié)點(diǎn)是否應(yīng)該分配新的表面用于存儲(chǔ)合成操作的結(jié)果(“覆寫(xiě)表面2”=假),或者存儲(chǔ)在表面2上的數(shù)據(jù)是否應(yīng)該被合成操作覆寫(xiě)(“覆寫(xiě)表面2”=真)。
像素表面以下代碼部分說(shuō)明“場(chǎng)景表面”節(jié)點(diǎn)。之后為節(jié)點(diǎn)中各字段的描述。
1)PixelSurfaceSurfaceNode{2)field Image image 000}“像素表面”節(jié)點(diǎn)將用戶(hù)指定像素的陣列渲染到表面上。在第2行中,圖像字段描述渲染到該表面上的像素?cái)?shù)據(jù)。
場(chǎng)景表面以下代碼部分說(shuō)明“場(chǎng)景表面”節(jié)點(diǎn)的使用。之后為節(jié)點(diǎn)中各字段的描述。
1)SceneSurfaceSurfaceNode{2) field MF ChildNode children []3) field UInt32 width 14) field UInt32 height1}“場(chǎng)景表面”節(jié)點(diǎn)將指定的子代(children)渲染在指定尺寸的表面上。“場(chǎng)景表面”自動(dòng)地重新渲染它自己以反映其子代的當(dāng)前狀態(tài)。
在代碼部分的第2行中,子代字段描述要渲染的“子節(jié)點(diǎn)”。概念上,子代字段描述獨(dú)立于包含“場(chǎng)景表面”節(jié)點(diǎn)的場(chǎng)景圖渲染的整個(gè)場(chǎng)景圖。
在第3行和第4行中,寬度和高度字段以像素為單位指定表面的尺寸。例如,如果寬度為256且高度為512,則表面包含256×512像素值陣列。
在渲染場(chǎng)景中利用“電影表面”、“圖像表面”、“遮片表面”、“像素表面”&“場(chǎng)景表面”節(jié)點(diǎn)。
在場(chǎng)景描述的頂層,輸出被映射到顯示器“頂層表面”上。3D渲染場(chǎng)景可使用上述“表面節(jié)點(diǎn)”中的一個(gè)在表面上產(chǎn)生其輸出,而不是將其結(jié)果渲染到顯示器,其中輸出可用于結(jié)合到如開(kāi)發(fā)者期望的更豐富的場(chǎng)景合成中。通過(guò)渲染表面的嵌入場(chǎng)景描述而產(chǎn)生的表面內(nèi)容可包括作為表面的結(jié)構(gòu)化圖像組織一部分的色彩信息、透明度(α通道)和深度。在本文中將圖像定義為包括視頻圖像、靜止圖像、動(dòng)畫(huà)或場(chǎng)景。
在通用圖像管理接口之后,還將表面內(nèi)部定義為支持各種紋理映射系統(tǒng)的專(zhuān)用需求。因此,系統(tǒng)中的任何表面發(fā)生器都可由3D渲染過(guò)程用作紋理。這種表面發(fā)生器的例子包括“圖像表面”、“電影表面”、“遮片表面”、“場(chǎng)景表面”以及“應(yīng)用表面”。
“應(yīng)用表面”保持如由其嵌入應(yīng)用進(jìn)程渲染的圖像數(shù)據(jù),諸如電子表格或文字處理器,類(lèi)似于傳統(tǒng)視窗系統(tǒng)中應(yīng)用窗口的方式。
具有渲染產(chǎn)物和紋理消耗的表面模型集成允許去耦渲染速率的說(shuō)明性設(shè)計(jì)。傳統(tǒng)上,已經(jīng)整體地渲染3D場(chǎng)景,給由場(chǎng)景復(fù)雜性和紋理交換引起的最壞情況性能所控制的觀察器產(chǎn)生了最終幀速率。在實(shí)時(shí)、連續(xù)的合成構(gòu)架中,表面提取提供了用于對(duì)同一屏幕上不同單元去耦渲染速率的機(jī)制。例如,可以接受描繪緩慢渲染(大概每秒一幀)的網(wǎng)頁(yè)瀏覽器,但只在由另一個(gè)應(yīng)用產(chǎn)生并在瀏覽器的輸出側(cè)顯示的視頻幀速率能被維持在每秒整30幀的時(shí)候。如果網(wǎng)頁(yè)瀏覽應(yīng)用繪制到它自己的表面,則屏幕合成器可以全運(yùn)動(dòng)視頻幀速率無(wú)障礙地渲染,將來(lái)自網(wǎng)頁(yè)瀏覽器的表面的最終完整繪制的圖像用作其快速屏幕更新的一部分。
圖2A說(shuō)明用于以全運(yùn)動(dòng)視頻幀速率渲染屏幕顯示200的復(fù)雜部分202的方案。圖2B是說(shuō)明在以全運(yùn)動(dòng)視頻率渲染包含復(fù)雜部分202的屏幕顯示200中所包含的各種操作的流程圖。可能希望以每秒30幀顯示屏幕顯示200,但是屏幕顯示200的部分202可能太復(fù)雜以至于不能以每秒30幀顯示。在此情況下,部分202被渲染在第一表面上,并存儲(chǔ)在緩沖器204中,如塊210(圖2B)所示。在塊215中,通過(guò)使用存儲(chǔ)在緩沖器204中的第一表面,以每秒30幀顯示包括部分202的屏幕顯示200。當(dāng)顯示包括部分200的屏幕顯示200時(shí),部分202的下一幀渲染在第二表面上,并存儲(chǔ)在緩沖器206中,如塊220所示。一旦部分202的這個(gè)下一幀可用,屏幕顯示200的下一更新就使用第二表面(塊225)并繼續(xù)這樣做,直到在緩沖器204中部分202的另一更新版本可用為止。當(dāng)正在使用第二表面顯示屏幕顯示200時(shí),部分202的下一幀被渲染在第一表面上,如塊230所示。當(dāng)?shù)谝槐砻嫔舷乱粠匿秩就瓿蓵r(shí),更新的第一表面將用于以每秒30幀顯示包括復(fù)雜部分202的屏幕顯示200。
具有渲染產(chǎn)物和紋理消耗的表面模型集成允許嵌套場(chǎng)景被說(shuō)明性地渲染。作為圖像渲染的子場(chǎng)景的重新合成使能夠可擴(kuò)充設(shè)計(jì)。具體地說(shuō),然后被圖像混合到更大視頻環(huán)境中的動(dòng)畫(huà)子場(chǎng)景的使用使娛樂(lè)計(jì)算機(jī)圖形能夠具有更恰當(dāng)?shù)拿栏?。例如,圖像混合方法給視覺(jué)藝術(shù)家提供了上一代視窗系統(tǒng)的粗略硬邊剪裁的備選。
圖3A描繪了包含動(dòng)畫(huà)子場(chǎng)景的嵌套場(chǎng)景。圖3B是顯示渲染圖3A的嵌套場(chǎng)景所執(zhí)行操作的流程圖。塊310渲染在屏幕顯示200上顯示的背景圖像,并且塊315將立方體302置于在屏幕顯示200上顯示的背景圖像內(nèi)。立方體302的外部區(qū)域是在顯示200上形成立方體302的背景的一部分表面。立方體302的面304被定義為第三表面。塊320使用“電影表面”節(jié)點(diǎn)將電影渲染在第三表面上。這樣,立方體的面304顯示在第三表面上渲染的電影。立方體302的面306被定義為第四表面。塊325使用“圖像表面”節(jié)點(diǎn)將圖像渲染在第四表面上。這樣,立方體的面306顯示在第四表面上渲染的圖像。在塊330中,整個(gè)立方體302被定義為第五表面,并在塊335中平移和/或旋轉(zhuǎn)這個(gè)第五表面,由此創(chuàng)建在面304上播放電影并在面306上顯示靜態(tài)圖像的移動(dòng)立方體52。通過(guò)遵循上述過(guò)程,可以在立方體302的每個(gè)面上顯示不同的渲染。應(yīng)該注意到,可以包含同時(shí)使所有塊310到335開(kāi)始的任何順序來(lái)實(shí)現(xiàn)塊310到335。
要理解到,本發(fā)明與Blendo無(wú)關(guān),并且它可以是從Blendo中分離出的實(shí)施例的一部分。還要理解到,雖然本發(fā)明的描述描述了3D場(chǎng)景渲染,但本發(fā)明同樣適用于2D場(chǎng)景渲染。表面模型使開(kāi)發(fā)者能夠自由地混合圖像和視頻效果與2D和3D幾何映射和動(dòng)畫(huà)。
雖然已經(jīng)示出并描述了本發(fā)明的具體實(shí)施例,但對(duì)于本領(lǐng)域的技術(shù)人員顯而易見(jiàn)的是,在不脫離本發(fā)明的情況下在其更寬方面可以做出改變和修改,并且因此,附屬權(quán)利要求要將所有落入本發(fā)明真實(shí)精神和范圍內(nèi)的這種改變和修改包含在其范圍內(nèi)。
權(quán)利要求
1.一種計(jì)算機(jī)系統(tǒng),包括計(jì)算機(jī)和由所述計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)程序,其中所述計(jì)算機(jī)程序包括計(jì)算機(jī)指令,用于使用第一表面和第二表面合成動(dòng)態(tài)圖像,第一表面具有在其上渲染的第一圖像,第二表面具有在其上渲染的第二圖像;其中,將來(lái)自第一表面的第一圖像與來(lái)自第二表面的第二圖像組合,以合成所述動(dòng)態(tài)圖像。
2.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其中第一圖像和第二圖像選自包括視頻圖像、靜止圖像、動(dòng)畫(huà)和場(chǎng)景的組。
3.如權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其中將第一圖像渲染在第一二維像素陣列上,并將第二圖像渲染在第二二維像素陣列上。
4.如權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其中根據(jù)說(shuō)明性指令合成所述動(dòng)態(tài)圖像。
5.如權(quán)利要求4所述的計(jì)算機(jī)系統(tǒng),其中實(shí)時(shí)地合成所述動(dòng)態(tài)圖像。
6.如權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其中實(shí)時(shí)地合成所述動(dòng)態(tài)圖像。
7.如權(quán)利要求2所述的計(jì)算機(jī)系統(tǒng),其中第一圖像具有第一不透明度值,第二圖像具有第二不透明度值,并且所述動(dòng)態(tài)圖像具有第三不透明度值。
8.如權(quán)利要求7所述的計(jì)算機(jī)系統(tǒng),還包括計(jì)算機(jī)指令,用于當(dāng)將第一圖像和第二圖像組合以產(chǎn)生所述動(dòng)態(tài)圖像時(shí),用第一不透明度值覆寫(xiě)第二不透明度值。
9.如權(quán)利要求7所述的計(jì)算機(jī)系統(tǒng),還包括計(jì)算機(jī)指令,用于將第一不透明度值與第二不透明度值相乘以獲得第三不透明度值。
10.如權(quán)利要求7所述的計(jì)算機(jī)系統(tǒng),還包括計(jì)算機(jī)指令,用于當(dāng)組合第一圖像與第二圖像時(shí),激勵(lì)第二圖像的所述不透明度值,由此產(chǎn)生移動(dòng)遮片效果。
11.一種計(jì)算機(jī)系統(tǒng),包括計(jì)算機(jī)和由所述計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)程序,其中所述計(jì)算機(jī)程序包括計(jì)算機(jī)指令,用于將第一圖像渲染在第一表面上;將第二圖像渲染在第二表面上;將第三場(chǎng)景渲染在第三表面上;其中第一圖像用作第三場(chǎng)景的紋理,并將第二圖像與所述紋理混合以形成第三場(chǎng)景。
12.如權(quán)利要求11所述的計(jì)算機(jī)系統(tǒng),其中用戶(hù)提供說(shuō)明性指令以渲染第一圖像、第二圖像和第三場(chǎng)景。
13.如權(quán)利要求11所述的計(jì)算機(jī)系統(tǒng),其中第二圖像隨時(shí)間改變。
14.如權(quán)利要求11所述的計(jì)算機(jī)系統(tǒng),還包括計(jì)算機(jī)指令,用于將第四場(chǎng)景說(shuō)明性地渲染在第四表面上,其中在第四場(chǎng)景內(nèi)混合第三場(chǎng)景以形成第四場(chǎng)景內(nèi)的子場(chǎng)景。
15.如權(quán)利要求14所述的計(jì)算機(jī)系統(tǒng),其中所述子場(chǎng)景內(nèi)的第二圖像改變以反映第二表面上的第二圖像中的改變。
16.如權(quán)利要求11所述的計(jì)算機(jī)系統(tǒng),其中第一圖像和第二圖像可選自包括視頻圖像、靜止圖像、動(dòng)畫(huà)和場(chǎng)景的組。
17.一種計(jì)算機(jī)系統(tǒng),包括計(jì)算機(jī)和由所述計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)程序,其中所述計(jì)算機(jī)程序包括計(jì)算機(jī)指令,用于以第一渲染速率渲染第一場(chǎng)景;以及以第二渲染速率渲染第二場(chǎng)景,其中第二場(chǎng)景形成第一場(chǎng)景內(nèi)的子場(chǎng)景。
18.如權(quán)利要求17所述的計(jì)算機(jī)系統(tǒng),其中基于說(shuō)明性指令渲染第一場(chǎng)景和第二場(chǎng)景。
19.如權(quán)利要求17所述的計(jì)算機(jī)系統(tǒng),其中第二場(chǎng)景的第一渲染存儲(chǔ)在第一緩沖器中,并且第二場(chǎng)景的第二渲染存儲(chǔ)在第二緩沖器中,并且不斷地更新第一渲染和第二渲染,每次更新一個(gè)渲染。
20.如權(quán)利要求19所述的計(jì)算機(jī)系統(tǒng),其中使用選自包括第一渲染和第二渲染的組的最近的渲染來(lái)刷新所述子場(chǎng)景。
21.如權(quán)利要求20所述的計(jì)算機(jī)系統(tǒng),其中第一渲染速率等于第二渲染速率。
22.一種使用計(jì)算機(jī)合成動(dòng)態(tài)圖像的方法,所述方法包括將第一圖像渲染在第一表面上;將第二圖像渲染在第二表面上;以及組合第一圖像與第二圖像以合成所述動(dòng)態(tài)圖像。
23.如權(quán)利要求22所述的方法,其中第一圖像和第二圖像選自包括視頻圖像、靜止圖像、動(dòng)畫(huà)和場(chǎng)景的組。
24.如權(quán)利要求23所述的方法,其中所述場(chǎng)景包含來(lái)自包括視頻圖像、靜止圖像、動(dòng)畫(huà)和場(chǎng)景的組的至少一個(gè)圖像。
25.如權(quán)利要求22所述的方法,還包括在第一二維像素陣列上渲染第一圖像,以及在第二二維像素陣列上渲染第二圖像。
26.如權(quán)利要求22所述的方法,還包括提供說(shuō)明性指令以合成所述動(dòng)態(tài)圖像。
27.如權(quán)利要求22所述的方法,其中實(shí)時(shí)地合成所述動(dòng)態(tài)圖像。
28.如權(quán)利要求22所述的方法,還包括為第一圖像提供第一不透明度值;為第二圖像提供第二不透明度值;為所述動(dòng)態(tài)圖像提供第三不透明度值。
29.如權(quán)利要求28所述的方法,還包括用第一不透明度值覆寫(xiě)第二不透明度值。
30.如權(quán)利要求28所述的方法,還包括將第一不透明度值與第二不透明度值相乘以獲得第三不透明度值。
31.如權(quán)利要求28所述的方法,還包括當(dāng)組合第一圖像與第二圖像時(shí),激勵(lì)第二圖像的所述不透明度值,由此產(chǎn)生遮片效果。
32.一種使用計(jì)算機(jī)合成場(chǎng)景的方法,所述方法包括將第一圖像渲染在第一表面上;將第二圖像渲染在第二表面上;將第一場(chǎng)景渲染在第三表面上,其中將第一圖像用作所述場(chǎng)景的紋理并將第二圖像與所述紋理混合以形成第一場(chǎng)景。
33.如權(quán)利要求32所述的方法,還包括提供說(shuō)明性指令以渲染第一圖像、第二圖像和第一場(chǎng)景。
34.如權(quán)利要求32所述的方法,其中第二圖像隨時(shí)間改變。
35.如權(quán)利要求32所述的方法,其中第一圖像和第二圖像選自包括視頻圖像、靜止圖像、動(dòng)畫(huà)和場(chǎng)景的組。
36.一種使用計(jì)算機(jī)顯示場(chǎng)景的方法,所述方法包括以第一渲染速率渲染第一場(chǎng)景;以及以第二渲染速率渲染第二場(chǎng)景,其中第二場(chǎng)景形成第一場(chǎng)景內(nèi)的子場(chǎng)景。
37.如權(quán)利要求36所述的方法,還包括提供說(shuō)明性指令以渲染第一場(chǎng)景和第二場(chǎng)景。
38.如權(quán)利要求36所述的方法,還包括將第二場(chǎng)景的第一渲染存儲(chǔ)在第一緩沖器中,并將第二場(chǎng)景的第二渲染存儲(chǔ)在第二緩沖器中;以及不斷地更新第一渲染和第二渲染,每次更新一個(gè)渲染。
39.如權(quán)利要求36所述的方法,還包括使用選自包括第一渲染和第二渲染的組的最近的渲染來(lái)渲染所述子場(chǎng)景。
40.如權(quán)利要求36所述的方法,其中第一渲染速率不同于第二渲染速率。
全文摘要
一種用于借助有效的說(shuō)明性標(biāo)記語(yǔ)言(圖1A,項(xiàng)12)的復(fù)雜、動(dòng)態(tài)和交互體驗(yàn)的實(shí)時(shí)合成與呈現(xiàn)的系統(tǒng)和方法(圖1A,項(xiàng)11)。使用表面構(gòu)造,開(kāi)發(fā)者可以將圖像或全運(yùn)動(dòng)視頻數(shù)據(jù)(圖1A,項(xiàng)20)嵌入到其3D場(chǎng)景內(nèi)他們要使用傳統(tǒng)紋理映射的任何地方。開(kāi)發(fā)者還可以將渲染一個(gè)場(chǎng)景描述的結(jié)果用作要紋理映射到另一個(gè)場(chǎng)景中的圖像(圖1A,項(xiàng)28)。具體地說(shuō),表面允許任何渲染應(yīng)用的結(jié)果被用作開(kāi)發(fā)者的場(chǎng)景內(nèi)的紋理(圖1A,項(xiàng)28)。這允許用去耦渲染速率說(shuō)明性地渲染嵌套場(chǎng)景和渲染具有分量表面的場(chǎng)景(圖1A,項(xiàng)26F)。
文檔編號(hào)G06T15/04GK1695169SQ02829813
公開(kāi)日2005年11月9日 申請(qǐng)日期2002年11月1日 優(yōu)先權(quán)日2002年11月1日
發(fā)明者C·F·馬琳, R·K·梅亞斯, J·R·肯特, P·G·布勞維爾 申請(qǐng)人:索尼電子有限公司