原生單像3d到立體3d的運(yùn)行時(shí)轉(zhuǎn)換的制作方法
【專利摘要】本發(fā)明描述用于以可致使裝置以立體3D來(lái)呈現(xiàn)原生三維3D圖形內(nèi)容的方式修改應(yīng)用程序接口API調(diào)用的技術(shù)。本發(fā)明的技術(shù)可以修改API調(diào)用自身但不修改API自身及GPU硬件的方式來(lái)實(shí)施。本發(fā)明的技術(shù)包含使用由原始內(nèi)容定義的相同視錐產(chǎn)生左眼圖像和右眼圖像及將所述左眼圖像和所述右眼圖像的視口偏移移位。
【專利說(shuō)明】原生單像3D到立體3D的運(yùn)行時(shí)轉(zhuǎn)換
[0001]本申請(qǐng)案主張2011年3月14日申請(qǐng)的第61/452,289號(hào)美國(guó)臨時(shí)申請(qǐng)案和2011年4月12日申請(qǐng)的第61/474,638號(hào)美國(guó)臨時(shí)申請(qǐng)案的權(quán)利,每一臨時(shí)申請(qǐng)案的相應(yīng)全部?jī)?nèi)容特此以引用的方式并入。
【技術(shù)領(lǐng)域】
[0002]本發(fā)明涉及圖形數(shù)據(jù)處理,且更確切來(lái)說(shuō),涉及用于立體視圖的圖形數(shù)據(jù)處理。
【背景技術(shù)】
[0003]立體視圖指代看起來(lái)包含3維(3D)體積的所感知圖像。為了產(chǎn)生立體視圖,裝置在顯示器的2維(2D)區(qū)域上顯示兩個(gè)圖像。此兩個(gè)圖像包含實(shí)質(zhì)上類似的內(nèi)容,但所述內(nèi)容具有沿兩個(gè)圖像中的一個(gè)或一個(gè)以上對(duì)應(yīng)像素的水平軸的輕微位移。同時(shí)檢視2D區(qū)域上的此兩個(gè)圖像致使檢視者感知跳出正顯示兩個(gè)圖像的2D顯示器之外或推入到所述2D顯示器中的圖像。以此方式,盡管兩個(gè)圖像顯示于顯示器的2D區(qū)域上,但檢視者感知看起來(lái)包含3D體積的圖像。
[0004]立體視圖的兩個(gè)圖像分別被稱作左眼圖像和右眼圖像。左眼圖像可由檢視者的左眼檢視,且右眼圖像不可由檢視者的左眼檢視。類似地,右眼圖像可由檢視者的右眼檢視,且左眼圖像不可由檢視者的右眼檢視。舉例來(lái)說(shuō),檢視者可戴上專用眼鏡,其中眼鏡的左透鏡擋住右眼圖像且使左眼圖像通過(guò),且眼鏡的右透鏡擋住左眼圖像且使右眼圖像通過(guò)。
[0005]因?yàn)樽笱蹐D像和右眼圖像包含具有沿水平軸的輕微位移但不可由檢視者雙眼同時(shí)檢視(例如,由于專用眼鏡)的實(shí)質(zhì)上類似的內(nèi)容,所以檢視者的大腦通過(guò)混合兩個(gè)圖像來(lái)解析對(duì)應(yīng)像素之間的輕微位移。混合致使檢視者將兩個(gè)圖像感知為具有3D體積的圖像。
【發(fā)明內(nèi)容】
[0006]本發(fā)明描述用于以可致使裝置以立體3D來(lái)呈現(xiàn)三維(3D)圖形內(nèi)容的方式修改應(yīng)用程序接口(API)調(diào)用的技術(shù)。本發(fā)明的技術(shù)可以API調(diào)用自身經(jīng)修改但API自身及GPU硬件未被修改的方式來(lái)實(shí)施。
[0007]在一個(gè)實(shí)例中,將非立體3D內(nèi)容轉(zhuǎn)換成S3D內(nèi)容的方法包含:攔截應(yīng)用程序接口(API)調(diào)用;根據(jù)所述API調(diào)用確定用于所述非立體3D內(nèi)容的模型視圖投影矩陣;修改所述模型視圖投影矩陣以產(chǎn)生經(jīng)修改模型視圖投影矩陣;基于所述經(jīng)修改模型視圖投影矩陣,產(chǎn)生左視圖剪切坐標(biāo);基于所述經(jīng)修改模型視圖投影矩陣,產(chǎn)生右視圖剪切坐標(biāo);基于所述左視圖剪切坐標(biāo),產(chǎn)生左視圖;基于所述右視圖剪切坐標(biāo),產(chǎn)生右視圖;及基于所述左視圖和所述右視圖,呈現(xiàn)S3D圖像。
[0008]在另一實(shí)例中,裝置包含:存儲(chǔ)器,其存儲(chǔ)指令;圖形處理單元(GPU);及處理器。所述處理器可操作以在執(zhí)行所述指令時(shí)進(jìn)行以下動(dòng)作:攔截應(yīng)用程序接口(API)調(diào)用;根據(jù)所述API調(diào)用確定用于非立體3D內(nèi)容的模型視圖投影矩陣;修改所述模型視圖投影矩陣以產(chǎn)生經(jīng)修改模型視圖投影矩陣;基于所述經(jīng)修改模型視圖投影矩陣,致使所述GPU產(chǎn)生左視圖剪切坐標(biāo);基于所述經(jīng)修改模型視圖投影矩陣,致使所述GPU產(chǎn)生右視圖剪切坐標(biāo);基于所述左視圖剪切坐標(biāo),致使所述GPU產(chǎn)生左視圖;基于所述右視圖剪切坐標(biāo),致使所述GPU產(chǎn)生右視圖;及基于所述左視圖和所述右視圖,致使所述GPU呈現(xiàn)S3D圖像。
[0009]在另一實(shí)例中,用于將非立體3D內(nèi)容轉(zhuǎn)換成S3D內(nèi)容的設(shè)備包含:用于攔截應(yīng)用程序接口(API)調(diào)用的裝置;用于根據(jù)所述API調(diào)用確定用于所述非立體3D內(nèi)容的模型視圖投影矩陣的裝置;用于修改所述模型視圖投影矩陣以產(chǎn)生經(jīng)修改模型視圖投影矩陣的裝置;用于基于所述經(jīng)修改模型視圖投影矩陣產(chǎn)生左視圖剪切坐標(biāo)的裝置;用于基于所述經(jīng)修改模型視圖投影矩陣產(chǎn)生右視圖剪切坐標(biāo)的裝置;用于基于所述左視圖剪切坐標(biāo)產(chǎn)生左視圖的裝置;用于基于所述右視圖剪切坐標(biāo)產(chǎn)生右視圖的裝置;及用于基于所述左視圖和所述右視圖呈現(xiàn)S3D圖像的裝置。
[0010]在另一實(shí)例中,一種計(jì)算機(jī)可讀存儲(chǔ)媒體存儲(chǔ)指令,所述指令當(dāng)執(zhí)行時(shí)致使一個(gè)或一個(gè)以上處理器進(jìn)行以下動(dòng)作:攔截應(yīng)用程序接口(API)調(diào)用;根據(jù)所述API調(diào)用確定用于所述非立體3D內(nèi)容的模型視圖投影矩陣;修改所述模型視圖投影矩陣以產(chǎn)生經(jīng)修改模型視圖投影矩陣;基于所述經(jīng)修改模型視圖投影矩陣,產(chǎn)生左視圖剪切坐標(biāo);基于所述經(jīng)修改模型視圖投影矩陣,產(chǎn)生右視圖剪切坐標(biāo);基于所述左視圖剪切坐標(biāo),產(chǎn)生左視圖;基于所述右視圖剪切坐標(biāo),產(chǎn)生右視圖;及基于所述左視圖和所述右視圖,呈現(xiàn)S3D圖像。
[0011]在隨附圖式及下文描述中闡述本發(fā)明的一個(gè)或一個(gè)以上方面的細(xì)節(jié)。從描述和圖式,以及從權(quán)利要求書(shū)將明白本發(fā)明的其它特征、目的和優(yōu)勢(shì)。
【專利附圖】
【附圖說(shuō)明】
[0012]圖1是說(shuō)明可實(shí)施本發(fā)明中所描述的一個(gè)或一個(gè)以上實(shí)例技術(shù)的實(shí)例系統(tǒng)的功能的框圖。
[0013]圖2是說(shuō)明可實(shí)施本發(fā)明中所描述的一個(gè)或一個(gè)以上實(shí)例技術(shù)的裝置的實(shí)例的框圖。
[0014]圖3A展示使用本發(fā)明的技術(shù)產(chǎn)生的S3D檢視區(qū)域的幾何表示。
[0015]圖3B展示可根據(jù)本發(fā)明的技術(shù)執(zhí)行的視口移位的幾何表示。
[0016]圖4是進(jìn)一步詳細(xì)說(shuō)明圖2的實(shí)例裝置的框圖。
[0017]圖5是說(shuō)明根據(jù)本發(fā)明中所描述之一個(gè)或一個(gè)以上實(shí)例技術(shù)的實(shí)例操作的流程圖。
【具體實(shí)施方式】
[0018]本發(fā)明中所描述的實(shí)例技術(shù)是針對(duì)在執(zhí)行期間或在運(yùn)行時(shí)期間呈現(xiàn)立體3維(S3D)圖形。在常規(guī)3D圖形呈現(xiàn)中,圖形處理單元(GPU)從單個(gè)視點(diǎn)(例如,單視圖)產(chǎn)生3D圖形。此單個(gè)視點(diǎn)可意謂可由檢視者的右眼和左眼兩者檢視的單個(gè)圖像。
[0019]S3D圖形與3D圖形的不同之處在于S3D圖形產(chǎn)生立體視圖。術(shù)語(yǔ)立體視圖指代根據(jù)雙眼視點(diǎn)產(chǎn)生的圖像。在雙眼視點(diǎn)中,可存在兩個(gè)圖像,其中一個(gè)圖像可由眼睛中的一者檢視且不可由另一者檢視,且反之亦然。舉例來(lái)說(shuō),當(dāng)檢視者戴上雙目鏡時(shí),經(jīng)由雙目鏡的左透鏡進(jìn)入的光可由左眼檢視且不可由右眼檢視,且反之亦然。雙眼視點(diǎn)可被稱作立體視圖。[0020]舉例來(lái)說(shuō),在S3D圖形中,GPU可產(chǎn)生用于左眼的圖像和用于右眼的另一圖像,SP,立體視圖。術(shù)語(yǔ)立體視圖指代各自顯示于顯示器上的兩個(gè)圖像(例如,左眼圖像和右眼圖像),而單視圖指代顯示于顯示器上的單個(gè)圖像。對(duì)于檢視者來(lái)說(shuō),左眼圖像與右眼圖像的組合可看起來(lái)好像圖像正跳出正顯示圖像的顯示器之外或推入到所述顯示器中。此情形可導(dǎo)致更逼真且更豐富的檢視體驗(yàn)。
[0021 ] 在本發(fā)明中,不應(yīng)混淆S3D圖像(例如,立體視圖)和3D圖像(例如,單視圖)的概念。3D圖像為被顯示器的2維(2D)區(qū)域約束的圖像。舉例來(lái)說(shuō),3D圖像內(nèi)的對(duì)象可看起來(lái)比3D圖像內(nèi)的其它對(duì)象較遠(yuǎn)或較近。然而,所有這些對(duì)象受限于顯示器的2D區(qū)域。S3D圖像為通過(guò)檢視者的大腦組合右眼圖像和左眼圖像產(chǎn)生的感知圖像。所得圖像(即,S3D圖像)看起來(lái)不受顯示器的2D區(qū)域約束。更確切地,S3D圖像看起來(lái)包含3D體積,其中圖像看起來(lái)跳出顯示器之外或推入到顯示器中。舉例來(lái)說(shuō),S3D圖像內(nèi)的對(duì)象看起來(lái)比3D體積而非2D區(qū)域(其為3D圖像下的情況)內(nèi)的其它對(duì)象較遠(yuǎn)或較近。
[0022]一起形成S3D圖像的右眼圖像和左眼圖像可為3D圖像。檢視者的大腦致使檢視者在大腦組合3D右眼圖像與3D左眼圖像時(shí)感知S3D圖像。右眼圖像和左眼圖像的內(nèi)容可實(shí)質(zhì)上類似于單個(gè)3D圖像的內(nèi)容。本發(fā)明描述用于將3D圖形內(nèi)容轉(zhuǎn)換成S3D內(nèi)容的技術(shù)。通過(guò)使用本發(fā)明的技術(shù),許多現(xiàn)有3D圖形內(nèi)容可轉(zhuǎn)換成S3D圖形內(nèi)容且顯示于立體顯示器上。
[0023]本發(fā)明還描述用于以可致使GPU執(zhí)行所描述的3D到S3D轉(zhuǎn)換的方式修改應(yīng)用程序接口(API)調(diào)用的技術(shù)。本發(fā)明的技術(shù)可以僅API調(diào)用自身經(jīng)修改而不是API或GPU經(jīng)修改的方式來(lái)實(shí)施。
[0024]為了根據(jù)原生3D內(nèi)容產(chǎn)生S3D內(nèi)容,本發(fā)明的技術(shù)包含用于3D到S3D轉(zhuǎn)換的技術(shù)。所述技術(shù)包含用于攔截從3D應(yīng)用程序到3D圖形API的選定API調(diào)用的軟件。可以致使用于產(chǎn)生圖形的系統(tǒng)產(chǎn)生可在運(yùn)行時(shí)顯示于S3D顯示器上的雙眼視圖因而為檢視所呈現(xiàn)內(nèi)容的用戶產(chǎn)生S3D效果的方式來(lái)修改被攔截的API調(diào)用。兩個(gè)圖像(左眼圖像和右眼圖像)可由同一圖形管道基于對(duì)原生3D內(nèi)容的分析來(lái)呈現(xiàn)。可使用用于檢視位置和/或方向的不同設(shè)置來(lái)產(chǎn)生所述兩個(gè)圖像。實(shí)施本發(fā)明的技術(shù)的系統(tǒng)可位于圖形API (例如,用于移動(dòng)裝置中的OpenGL ES API)的正上方,使得能夠攔截來(lái)自3D圖形應(yīng)用程序的API調(diào)用。在一些實(shí)施方案中,3D到S3D轉(zhuǎn)換系統(tǒng)可僅使用軟件來(lái)實(shí)施,且不需要改變GPU硬件、圖形驅(qū)動(dòng)程序代碼或3D圖形應(yīng)用程序內(nèi)容。本發(fā)明的技術(shù)可與OpenGUOpenGL ES以及其它圖形API —起應(yīng)用。
[0025]當(dāng)前在現(xiàn)有技術(shù)中存在用于將原生3D內(nèi)容轉(zhuǎn)換成S3D內(nèi)容的技術(shù),但許多此些技術(shù)因?yàn)槠湫枰啦⒉豢偸菚?huì)從API調(diào)用得知的信息而具有有限的應(yīng)用,或者因?yàn)槠渥鞒鲫P(guān)于S3D檢視空間的并不總是精確的假設(shè)而導(dǎo)致不良S3D圖像質(zhì)量。本發(fā)明描述在一些情況下既可廣泛使用又導(dǎo)致良好圖像質(zhì)量的3D到S3D轉(zhuǎn)換技術(shù)。
[0026]圖1是可實(shí)施本發(fā)明的技術(shù)的實(shí)例3D到S3D轉(zhuǎn)換系統(tǒng)100的功能圖。圖1的系統(tǒng)100意欲提供功能概述。系統(tǒng)100包含3D圖形內(nèi)容112、用于啟用3D到S3D轉(zhuǎn)換的系統(tǒng)命令116、啟用S3D模塊120、3D到S3D轉(zhuǎn)換模塊124、API128、頂點(diǎn)處理模塊132、左合并單元136、右合并單元140、像素處理模塊144、左幀緩沖器148、右?guī)彌_器152、左圖像156和右圖像160。稍后將在本發(fā)明中更詳細(xì)且參考額外硬件和軟件組件解釋系統(tǒng)100的部分。另夕卜,如下文將更詳細(xì)解釋,系統(tǒng)100的某些部分(例如,頂點(diǎn)處理模塊132、左合并單元136、右合并單元140和像素處理模塊144)可實(shí)施為GPU的部分。
[0027]3D圖形內(nèi)容112和系統(tǒng)命令116可以計(jì)算機(jī)代碼的形式存儲(chǔ)于系統(tǒng)存儲(chǔ)器上。舉例來(lái)說(shuō),3D圖形內(nèi)容112可包含用于產(chǎn)生3D圖像的圖形命令。舉例來(lái)說(shuō),當(dāng)使用OpenGLES API時(shí),圖形命令可包含將在下文更詳細(xì)論述的glDraw命令,例如gIDrawArrays O和glDrawElementsO。
[0028]3D到S3D轉(zhuǎn)換可由系統(tǒng)命令116啟用。舉例來(lái)說(shuō),系統(tǒng)命令116可表示用戶輸入的命令或可為正由應(yīng)用程序處理器執(zhí)行的應(yīng)用程序內(nèi)所含有的命令。當(dāng)3D到S3D未被啟用時(shí),就可以正常方式處理3D圖形內(nèi)容112以產(chǎn)生3D圖像。在此些情況下,以虛線展示的系統(tǒng)100的部分可能不被利用或可能不存在,而系統(tǒng)100的其它部分處理單個(gè)單視圖圖像而不是左圖像和右圖像。當(dāng)3D到S3D轉(zhuǎn)換未被啟用(見(jiàn)例如120,否)時(shí),將未修改的API調(diào)用發(fā)送到API128。未修改的API調(diào)用通常指代來(lái)自3D圖形內(nèi)容112的以其原始形式發(fā)送到API128的API調(diào)用。
[0029]當(dāng)3D到S3D轉(zhuǎn)換被啟用(見(jiàn)例如120是)時(shí),3D到S3D轉(zhuǎn)換模塊124可攔截圖形內(nèi)容112的API調(diào)用,且以將致使API調(diào)用產(chǎn)生左眼視圖和右眼視圖而不是單個(gè)單視圖的方式來(lái)修改API調(diào)用。由3D到S3D轉(zhuǎn)換模塊124產(chǎn)生的經(jīng)修改API調(diào)用接著可由API128獲得以致使GPU呈現(xiàn)左眼圖像和右眼圖像兩者。經(jīng)修改API調(diào)用可由頂點(diǎn)處理模塊132、左合并單元136、右合并單元140和像素處理模塊144執(zhí)行以產(chǎn)生待存儲(chǔ)于左幀緩沖器148中的左眼圖像和待存儲(chǔ)于右?guī)彌_器152中的右眼圖像。在系統(tǒng)100的實(shí)例中,3D到S3D轉(zhuǎn)換模塊124表示運(yùn)行于應(yīng)用程序處理器上的應(yīng)用程序,所述應(yīng)用程序經(jīng)配置以攔截API調(diào)用且執(zhí)行對(duì)那些API調(diào)用的修改。對(duì)API調(diào)用的修改使得3D圖形內(nèi)容能夠被GPU呈現(xiàn)為S3D圖形內(nèi)容。
[0030]在典型3D圖形管道中,3D圖形內(nèi)容首先呈描述幾何基元的基元數(shù)據(jù)的形式。對(duì)于左圖像和右圖像兩者,頂點(diǎn)處理單元132可基于幾何基元數(shù)據(jù)產(chǎn)生2D顯示平面中的一組像素位置。左合并單元136可在逐圖塊的基礎(chǔ)上匯編與左圖像相關(guān)聯(lián)的幾何基元,其中一圖塊對(duì)應(yīng)于左圖像的一部分。類似地,右合并單元140可在逐圖塊的基礎(chǔ)上匯編與右圖像相關(guān)聯(lián)的幾何基元。對(duì)于左圖像的圖塊和右圖像的圖塊中的每一者,像素處理單元144可計(jì)算由頂點(diǎn)處理單元132確定的像素的屬性。像素處理模塊144可輸出左圖像(例如,左圖像156)到左幀緩沖器148,且可輸出右圖像(例如,右圖像160)到右?guī)彌_器152。左圖像156和右圖像160可同時(shí)顯示于S3D顯示器上以產(chǎn)生S3D圖像。以此方式,即使3D圖形內(nèi)容112不包含S3D圖形內(nèi)容,系統(tǒng)100的輸出仍可為S3D圖像。
[0031]將在下文參看圖2更詳細(xì)描述由頂點(diǎn)處理模塊132、左合并單元136、右合并單元140和像素處理模塊144執(zhí)行的功能。在一些配置中,系統(tǒng)可包含專用于右眼圖像的各種硬件組件和專用于左眼圖像的硬件組件。然而,在其它實(shí)施方案中,相同組件可用于右眼圖像和左眼圖像兩者。舉例來(lái)說(shuō),在圖1的系統(tǒng)100中,頂點(diǎn)處理模塊132和像素處理模塊144可以軟件來(lái)實(shí)施,而左合并單元136、右合并單元140、左幀緩沖器148和右?guī)彌_器150以硬件來(lái)實(shí)施。然而,在其它實(shí)施方案中,頂點(diǎn)處理模塊132和像素處理模塊144可能以硬件來(lái)實(shí)施,或左幀緩沖器148和右?guī)彌_器152可能由保持左圖像和右圖像兩者的單個(gè)幀緩沖器代替。另外,如之前所提及,系統(tǒng)100僅意謂提供可實(shí)施本發(fā)明的技術(shù)的系統(tǒng)的功能概述,且圖形管道的一些方面已出于解釋的目的而簡(jiǎn)化或省略。
[0032]圖2是說(shuō)明可實(shí)施本發(fā)明中所描述的一個(gè)或一個(gè)以上實(shí)例技術(shù)的裝置的實(shí)例的框圖。舉例來(lái)說(shuō),圖2說(shuō)明裝置210。裝置210的實(shí)例包含但不限于移動(dòng)無(wú)線電話、個(gè)人數(shù)字助理(PDA)、包含視頻顯示器的電視游戲機(jī)、移動(dòng)視頻會(huì)議單元、膝上型計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、電視機(jī)頂盒等等。如圖2中所說(shuō)明,裝置210可包含應(yīng)用程序處理器212、圖形處理單元(GPU) 220和系統(tǒng)存儲(chǔ)器226。除了圖2中所說(shuō)明的組件之外,裝置210還可包含其它組件。盡管本發(fā)明的若干部分將大體上參考利用應(yīng)用程序處理器和GPU兩者的系統(tǒng)來(lái)描述3D到S3D轉(zhuǎn)換技術(shù),但本發(fā)明中所描述的技術(shù)未必限于此些系統(tǒng)。舉例來(lái)說(shuō),本發(fā)明的一些3D到S3D轉(zhuǎn)換技術(shù)可在一些情況下在無(wú)GPU的情況下單獨(dú)由應(yīng)用程序處理器執(zhí)行。
[0033]應(yīng)用程序處理器212可為裝置210的中央處理單元(CPU)。GPU220可為可操作以輸出圖形數(shù)據(jù)以供呈現(xiàn)于顯示器上的處理單元。應(yīng)用程序處理器212和GPU220的實(shí)例包含但不限于數(shù)字信號(hào)處理器(DSP)、通用微處理器、專用集成電路(ASIC)、場(chǎng)可編程邏輯陣列(FPGA)或其它等效集成或離散邏輯電路。
[0034]系統(tǒng)存儲(chǔ)器226可為計(jì)算機(jī)可讀存儲(chǔ)媒體的實(shí)例。舉例來(lái)說(shuō),系統(tǒng)存儲(chǔ)器226可存儲(chǔ)致使應(yīng)用程序處理器212和GPU220執(zhí)行在本發(fā)明中屬于各自的功能的指令。以此方式,系統(tǒng)存儲(chǔ)器226可被視為包括指令的計(jì)算機(jī)可讀存儲(chǔ)媒體,所述指令致使一個(gè)或一個(gè)以上處理器(例如,應(yīng)用程序處理器212或GPU220)執(zhí)行各種功能。
[0035]系統(tǒng)存儲(chǔ)器226的實(shí)例包含但不限于隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、CD-ROM或其它光盤存儲(chǔ)裝置、磁盤存儲(chǔ)裝置或其它磁性存儲(chǔ)裝置、快閃存儲(chǔ)器或可用來(lái)載運(yùn)或存儲(chǔ)呈指令或數(shù)據(jù)結(jié)構(gòu)形式的所要程序代碼且可由計(jì)算機(jī)或處理器存取的任何其它媒體。在一些實(shí)例中,系統(tǒng)存儲(chǔ)器226可被視為非暫時(shí)性存儲(chǔ)媒體。術(shù)語(yǔ)“非暫時(shí)性”可指示存儲(chǔ)媒體未以載波或經(jīng)傳播信號(hào)體現(xiàn)。然而,術(shù)語(yǔ)“非暫時(shí)性”不應(yīng)被解譯為意謂系統(tǒng)存儲(chǔ)器226為不可移動(dòng)的。作為一個(gè)實(shí)例,系統(tǒng)存儲(chǔ)器226可被從裝置210移除,且移動(dòng)到另一裝置。作為另一實(shí)例,實(shí)質(zhì)上類似于系統(tǒng)存儲(chǔ)器226的存儲(chǔ)裝置可插入到裝置210中。在某些實(shí)例中,非暫時(shí)性存儲(chǔ)媒體可存儲(chǔ)可隨時(shí)間的流逝而改變的數(shù)據(jù)(例如在RAM中)。
[0036]GPU220展示具有固定功能管道的GPU的實(shí)例,但本發(fā)明的技術(shù)還可使用包含可編程元件的GPU來(lái)實(shí)施。GPU220包含頂點(diǎn)處理器222和像素處理器224。頂點(diǎn)處理器222可包含執(zhí)行頂點(diǎn)處理功能的硬件單元,而像素處理器可包含執(zhí)行像素處理功能的硬件單元。換句話說(shuō),頂點(diǎn)處理器222和像素處理器224可包含具有固定功能和最小功能靈活性的硬件單元。然而,如先前所提及,本發(fā)明的技術(shù)不意欲限于具有固定功能管道的GPU。
[0037]本發(fā)明中所描述的實(shí)例技術(shù)可利用正由應(yīng)用程序處理器212運(yùn)行的軟件應(yīng)用程序來(lái)攔截API調(diào)用,且修改API調(diào)用以產(chǎn)生經(jīng)修改API調(diào)用。此軟件應(yīng)用程序在圖2中展示為圖形驅(qū)動(dòng)程序包裝器216。通過(guò)使用經(jīng)修改API調(diào)用,GPU220可呈現(xiàn)S3D圖形。
[0038]如上文所論述,立體視圖包含左眼圖像和右眼圖像。左眼圖像和右眼圖像包含與單視圖圖像實(shí)質(zhì)上類似的圖像內(nèi)容;然而,左眼圖像和右眼圖像的一個(gè)或一個(gè)以上對(duì)應(yīng)像素可沿水平軸相對(duì)于彼此位移。舉例來(lái)說(shuō),想象將右眼圖像置于左眼圖像之上。在此狀況下,右眼圖像中的所有內(nèi)容可不與左眼圖像中的相同內(nèi)容完全對(duì)齊。更確切地,右眼中的一個(gè)或一個(gè)以上對(duì)象可在左眼圖像中的相同對(duì)象的左邊或右邊。[0039]左眼圖像可由檢視者的左眼檢視,且右眼圖像被擋住以免被檢視者的左眼看到。右眼圖像可由檢視者的右眼檢視,且左眼圖像被擋住以免被檢視者的右眼看到。在一些實(shí)例中,檢視者可戴上專用眼鏡,其擋住左眼圖像以免可由右眼檢視到,且擋住右眼圖像以免可由左眼檢視到。然而,本發(fā)明的方面不一定要求檢視者戴上專用眼鏡。舉例來(lái)說(shuō),一些顯示器不要求檢視者戴上專用眼鏡來(lái)體驗(yàn)立體視圖。本發(fā)明的技術(shù)可擴(kuò)展到此些情形。
[0040]GPU220可產(chǎn)生用于左眼圖像和右眼圖像的圖形數(shù)據(jù),使得當(dāng)檢視者同時(shí)檢視左眼圖像和右眼圖像兩者時(shí),檢視者的大腦致使檢視者感知跳出正顯示兩個(gè)圖像的顯示器之外或推入到顯示器中(例如,看起來(lái)在顯示器之前或之后)的圖像。此跳出或推入是歸因于檢視者的大腦解析具有實(shí)質(zhì)上類似內(nèi)容的立體視圖的兩個(gè)圖像中的水平差異。
[0041]作為實(shí)例,應(yīng)用程序處理器212可執(zhí)行存儲(chǔ)于系統(tǒng)存儲(chǔ)器226中的一個(gè)或一個(gè)以上應(yīng)用程序,例如應(yīng)用程序232。應(yīng)用程序232的實(shí)例包含但不限于網(wǎng)絡(luò)瀏覽器、電子郵件應(yīng)用程序、電子表格、電視游戲或產(chǎn)生可檢視對(duì)象以供顯示的其它應(yīng)用程序。舉例來(lái)說(shuō),應(yīng)用程序232可為電視游戲,所述電視游戲當(dāng)執(zhí)行時(shí)輸出顯示于顯示器上的3D圖形內(nèi)容。
[0042]應(yīng)用程序232可由開(kāi)發(fā)者針對(duì)單視圖進(jìn)行設(shè)計(jì)。舉例來(lái)說(shuō),應(yīng)用程序232在執(zhí)行時(shí)可產(chǎn)生3D圖形內(nèi)容,其中3D圖形內(nèi)容被顯示器的2D區(qū)域約束。應(yīng)用程序232在執(zhí)行于應(yīng)用程序處理器212上時(shí)可將所產(chǎn)生3D圖形內(nèi)容劃分成基元,例如三角形、矩形或其它類型的多邊形。此些基元中的每一者可用以呈現(xiàn)待顯示于顯示器上的像素。應(yīng)用程序232在執(zhí)行于應(yīng)用程序處理器212上時(shí)還可呈現(xiàn)基元的頂點(diǎn)中的每一者的像素值。舉例來(lái)說(shuō),所述值可包含頂點(diǎn)的3D坐標(biāo)、頂點(diǎn)的顏色值及頂點(diǎn)的透明度值。所述值不需要在本發(fā)明的每一方面中包含所有上文實(shí)例組件。
[0043]應(yīng)用程序處理器212接著可將頂點(diǎn)的像素值轉(zhuǎn)發(fā)到GPU220以供進(jìn)一步處理。舉例來(lái)說(shuō),應(yīng)用程序處理器212可包含圖形驅(qū)動(dòng)程序214,圖形驅(qū)動(dòng)程序214可為執(zhí)行于應(yīng)用程序處理器212上的軟件。圖形驅(qū)動(dòng)程序214可經(jīng)設(shè)計(jì)以將命令傳輸?shù)紾PU220,且作為響應(yīng),GPU220可根據(jù)所接收命令執(zhí)行功能。舉例來(lái)說(shuō),圖形驅(qū)動(dòng)程序214充當(dāng)GPU220與應(yīng)用程序處理器212之間的接口。當(dāng)應(yīng)用程序處理器212將命令發(fā)出到GPU220時(shí),GPU220通過(guò)圖形驅(qū)動(dòng)程序214接收命令。舉例來(lái)說(shuō),執(zhí)行于應(yīng)用程序處理器212上的應(yīng)用程序232可指揮GPU220執(zhí)行特定任務(wù)。在此狀況下,圖形驅(qū)動(dòng)程序214可從應(yīng)用程序232接收針對(duì)特定任務(wù)的指令,且可將指令提供到GPU220。作為響應(yīng),GPU220可執(zhí)行任務(wù)。
[0044]在一些實(shí)例中,可根據(jù)特定API來(lái)設(shè)計(jì)圖形驅(qū)動(dòng)程序214。舉例來(lái)說(shuō),可根據(jù)OpenGL或OpenGL ES (嵌入式系統(tǒng))API來(lái)設(shè)計(jì)圖形驅(qū)動(dòng)程序214,所述OpenGL或OpenGLES API為科納斯集團(tuán)(Khixrnos Group)的API,且其規(guī)范可公開(kāi)獲得。然而,本發(fā)明的技術(shù)可擴(kuò)展到微軟的DirectX系統(tǒng),例如DirectX9、10或11,或任何其它圖形系統(tǒng)和API。出于說(shuō)明的目的,在API為OpenGL EXl.1API的背景下描述本發(fā)明的技術(shù)。然而,本發(fā)明的方面不限于此,且可擴(kuò)展到其它API或圖形系統(tǒng)。
[0045]為了呈現(xiàn)從應(yīng)用程序處理器212接收的基元,GPU220可包含例如頂點(diǎn)處理器222等一個(gè)或一個(gè)以上頂點(diǎn)處理器及例如像素處理器224等一個(gè)或一個(gè)以上像素處理器以產(chǎn)生顯示器的像素的像素值。GPU220還可包含其它未圖示的元件。本發(fā)明的技術(shù)不限于特定GPU架構(gòu)。開(kāi)發(fā)者可根據(jù)頂點(diǎn)處理器222和像素處理器224的能力且根據(jù)API (例如,本發(fā)明中出于說(shuō)明目的而使用的OpenGL EXl.1API)開(kāi)發(fā)圖形應(yīng)用程序。[0046]應(yīng)用程序232可產(chǎn)生基元的頂點(diǎn)的坐標(biāo)。此些坐標(biāo)可被稱作世界坐標(biāo),且可針對(duì)應(yīng)用程序232是特定的。換句話說(shuō),如由應(yīng)用程序232定義的頂點(diǎn)的坐標(biāo)可不一定為顯示基元的顯示器的坐標(biāo),且還可能為在可檢視區(qū)域外部的頂點(diǎn)的坐標(biāo)。頂點(diǎn)處理器222可經(jīng)設(shè)計(jì)以將可在3D中的世界坐標(biāo)轉(zhuǎn)換成顯示器的2D坐標(biāo)(例如,顯示坐標(biāo))。為了執(zhí)行此功能,頂點(diǎn)處理器222可將世界坐標(biāo)變換成眼睛坐標(biāo),且接著變換成剪切坐標(biāo)。舉例來(lái)說(shuō),頂點(diǎn)處理器222在執(zhí)行時(shí)的輸出可為頂點(diǎn)的剪切坐標(biāo)。隨后可由像素處理器224確定最終顯示坐標(biāo)(例如,顯示器的坐標(biāo))。
[0047]剪切坐標(biāo)可定義視錐。視錐可定義3D圖形內(nèi)容的可檢視區(qū)域。GPU220可利用視錐來(lái)剔除位于視錐外部的像素。舉例來(lái)說(shuō),GPU220的固定功能單元(例如,像素處理器224)可剔除如由應(yīng)用程序232產(chǎn)生的剪切坐標(biāo)所定義的位于視錐外部的像素。
[0048]用以根據(jù)世界坐標(biāo)計(jì)算剪切坐標(biāo)的等式可為:
[0049]Vclip=PRJ*Veye=PRJ*MVT*VworId=MVP*VworId (等式 I)
[0050]其中Vclip為頂點(diǎn)剪切坐標(biāo),Veye為頂點(diǎn)眼睛坐標(biāo),Vworld為由應(yīng)用程序232提供的頂點(diǎn)世界坐標(biāo),PRJ為投影矩陣,且MVT為模型視圖變換矩陣(或世界視圖變換矩陣)。在一些實(shí)例中,PRJ和MVT矩陣可組合成單個(gè)矩陣,其可被稱作模型視圖投影矩陣,或如上文在等式I中所示的MVP,其中MVP=PRJ*MVT。
[0051]投影矩陣(PRJ)和模型視圖或世界視圖變換矩陣(MVT)可由API定義。術(shù)語(yǔ)模型視圖和世界視圖可互換地使用。Vclip、Veye和Vworld可包含四個(gè)分量(例如,x、y、z和w坐標(biāo))。舉例來(lái)說(shuō),Vclip、Veye和Vworld可表示為:
[0052]
【權(quán)利要求】
1.一種將非立體三維3D內(nèi)容轉(zhuǎn)換成立體3D S3D內(nèi)容的方法,所述方法包括: 攔截應(yīng)用程序接口 API調(diào)用; 根據(jù)所述API調(diào)用確定用于所述非立體3D內(nèi)容的模型視圖投影矩陣; 修改所述模型視圖投影矩陣以產(chǎn)生經(jīng)修改的模型視圖投影矩陣; 基于所述經(jīng)修改的模型視圖投影矩陣,產(chǎn)生左視圖剪切坐標(biāo); 基于所述經(jīng)修改的模型視圖投影矩陣,產(chǎn)生右視圖剪切坐標(biāo); 基于所述左視圖到切坐標(biāo),廣生左視圖; 基于所述右視圖到切坐標(biāo),廣生右視圖; 基于所述左視圖和所述右視圖,呈現(xiàn)S3D圖像。
2.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括: 將視口移位應(yīng)用于所述左視圖;及, 將視口移位應(yīng)用于所 述右視圖。
3.根據(jù)權(quán)利要求2所述的方法,其中所述左視圖的所述視口移位的量和所述右視圖的所述視口移位的量是基于一個(gè)或一個(gè)以上用戶輸入的參數(shù)來(lái)確定的。
4.根據(jù)權(quán)利要求2所述的方法,其中所述左視圖的所述視口移位的量和所述右視圖的所述視口移位的量是基于確定先前產(chǎn)生的圖像的場(chǎng)景的深度范圍來(lái)確定的。
5.根據(jù)權(quán)利要求1所述的方法,其中修改所述模型視圖投影矩陣以產(chǎn)生所述經(jīng)修改的模型視圖投影矩陣包括將常量與所述模型視圖投影矩陣相加。
6.根據(jù)權(quán)利要求5所述的方法,其中將所述常量與所述模型視圖投影矩陣的第一行、第四列處的元素相加。
7.根據(jù)權(quán)利要求1所述的方法,其中所述模型視圖投影矩陣是針對(duì)所述非立體3D內(nèi)容而定義的。
8.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括: 接收系統(tǒng)命令,其中所述系統(tǒng)命令啟用將3D內(nèi)容轉(zhuǎn)換成S3D內(nèi)容的操作模式。
9.根據(jù)權(quán)利要求1所述的方法,其中用以產(chǎn)生所述左視圖剪切坐標(biāo)的所述經(jīng)修改的模型視圖投影矩陣的值與用以產(chǎn)生所述右視圖剪切坐標(biāo)的所述經(jīng)修改的模型視圖投影矩陣的值相同。
10.一種裝置,其包括: 存儲(chǔ)器,其存儲(chǔ)指令; 圖形處理單元GPU;及, 處理器,其可操作以在執(zhí)行所述指令時(shí)進(jìn)行以下動(dòng)作: 攔截應(yīng)用程序接口 API調(diào)用; 根據(jù)所述API調(diào)用確定用于非立體3D內(nèi)容的模型視圖投影矩陣; 修改所述模型視圖投影矩陣以產(chǎn)生經(jīng)修改的模型視圖投影矩陣; 基于所述經(jīng)修改的模型視圖投影矩陣,致使所述GPU產(chǎn)生左視圖剪切坐標(biāo); 基于所述經(jīng)修改的模型視圖投影矩陣,致使所述GPU產(chǎn)生右視圖剪切坐標(biāo); 基于所述左視圖剪切坐標(biāo),致使所述GPU產(chǎn)生左視圖; 基于所述右視圖剪切坐標(biāo),致使所述GPU產(chǎn)生右視圖; 基于所述左視圖和所述右視圖,致使所述GPU呈現(xiàn)S3D圖像。
11.根據(jù)權(quán)利要求10所述的裝置,其中所述處理器可進(jìn)一步操作以: 致使所述GPU將視口移位應(yīng)用于所述左視圖及將視口移位應(yīng)用于所述右視圖。
12.根據(jù)權(quán)利要求11所述的裝置,其中所述左視圖的所述視口移位的量和所述右視圖的所述視口移位的量是基于一個(gè)或一個(gè)以上用戶輸入的參數(shù)來(lái)確定的。
13.根據(jù)權(quán)利要求11所述的裝置,其中所述左視圖的所述視口移位的量和所述右視圖的所述視口移位的量是基于確定先前產(chǎn)生的圖像的場(chǎng)景的深度范圍來(lái)確定的。
14.根據(jù)權(quán)利要求10所述的裝置,其中所述處理器通過(guò)將常量與所述模型視圖投影矩陣相加來(lái)修改所述模型視圖投影矩陣。
15.根據(jù)權(quán)利要求14所述的裝置,其中所述常量與所述模型視圖投影矩陣的第一行、第四列處的元素相加。
16.根據(jù)權(quán)利要求10所述的裝置,其中所述模型視圖投影矩陣是針對(duì)所述非立體3D內(nèi)容而定義的。
17.根據(jù)權(quán)利要求10所述的裝置,其中所述處理器可進(jìn)一步操作以: 接收系統(tǒng)命令,其中所述系統(tǒng)命令啟用將3D內(nèi)容轉(zhuǎn)換成S3D內(nèi)容的操作模式。
18.根據(jù)權(quán)利要求10所述的裝置,其中用以產(chǎn)生所述左視圖剪切坐標(biāo)的所述經(jīng)修改的模型視圖投影矩陣的值與用以產(chǎn)生所述右視圖剪切坐標(biāo)的所述經(jīng)修改的模型視圖投影矩陣的值相同。
19.一種用于將非立體三維3D內(nèi)容轉(zhuǎn)換成立體3D S3D內(nèi)容的設(shè)備,所述設(shè)備包括: 用于攔截應(yīng)用程序接口 API調(diào)用的裝置; 用于根據(jù)所述API調(diào)用確定用于所述非立體3D內(nèi)容的模型視圖投影矩陣的裝置: 用于修改所述模型視圖投影矩陣以產(chǎn)生經(jīng)修改的模型視圖投影矩陣的裝置; 用于基于所述經(jīng)修改的模型視圖投影矩陣產(chǎn)生左視圖剪切坐標(biāo)的裝置; 用于基于所述經(jīng)修改的模型視圖投影矩陣產(chǎn)生右視圖剪切坐標(biāo)的裝置; 用于基于所述左視圖剪切坐標(biāo)產(chǎn)生左視圖的裝置; 用于基于所述右視圖剪切坐標(biāo)產(chǎn)生右視圖的裝置; 用于基于所述左視圖和所述右視圖呈現(xiàn)S3D圖像的裝置。
20.根據(jù)權(quán)利要求19所述的設(shè)備,其進(jìn)一步包括: 用于將視口移位應(yīng)用于所述左視圖的裝置;及, 用于將視口移位應(yīng)用于所述右視圖的裝置。
21.根據(jù)權(quán)利要求20所述的設(shè)備,其中所述左視圖的所述視口移位的量和所述右視圖的所述視口移位的量是基于一個(gè)或一個(gè)以上用戶輸入的參數(shù)來(lái)確定的。
22.根據(jù)權(quán)利要求20所述的設(shè)備,其中所述左視圖的所述視口移位的量和所述右視圖的所述視口移位的量是基于確定先前產(chǎn)生的圖像的場(chǎng)景的深度范圍來(lái)確定的。
23.根據(jù)權(quán)利要求19所述的設(shè)備,所述用于修改所述模型視圖投影矩陣以產(chǎn)生所述經(jīng)修改的模型視圖投影矩陣的裝置包括用于將常量與所述模型視圖投影矩陣相加的裝置。
24.根據(jù)權(quán)利要求23所述的設(shè)備,其中所述用于相加所述常量的裝置將所述常量與所述模型視圖投影矩陣的第一行、第四列處的元素相加。
25.根據(jù)權(quán)利要求19所述的設(shè)備,其中所述模型視圖投影矩陣是針對(duì)所述非立體3D內(nèi)容而定義的。
26.根據(jù)權(quán)利要求19所述的設(shè)備,其進(jìn)一步包括: 用于接收系統(tǒng)命令的裝置,其中所述系統(tǒng)命令啟用將3D內(nèi)容轉(zhuǎn)換成S3D內(nèi)容的操作模式。
27.根據(jù)權(quán)利要求19所述的設(shè)備,其中用以產(chǎn)生所述左視圖剪切坐標(biāo)的所述經(jīng)修改的模型視圖投影矩陣的值與用以產(chǎn)生所述右視圖剪切坐標(biāo)的所述經(jīng)修改的模型視圖投影矩陣的值相同。
28.一種計(jì)算機(jī)可讀存儲(chǔ)媒體,其上存儲(chǔ)有指令,所述指令當(dāng)被執(zhí)行時(shí)致使一個(gè)或一個(gè)以上處理器: 攔截應(yīng)用程序接口 API調(diào)用; 根據(jù)所述API調(diào)用確定用于所述非立體3D內(nèi)容的模型視圖投影矩陣; 修改所述模型視圖投影矩陣以產(chǎn)生經(jīng)修改的模型視圖投影矩陣; 基于所述經(jīng)修改的模型視圖投影矩陣,產(chǎn)生左視圖剪切坐標(biāo); 基于所述經(jīng)修改的模型視圖投影矩陣,產(chǎn)生右視圖剪切坐標(biāo); 基于所述左視圖到切坐標(biāo),廣生左視圖; 基于所述右視圖到切坐標(biāo),廣生右視圖; 基于所述左視圖和所述右視圖,呈現(xiàn)S3D圖像。
29.根據(jù)權(quán)利要求28所 述的計(jì)算機(jī)可讀存儲(chǔ)媒體,其上存儲(chǔ)有其它指令,所述指令當(dāng)被執(zhí)行時(shí)致使所述一個(gè)或一個(gè)以上處理器: 將視口移位應(yīng)用于所述左視圖;及, 將視口移位應(yīng)用于所述右視圖。
30.根據(jù)權(quán)利要求29所述的計(jì)算機(jī)可讀存儲(chǔ)媒體,其中所述左視圖的所述視口移位的量和所述右視圖的所述視口移位的量是基于一個(gè)或一個(gè)以上用戶輸入的參數(shù)來(lái)確定的。
31.根據(jù)權(quán)利要求29所述的計(jì)算機(jī)可讀存儲(chǔ)媒體,其中所述左視圖的所述視口移位的量和所述右視圖的所述視口移位的量是基于確定先前產(chǎn)生的圖像的場(chǎng)景的深度范圍來(lái)確定的。
32.根據(jù)權(quán)利要求28所述的計(jì)算機(jī)可讀存儲(chǔ)媒體,其中所述一個(gè)或一個(gè)以上處理器通過(guò)將常量與所述模型視圖投影矩陣相加來(lái)修改所述模型視圖投影矩陣。
33.根據(jù)權(quán)利要求32所述的計(jì)算機(jī)可讀存儲(chǔ)媒體,其中所述常量與所述模型視圖投影矩陣的第一行、第四列處的元素相加。
34.根據(jù)權(quán)利要求28所述的計(jì)算機(jī)可讀存儲(chǔ)媒體,其中所述模型視圖投影矩陣是針對(duì)所述非立體3D內(nèi)容而定義的。
35.根據(jù)權(quán)利要求28所述的計(jì)算機(jī)可讀存儲(chǔ)媒體,其上存儲(chǔ)有其它指令,所述指令當(dāng)執(zhí)行時(shí)致使所述一個(gè)或一個(gè)以上處理器: 接收系統(tǒng)命令,其中所述系統(tǒng)命令啟用將3D內(nèi)容轉(zhuǎn)換成S3D內(nèi)容的操作模式。
36.根據(jù)權(quán)利要求28所述的計(jì)算機(jī)可讀存儲(chǔ)媒體,其中用以產(chǎn)生所述左視圖剪切坐標(biāo)的所述經(jīng)修改的模型視圖投影矩陣的值與用以產(chǎn)生所述右視圖剪切坐標(biāo)的所述經(jīng)修改模型視圖投影矩陣的值相同。
【文檔編號(hào)】H04N13/00GK103444190SQ201280013469
【公開(kāi)日】2013年12月11日 申請(qǐng)日期:2012年3月13日 優(yōu)先權(quán)日:2011年3月14日
【發(fā)明者】畢寧, 張雪瑞, 耶敏·羅希特庫(kù)馬爾·比尚, 任劍鋒, 馬尼什·馬達(dá)胡卡爾·希爾德希穆克, 周清 申請(qǐng)人:高通股份有限公司