專利名稱:用于向計(jì)算機(jī)圖形中的對象添加陰影的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)圖形領(lǐng)域,特別地涉及一種用于在計(jì)算機(jī)圖形中使對象陰影化的快速且簡單的方法。
背景技術(shù):
在計(jì)算機(jī)圖形領(lǐng)域中,生成由虛擬光源照明的對象的陰影是眾所周知的。該特征在通過增強(qiáng)場景中的深度的可感知性來使計(jì)算機(jī)生成的圖像具有真實(shí)感的方面起重要作用。換句話說,陰影有助于了解對象具有怎樣的深度,以及它們在空間中相對于彼此的位置如何。場景通常定義為多個(gè)三維(3D)對象和多個(gè)光源。觀察者從視點(diǎn)觀察場景。觀察者有時(shí)被稱為“相機(jī)”。場景被渲染到圖像中。在計(jì)算機(jī)圖形領(lǐng)域中,渲染的意思是計(jì)算圖像。在該上下文中,渲染為計(jì)算描繪場景的圖像的過程,就像從觀察者(相機(jī))的視點(diǎn)觀看場景一樣??梢酝ㄟ^渲染多個(gè)連續(xù)的圖像并在所述渲染圖像之間移動(dòng)對象和/或觀察者/ 相機(jī)來創(chuàng)建運(yùn)動(dòng)畫面或影像。市面上已有通過允許用戶在3D位置插入3D對象來構(gòu)建場景的計(jì)算機(jī)程序。市面上已有可自動(dòng)地向3D對象添加陰影的其它計(jì)算機(jī)程序。例如,存在允許用戶指派3D對象的位置、并相對于該位置移動(dòng)虛擬光源以便于從期望的方向虛擬地照明對象的計(jì)算機(jī)程序。計(jì)算機(jī)程序然后可以基于對象的形狀以及對象和虛擬光源的相對位置自動(dòng)地生成對象的陰影。還存在用于生成意圖動(dòng)畫制作雪、雨、水、煙等小尺寸粒子形式的多個(gè)對象的計(jì)算機(jī)程序。這種類型的計(jì)算機(jī)程序有時(shí)被稱為粒子動(dòng)畫系統(tǒng)。粒子動(dòng)畫系統(tǒng)的一個(gè)示例為由 Trapcode AB公司開發(fā)的Trapcode Particular 。在粒子動(dòng)畫系統(tǒng)中,用戶向一組對象指派規(guī)則,以便于不需要單獨(dú)地定位或定向它們。反過來,計(jì)算機(jī)基于指派的規(guī)則計(jì)算它們的位置。在運(yùn)動(dòng)畫面或影像的情形下,計(jì)算機(jī)隨時(shí)間計(jì)算該組對象的位置。粒子動(dòng)畫系統(tǒng)因此對如下情況是有用的在創(chuàng)建具有非常多的對象的場景的情況下,且在該情況下單獨(dú)地定位每個(gè)對象是不實(shí)際的。通過計(jì)算機(jī)程序,每個(gè)粒子被指派3D位置,并且還可以被指派其它屬性,例如速度、方向、旋轉(zhuǎn)速度等。還存在如下粒子動(dòng)畫系統(tǒng)該粒子動(dòng)畫系統(tǒng)允許用戶通過指定場景中的一個(gè)或若干個(gè)光源的3D位置將光源插入到場景中。一些粒子動(dòng)畫系統(tǒng)甚至包括用于將陰影效果添加到包括光源的場景中的功能。然而,在場景中自動(dòng)地生成對象的逼真陰影的任務(wù)是一個(gè)復(fù)雜的任務(wù),其通常需要非常高的計(jì)算能力。已知的提供這種功能的計(jì)算機(jī)程序使用非常復(fù)雜并使得圖像渲染很慢、特別是對于具有多個(gè)對象的場景渲染很慢的方法,或者使用產(chǎn)生不令人滿意結(jié)果使得渲染的圖像看上去不逼真的方法。因此,存在對用于使計(jì)算機(jī)生成的場景中的對象逼真地陰影化的快速且簡單的方法的期望。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種用于快速且簡單地使計(jì)算機(jī)生成的場景中的對象陰影化的方法。該目的通過向計(jì)算機(jī)生成的對象自動(dòng)添加陰影的方法實(shí)現(xiàn),包括以下步驟-基于第一原始對象的3D位置和第一光源的3D位置計(jì)算陰影對象的第一3D (三維)位置;以及-將陰影對象在所述第一3D位置處添加到所述場景。通過在基于原始對象和光源的3D位置確定的第一 3D位置處向場景自動(dòng)地添加單獨(dú)對象(文中稱為陰影對象),可以針對場景的每一原始對象/光源對自動(dòng)地添加陰影對象,該陰影對象會(huì)引起從場景渲染而成的圖像的逼真陰影效果。優(yōu)選地,計(jì)算添加陰影對象的第一 3D位置,使得陰影對象從光源的視點(diǎn)看定位在所述第一原始對象的后面,并與第一原始對象隔開一定的偏移距離。即,可以計(jì)算第一 3D 位置,使得陰影對象沿著穿過所述第一光源和所述第一原始對象的(假想)直線定位,并且從光源的視點(diǎn)看位于所述第一對象的后面,在該情形下偏移距離為沿著所述直線的、在第一對象和陰影對象之間的距離。通常,通過將對象/光源的“中心點(diǎn)”與單個(gè)(X,1, ζ)坐標(biāo)相關(guān)聯(lián),場景中的每一個(gè)對象和光源被指派3D位置。然后可以基于第一原始對象和光源的已知的(x,y,z)坐標(biāo)計(jì)算假想直線,且可以通過將陰影對象的“中心點(diǎn)”與位于假想直線上并與第一原始對象隔開一定偏移距離的U,1,ζ)坐標(biāo)相關(guān)聯(lián)來定位陰影對象。以此方式,陰影對象相對于原始對象和光的方向逼真地定位,并且計(jì)算第一 3D位置的數(shù)學(xué)運(yùn)算變得非常簡單,由此降低了將陰影對象插入到場景所需的計(jì)算能力。優(yōu)選地,陰影對象為二維QD)對象,例如圓形、矩形、三角形、五邊形或任何其它 2D形狀。生成2D形狀不需要和生成3D圖形一樣高的計(jì)算能力,并且通過生成圓形或其它不復(fù)雜的2D形狀形式的陰影對象,計(jì)算能力需求被進(jìn)一步降低,由此允許快速執(zhí)行該方法,和/或允許通過非高性能的處理單元執(zhí)行該方法。優(yōu)選地,二維形狀的邊緣被模糊化,使得陰影對象朝向其周邊“淡出”,從而使得當(dāng)將場景渲染到圖像中時(shí),在陰影對象和陰影對象合成到其上的任何原始對象或背景之間不存在尖銳的邊緣。根據(jù)本發(fā)明的優(yōu)選實(shí)施例,以邊緣模糊化的圓形形式生成陰影對象。已發(fā)現(xiàn)邊緣模糊化的圓形形式的陰影對象產(chǎn)生非常逼真的陰影效果,甚至在原始對象具有其它的非圓形形狀的情形下也是如此。該方法可以進(jìn)一步包括將陰影對象的不透明度設(shè)置為一定的不透明值的步驟。并且/或者它可以包括將陰影對象的顏色設(shè)置為一定顏色值的步驟。優(yōu)選地,基于上述的偏移距離計(jì)算透明度值和/或顏色值。由此,可以計(jì)算不透明度值和/或顏色值,使得當(dāng)偏移值增加時(shí)不透明降低和/或顏色發(fā)生變化。這種特征具有如下效果當(dāng)陰影對象位于遠(yuǎn)離引起它的原始對象時(shí),陰影對象將變得不突出,這又使得從景象渲染而成的圖像具有更逼真的陰影化效果。該方法的更多的有益特征將在下文的詳細(xì)描述和所附權(quán)利要求中進(jìn)行描述。本發(fā)明的另一個(gè)目的是提供一種用于快速且簡單地使計(jì)算機(jī)生成的場景中的對象陰影化的計(jì)算機(jī)程序產(chǎn)品。該目的通過如下設(shè)備的計(jì)算機(jī)程序?qū)崿F(xiàn),該設(shè)備包括處理單元和圖形渲染單元,其能夠生成包括至少一個(gè)第一原始對象和至少一個(gè)第一光源的場景。計(jì)算機(jī)程序包括計(jì)算機(jī)可讀代碼,該計(jì)算機(jī)可讀代碼當(dāng)通過處理單元運(yùn)行時(shí)使得設(shè)備執(zhí)行上述方法。根據(jù)本發(fā)明的另一方面,提供了一種計(jì)算機(jī)程序產(chǎn)品。計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀介質(zhì)和存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)可讀代碼。計(jì)算機(jī)可讀代碼為上述計(jì)算機(jī)程序。計(jì)算機(jī)可讀介質(zhì)可以為硬磁盤驅(qū)動(dòng)器、光盤只讀存儲(chǔ)器(⑶ROM)、數(shù)字化視頻光盤 (DVD)或現(xiàn)有技術(shù)已知的任何其它計(jì)算機(jī)可讀介質(zhì)。根據(jù)本發(fā)明的又一方面,提供了一種設(shè)備,該設(shè)備包括計(jì)算裝置和圖形渲染單元, 其能夠生成包括至少一個(gè)第一原始對象和至少一個(gè)第一光源的場景。計(jì)算裝置適于基于第一原始對象的3D位置和第一光源的3D位置計(jì)算陰影對象的第一 3D位置,圖形渲染單元適于將陰影對象添加到所述場景的所述3D位置處。計(jì)算裝置可以為處理單元,例如微處理器等,而圖形渲染單元可以例如為圖形處理單元(GPU)。本發(fā)明用于粒子動(dòng)畫系統(tǒng)時(shí)是特別有利的,在這樣的粒子動(dòng)畫系統(tǒng)中,大量的小尺寸粒子形式的原始對象的陰影要被加入到場景中。通過簡單地將圓一優(yōu)選地邊緣模糊化的圓一從待被添加陰影的粒子偏移一定的偏移距離,并使其從光源的視點(diǎn)看位于粒子的后面,則只需要執(zhí)行很少的計(jì)算。此外,在特定3D位置處畫出具有特定半徑的圓是非常簡單的過程,其不需要執(zhí)行該方法的設(shè)備的處理單元或圖形渲染單元執(zhí)行任何復(fù)雜的計(jì)算。此外,在創(chuàng)建將計(jì)算機(jī)生成的效果加入到實(shí)景鏡頭中的任何運(yùn)動(dòng)畫面或影像的時(shí)候,可以有利地使用本發(fā)明。在這種情形下,本發(fā)明會(huì)使計(jì)算機(jī)生成的圖像看起來更加真實(shí)、更像實(shí)景鏡頭的自然部分,從而使得效果對于觀眾變得更加可信。本發(fā)明對于增強(qiáng)不包括實(shí)景鏡頭而是純數(shù)字渲染的運(yùn)動(dòng)畫面或影像的可感知性也是有益的。本發(fā)明還可以有利地用作在創(chuàng)建意圖模擬真實(shí)物理環(huán)境的虛擬環(huán)境時(shí)的工具。例如,建筑師可以在設(shè)計(jì)房屋時(shí)使用本發(fā)明;建筑師可以使用本發(fā)明來幫助形象化例如在圖像、電影或房屋的交互預(yù)演(interactive walk-through)中的房屋。本發(fā)明添加的陰影將增加空間感知,使得圖像看起來更逼真。本發(fā)明還可以用于模擬器中,例如用于飛行模擬器或汽車模擬器中。在這種情形下,所提出的用于添加陰影的方法可以幫助飛行員/駕駛員估計(jì)在虛擬環(huán)境中到對象的距離以及對象相對于彼此的位置。換句話說,本發(fā)明可以增強(qiáng)飛行員/駕駛員的空間感知。本發(fā)明的另一個(gè)示例性應(yīng)用領(lǐng)域?yàn)橛?jì)算機(jī)游戲。大部分現(xiàn)代計(jì)算機(jī)游戲使用3D 圖形。因?yàn)楸景l(fā)明呈現(xiàn)了一種用于在3D環(huán)境中逼真地添加陰影的非??焖俜椒?,所以它有利于用于諸如計(jì)算機(jī)游戲的實(shí)時(shí)應(yīng)用中,以實(shí)現(xiàn)虛擬3D世界的逼真陰影化。本發(fā)明還可以用于醫(yī)學(xué)應(yīng)用中,例如用于可視化諸如器官或分子的復(fù)雜3D結(jié)構(gòu)。 為了清晰起見,可以加入陰影化。本發(fā)明還有利地用于移動(dòng)設(shè)備的軟件應(yīng)用中,移動(dòng)設(shè)備例如移動(dòng)電話、個(gè)人數(shù)字助理(PDA)等。在移動(dòng)設(shè)備中,計(jì)算資源通常不足,設(shè)備應(yīng)當(dāng)執(zhí)行最小量的計(jì)算,以節(jié)省能量。本發(fā)明非常有益于以快速且省電的方式來渲染逼真地陰影化的圖像。
圖1示出了示例場景和觀察者;圖2示出了在根據(jù)本發(fā)明的原則向圖1中所示的場景添加了陰影對象的情況下的場景;圖3示出了根據(jù)本發(fā)明的原則如何相對于相關(guān)聯(lián)的原始對象和光源定位陰影對象的示例;圖4示出了如何相對于第一原始對象和從光源的視點(diǎn)看位于第一原始對象的后面的第二原始對象定位第一被照明原始對象的陰影對象的示例;圖5和圖6示出了根據(jù)本發(fā)明的方法的效果。圖5示出了從只包括原始對象的場景渲染而成的圖像,而圖6示出了從相同的場景但是根據(jù)本發(fā)明的原則添加了陰影對象之后渲染而成的圖像;圖7示出了示例性場景的一部分;圖8示出了四幅圖,所述四幅圖示出了根據(jù)本發(fā)明如何設(shè)置陰影對象的像素的強(qiáng)度值的不同示例;圖9示出了根據(jù)本發(fā)明的計(jì)算機(jī)程序的示例性圖形用戶界面;以及圖10為示出了根據(jù)本發(fā)明的實(shí)施例的方法的流程圖。
具體實(shí)施例方式圖1示出了包括原始對象2和光源3的場景1,每個(gè)原始對象2和光源3具有三維 (3D)位置。觀察者4從同樣指派了 3D位置的視點(diǎn)觀察場景1。在計(jì)算機(jī)圖形領(lǐng)域,觀察者 (即,在渲染圖像中觀察場景的3D位置)有時(shí)被視為場景的一部分,而有時(shí)則不被視為場景的一部分。下文中,觀察者4將不被視為場景1的一部分。替代地,貫穿本文,場景被定義成包括至少一個(gè)原始對象2和至少一個(gè)光源3的虛擬3D空間。場景1完全地或部分地由運(yùn)行生成3D場景的計(jì)算機(jī)程序的計(jì)算機(jī)生成。原始對象2可以是任何類型的對象。例如,原始對象2可以是描繪任何真實(shí)或想象對象(例如狗、人、宇宙飛船,天體等)的3D模型。原始對象2還可以是描繪任何真實(shí)或想象對象(例如人臉、星體、信件、圓等的照片或圖像)的2D對象。原始對象2還可以是粒子動(dòng)畫系統(tǒng)中的粒子。場景1中的每一個(gè)原始對象2和每一個(gè)光源3被指派3D位置。原始對象2和光源3可以由計(jì)算機(jī)用戶手動(dòng)地定位,或者它們可以由計(jì)算機(jī)自動(dòng)地或半自動(dòng)地定位。存在用于指派原始對象2和光源3的3D位置的若干方法,而這些確切的實(shí)現(xiàn)方法在本發(fā)明的范圍之外??梢越柚谀軌?qū)?D場景中的對象渲染到圖像中的任何已知方法渲染場景1的原始對象2。根據(jù)本發(fā)明的一些方面,存在對對象渲染方法的特定需求;例如可能要求方法對渲染圖像中的每個(gè)像素指派深度值和/或阿爾法值。當(dāng)是這種情形時(shí),將會(huì)在描述中對此進(jìn)行清晰的陳述。圖2示出了圖1中所示場景,其中已根據(jù)本發(fā)明的示例性實(shí)施例添加了陰影。當(dāng)計(jì)算機(jī)運(yùn)行指示計(jì)算機(jī)執(zhí)行下文中所述方法步驟的計(jì)算機(jī)代碼時(shí),計(jì)算機(jī)自動(dòng)地生成陰影并將陰影添加到場景1。因此應(yīng)當(dāng)理解本發(fā)明通常實(shí)現(xiàn)為計(jì)算機(jī)程序,當(dāng)該計(jì)算機(jī)程序運(yùn)行在計(jì)算機(jī)上或者運(yùn)行在包括處理單元(例如,微處理器)和圖形渲染單元(例如,圖形處理單元(GPU))的任何其它設(shè)備上時(shí),使設(shè)備執(zhí)行所述方法步驟。針對場景1中的每一個(gè)原始對象2和每一個(gè)光源3,添加作為原始對象2的近似物的新對象5。與特定原始對象2和特定光源3相關(guān)聯(lián)的近似物,即特定的對象/光源對,被指派基于原始對象2的3D位置和光源3的3D位置而計(jì)算的3D位置。下文中,原始對象2 的近似物被稱為“陰影對象”。當(dāng)在下文中使用術(shù)語“所有對象”時(shí),既指原始對象又指陰影對象;而術(shù)語“項(xiàng)”指的是場景的所有項(xiàng),既包括對象又包括光源。現(xiàn)在參照圖3,通過選取原始對象20的3D位置并沿著來自光源30的3D位置的光的方向偏移,計(jì)算陰影對象50的3D位置。在下文中稱為偏移距離d。ffset的偏移量可以是用戶指定的預(yù)設(shè)參數(shù)和/或是可以由計(jì)算機(jī)基于光源30和原始對象20的位置和/或尺寸而自動(dòng)計(jì)算的參數(shù)。還可以基于場景中的其它對象自動(dòng)地計(jì)算該偏移距離,這將在下面進(jìn)行詳細(xì)的描述。在本發(fā)明的該實(shí)施例中,陰影對象50的中心被放置在空間中沿著貫穿原始對象 20的中心和光源30的中心的直線7的一點(diǎn)處,位于與原始對象20隔開一定的偏移距離,且從光源視點(diǎn)看位于原始對象20的后面。在該示例性實(shí)施例中,偏移距離被視為定義成從原始對象20的中心到陰影對象50的中心的距離。然而,應(yīng)當(dāng)理解還可以以其它方式定義偏移距離,例如將其定義成分別在原始對象20和陰影對象50上的、相距距離最短的點(diǎn)之間的距離。還應(yīng)當(dāng)理解可以以各種不同的方式定義原始對象或光源的“中心”。在附圖中,為了簡單起見,原始對象和光源示出為球體,在該情形下,自然將每個(gè)對象/光源的“中心”定義為球體的中心。然而,原始對象或光源可以具有任何給定的2D或3D形狀,并且可以根據(jù)用于確定哪個(gè)點(diǎn)可以被視為2D或3D對象的“中心點(diǎn)”的任何已知原則來計(jì)算每一個(gè)原始對象或光源的中心點(diǎn)。然而,因?yàn)閳鼍暗乃许?xiàng)在被添加到場景中時(shí)通常被別指派了單一的(x,y,z)坐標(biāo)形式的3D位置,所以當(dāng)生成陰影對象50時(shí)通常不需要執(zhí)行計(jì)算來確定原始對象20和光源30的中心點(diǎn)。因此,原始對象20和光源30通常已被指派了可以視為其中心點(diǎn)的各自的(x,y,z)坐標(biāo)。陰影對象50通常以2D形狀的形式生成。與生成為3D形狀相比,生成2D形狀需要較小的計(jì)算能力。陰影對象50可以為原始對象20的簡單的邊緣模糊化的2D近似物。 優(yōu)選地,陰影形狀50以邊緣模糊化的圓的形式生成。在該示例性實(shí)施例中,原始對象20為球體,邊緣模糊化的圓為原始對象20的極好的近似物。然而,已發(fā)現(xiàn)邊緣模糊化的圓形式的陰影對象50還在場景中的原始對象具有其它形式時(shí)也產(chǎn)生渲染圖像的非常逼真的陰影化。從圖2和圖3所示的實(shí)施例看出,2D陰影對象5、50通常面向觀察者4、40??梢哉f陰影對象50是通過將原始對象20投影到距離原始對象50給定的偏移距離的假想平面 8而生成的。生成假想平面8以及由此生成的二維陰影對象50以便于總是面向觀察者40, 這意味著要選擇假想平面8的傾斜度,使得來自觀察者40的視線形成投影平面8的法線, 或者至少形成基本上平行于投影平面8的法線的直線。這種類型的圖像在計(jì)算機(jī)圖形領(lǐng)域中通常稱為“公告牌(billboard)”或“精靈(sprite)”。應(yīng)當(dāng)理解不需要額外的計(jì)算來使得2D陰影對象50面向觀察者40。當(dāng)在場景中添加2D形狀時(shí),該2D形狀自動(dòng)地生成為面向指派給觀察者40的位置。可以不同的方式確定陰影對象50的尺寸。根據(jù)本發(fā)明的一個(gè)方面,陰影對象50的尺寸被簡單地設(shè)置成預(yù)定的標(biāo)準(zhǔn)值。根據(jù)本發(fā)明的另一方面,陰影對象50的尺寸被設(shè)置成使得它與原始對象20的尺寸成比例。在這種情形下,原始對象20的尺寸和陰影對象50的尺寸之間的比值常數(shù)可以為用戶參數(shù)。根據(jù)本發(fā)明的又一方面,可以基于光源30和原始對象20之間的距離計(jì)算陰影對象50的尺寸。例如,可以基于該距離確定上述可被用來相對于原始對象20設(shè)置陰影對象50的尺寸的比例常數(shù)。在這種情形下,比例常數(shù)優(yōu)選地隨著距離的減小而增大,使得當(dāng)光源30和原始對象20之間的距離變小時(shí)陰影對象50變大。當(dāng)該距離增加時(shí),比例常數(shù)可以收斂到1,以便給觀察者40帶來下述印象當(dāng)光源30發(fā)出的光束照到原始對象20上時(shí)基本上是平行的。由此,場景IB的陰影化變得更逼真且有助于觀察者40估計(jì)場景的對象之間的距離。同樣,陰影對象50可以經(jīng)受透視縮放(perspective scaling),意思是陰影對象50的尺寸隨著陰影對象50遠(yuǎn)離觀察者40而減小。因此,還可以基于觀察者40和陰影對象50之間的距離計(jì)算陰影對象50的尺寸,該距離對應(yīng)于觀察者 40看到的場景中的陰影對象50的深度。如上所述,偏移距離,即添加陰影對象50處相距原始對象的距離,可以為預(yù)定參數(shù)或用戶指定參數(shù)。然而,還可以基于要被添加陰影對象的原始對象20的已知尺寸通過計(jì)算機(jī)自動(dòng)地計(jì)算該偏移距離。例如,在圖3中示出的情況下,偏移距離被定義為從球形原始對象20的中心到陰影對象50的中心的距離,可以將偏移距離計(jì)算成原始對象20的半徑加上或乘以合適的值。當(dāng)計(jì)算偏移距離時(shí),通過考慮原始對象20的尺寸,可以確保陰影對象 50定位在后面(從光源視點(diǎn)看)而不在原始對象內(nèi)部。還可以基于場景中的其它原始對象的尺寸和/或3D位置計(jì)算偏移值。圖4示出了從光源視點(diǎn)看第二原始對象20B位于第一原始對象20A的后面的場景。在這種情況中, 可以計(jì)算偏移距離,使得表示第一原始對象20A的陰影的陰影對象50定位在第一原始對象 20A和第二原始對象20B之間。即,可以基于要被添加陰影對象50的原始對象20A和從光源視點(diǎn)看位于第一原始對象20A后面的另一個(gè)原始對象20B之間的距離d。bje。t計(jì)算偏移距離d。ffset。優(yōu)選地,可以計(jì)算偏移值,使得第一原始對象20A的陰影對象50定位成盡可能靠近第二對象20B。由此,很可能從觀察者的視點(diǎn)看,陰影對象50與第二原始對象20B重疊, 并因此在場景被渲染到圖像中時(shí),如觀察者40所見那樣模擬第一原始對象20A落在第二原始對象20B上的逼真陰影。如上所述,當(dāng)計(jì)算偏移距離時(shí),還可以使用第一原始對象20A和 /或第二原始對象20B的尺寸,以確保陰影對象50定位在它們之間而不定位在它們中的任何一個(gè)的“內(nèi)部”。根據(jù)本發(fā)明的一個(gè)方面,可以基于偏移距離設(shè)置陰影對象5、50的顏色和/或不透明度。通常,陰影對象的顏色應(yīng)該是暗色的,例如黑色、灰色或暗褐色。然而,通過基于陰影對象5、50的偏移距離調(diào)節(jié)它們的顏色和/或不透明度,可以對位于靠近其相關(guān)聯(lián)的原始對象的陰影對象給定使它比位于距離相關(guān)原始對象較遠(yuǎn)的陰影對象更突出的不透明度和/ 或顏色。這可以例如通過為每個(gè)陰影對象指派與其偏移距離成反比的不透明度值來實(shí)現(xiàn)。 這種特征使場景的陰影化甚至更加逼真。當(dāng)渲染從觀察者視點(diǎn)觀看針對每一原始對象/光源對添加了陰影對象5、50之后的場景1時(shí),所渲染圖像將包含陰影。圖5示出了從只包括原始對象(月牙形狀的對象) 的場景渲染而成的圖像,而圖6示出在根據(jù)本發(fā)明的原則添加了陰影對象5、50之后從相同場景渲染而成的圖像。在本發(fā)明的一個(gè)實(shí)施例中,以從后到前的順序執(zhí)行所有對象的渲染。通過使用任何包括設(shè)置每一個(gè)像素處的阿爾法值的方法,將原始對象2、20渲染到目標(biāo)緩存區(qū)。如計(jì)算機(jī)圖形領(lǐng)域公知的,目標(biāo)緩存區(qū)為像素構(gòu)成的矩形,每個(gè)像素具有顏色(例如,可以通過指定紅色、綠色或藍(lán)色分量來給出顏色)。還可以對每個(gè)像素指派阿爾法值;阿爾法值描述該像素的不透明度。當(dāng)圖像針對每個(gè)像素包括阿爾法值時(shí),可以說其具有阿爾法通道。根據(jù)該實(shí)施例,針對陰影對象5、50的每個(gè)像素,通過將像素合成到相應(yīng)的目標(biāo)緩存區(qū)像素并保持目標(biāo)緩存區(qū)像素的阿爾法值不變,渲染陰影對象5、50。該實(shí)施例的優(yōu)點(diǎn)在于原始對象2、20的阿爾法通道保持不變,因此所得到的圖像緩存區(qū)具有正確的阿爾法通道。這允許所得到的圖像緩存區(qū)合成到背景(例如影像)中。另一個(gè)優(yōu)點(diǎn)在于當(dāng)要將陰影對象像合成到目標(biāo)緩存區(qū)像素上時(shí)目標(biāo)緩存區(qū)像素具有零阿爾法值(對于所有不與原始對象的像素對應(yīng)的目標(biāo)緩存區(qū)像素或者不與從觀察者視點(diǎn)看來位于陰影對象后面的背景的像素對應(yīng)的目標(biāo)緩存區(qū)像素而言是這種情況)的目標(biāo)緩存區(qū)像素在陰影對象像素已合成到其上之后仍具有零阿爾法值。換句話說,這種渲染對象的方式確保添加到場景中的陰影對象5、50只有在從觀察者的視點(diǎn)看來存在原始對象2、20或在陰影對象5、50后面存在背景的情形下變得可見。 或者,更確切地說,只有從觀察者的視點(diǎn)看來與位于陰影對象后面的原始對象重疊的那部分陰影對象5、50在渲染的圖像中變得可見。在本發(fā)明的另一個(gè)實(shí)施例中,以從后到前的順序執(zhí)行所有對象的渲染。使用任何包括針對每個(gè)像素設(shè)置阿爾法值和深度值的方法,將原始對象2、20渲染到目標(biāo)緩存區(qū)。如計(jì)算機(jī)圖形中公知的,像素的深度值表示從觀察者的視點(diǎn)看的像素的深度。如果坐標(biāo)系統(tǒng)的原點(diǎn)位于觀察者的視點(diǎn)處,且ζ軸沿觀察者的正前方向延伸,則像素的深度值為該像素的ζ坐標(biāo)。包括每個(gè)像素的深度值的圖像被說成具有深度通道,它還可以被稱為深度緩存或ζ緩存。根據(jù)該實(shí)施例,針對陰影對象的每個(gè)像素,通過以下對陰影對象5、50進(jìn)行渲染-將陰影對象像素的阿爾法值乘以強(qiáng)度值,以及-將陰影對象像素合成到相應(yīng)的目標(biāo)緩存區(qū)像素上,同時(shí)保持目標(biāo)緩存區(qū)像素的阿爾法值不變,強(qiáng)度值為陰影對象像素的深度和相應(yīng)的目標(biāo)緩存區(qū)像素的深度之間的距離的函數(shù)。通過將陰影對象像素的阿爾法值乘以取決于該陰影對象像素的深度和相應(yīng)的目標(biāo)緩存區(qū)像素的深度之間的距離的強(qiáng)度值,渲染圖像中的陰影隨著深度淡出,使得靠近觀察者的原始對象將不遮蔽離觀察者較遠(yuǎn)的另一個(gè)原始對象。這將出現(xiàn)如下結(jié)果,在距離增加的情況下強(qiáng)度值降低。下文中,陰影對象像素的深度和相應(yīng)的目標(biāo)緩存區(qū)像素的深度之間的距離被稱為所述像素之間的深度差(DD)距離?,F(xiàn)在參照圖7,一起示出了第三原始對象20C和在圖4中示出的第一原始對象20A 和第二原始對象20B。上述與強(qiáng)度值相乘的效果在于,從觀察者的視點(diǎn)看的陰影對象50的與第二原始對象20B重疊的部分將被強(qiáng)烈地描繪出來,因此在渲染圖像中比從觀察者的視點(diǎn)看的陰影對象50與第三原始對象20C重疊的部分更突出?;旧?,該圖像渲染方法確保了由陰影對象50引起的在渲染圖像中的陰影當(dāng)落在在深度上接近陰影對象的原始對象上時(shí)比落在在深度上遠(yuǎn)離陰影對象的原始對象上時(shí)看起來更“強(qiáng)烈”。這將使得渲染圖像中的陰影化看起來更逼真。優(yōu)選地,如果DD距離超過下文中稱為Max_DD_距離的參數(shù)給定的特定閾值,則強(qiáng)度值設(shè)置為零。Max_DD_距離參數(shù)可以是預(yù)設(shè)參數(shù)、用戶指定參數(shù)或其值由計(jì)算機(jī)自動(dòng)計(jì)算和設(shè)置的參數(shù)。這具有以下效果即使原始對象定位成從觀察者的視點(diǎn)看位于陰影對象的后面,如果陰影對象和原始對象之間的深度距離足夠長,則陰影對象不會(huì)影響渲染圖像中的原始對象的視覺外觀。再次參照圖7中示出的場景,這意味著當(dāng)將場景渲染到圖像中時(shí), 如果陰影對象50的所有像素和第三原始對象20C的所有像素之間的深度距離超過Max_DD_ 距離,則陰影對象50將一點(diǎn)也不影響原始對象20C的視覺外觀。例如,如果DD距離超過Max_DD_距離,則強(qiáng)度值可以被設(shè)置成零,而如果DD距離沒有超過Max_DD_距離,則強(qiáng)度值將被設(shè)置成Max_DD_距離和DD距離之差除以Max_DD_距離。即,強(qiáng)度值可以定義成如下如果DD距離>Max_DD_距離一強(qiáng)度值=0如果DD距離彡Max_DD_距離一強(qiáng)度值=(Max_DD_距離-DD距離)/Max_DD_距離其中DD距離=目標(biāo)緩存區(qū)像素處的深度-陰影對象像素的深度作為陰影對象像素和相應(yīng)的目標(biāo)緩存區(qū)像素之間的DD距離的函數(shù)的陰影對象像素的強(qiáng)度值的上述定義由圖8中的曲線圖A示出。在本發(fā)明的另一個(gè)實(shí)施例中,使用與陰影對象像素和相應(yīng)的目標(biāo)緩存區(qū)像素之間的DD距離相關(guān)的另一個(gè)參數(shù)來執(zhí)行所有對象的渲染,該參數(shù)在下文中稱為1^(1(116_00_距離。Middle_DD_距離參數(shù)可以是預(yù)設(shè)參數(shù)、用戶指定參數(shù)或其值由計(jì)算機(jī)自動(dòng)地計(jì)算和設(shè)置的參數(shù)。根據(jù)該實(shí)施例,當(dāng)DD距離朝向Middle_DD_距離增加時(shí),陰影對象像素的強(qiáng)度值增加,然后當(dāng)DD距離超過Middle_DD_距離并朝向Max_DD_距離增加時(shí),陰影對象像素的強(qiáng)度值降低。通常,強(qiáng)度值在DD距離等于零時(shí)從零開始,并當(dāng)DD距離超過離時(shí)終止于零。作為陰影對象像素和相應(yīng)的目標(biāo)緩存區(qū)像素之間的DD距離的函數(shù)的陰影對象像素的強(qiáng)度值的上述定義由圖8中的曲線圖B示出。該實(shí)施例的優(yōu)點(diǎn)在于當(dāng)產(chǎn)生運(yùn)動(dòng)畫面或影像時(shí),陰影將較少傾向于“popping”。 Popping意思是當(dāng)對象從另一個(gè)對象后面彈出來時(shí)的可見偽像。通過使用從零開始、隨著 DD距離逼近Middle_DD_距離而逐漸地增加的強(qiáng)度值,陰影對象將逐漸地出現(xiàn),而不是突然地出現(xiàn)在原始對象的面前。在其它實(shí)施例中,陰影對象像素的強(qiáng)度值作為該陰影對象像素和相應(yīng)的目標(biāo)緩存區(qū)像素之間的DD距離的函數(shù)根據(jù)平滑的曲線而變化。圖8中的曲線圖C和D示出了 DD距離的平滑的強(qiáng)度函數(shù)的示例。根據(jù)本發(fā)明的一個(gè)方面,計(jì)算機(jī)程序適于使得通過運(yùn)行該程序的計(jì)算機(jī)自動(dòng)地計(jì)算Max_DD_距離和Middle_DD_距離。可以基于陰影對象的尺寸計(jì)算Max_DD_距離,以及可以基于Max_DD_距離計(jì)算Middle_DD_距離。例如,Max_DD_距離可以被設(shè)置成陰影對象的尺寸,而Middle_DD_距離可以被設(shè)置成Max_DD_距離的一半。如果作為DD距離的函數(shù)的強(qiáng)度值在特定非零DD距離處具有最大值(如圖8中的曲線圖B和D所示),這將導(dǎo)致陰影在深度上的感知偏移,S卩,朝向或遠(yuǎn)離渲染圖像的觀察者的感知偏移。偏移是朝向觀察者的深度偏移還是遠(yuǎn)離觀察者的深度偏移,取決于場景中原始對象2、20的深度和光源3、30的深度。因此,當(dāng)通過這樣的函數(shù)確定強(qiáng)度值時(shí),可以以補(bǔ)償渲染圖像中的陰影的感知深度的“誤差”的方式計(jì)算應(yīng)當(dāng)添加陰影對象的3D位置。例如, 可以通過根據(jù)之前所描述的任何原則確定陰影對象的第一位置來計(jì)算陰影對象的位置,然后通過將第一位置加上或減去深度補(bǔ)償值將陰影粒子在深度上朝向觀察者或遠(yuǎn)離觀察者移動(dòng),從而將陰影粒子“移動(dòng)”到最終位置。深度補(bǔ)償值將因此影響陰影對象的ζ坐標(biāo)??梢酝ㄟ^用戶設(shè)置深度補(bǔ)償值,或者可以通過計(jì)算機(jī)自動(dòng)地計(jì)算該深度補(bǔ)償值,例如通過將其簡單的設(shè)置成Middle_DD_距離。在另一個(gè)實(shí)施例中,用戶可以選擇場景1中的光源3、30的子集,子集可以是一個(gè)更多個(gè)光源,且只有子集中的光源用于根據(jù)所述方法生成陰影對象。通過只選擇作為子集的最突出的光源,渲染圖像將幾乎具有好像所有的光源被包括進(jìn)來的最良好質(zhì)量。該實(shí)施例的優(yōu)點(diǎn)在于,它減少了必須添加到場景中的陰影對象的數(shù)量,這使得該方法更加快速,并且顯著地降低了運(yùn)行計(jì)算機(jī)程序的設(shè)備所需的計(jì)算能力。在另一個(gè)實(shí)施例中,在渲染對象之前,具有深度緩存的背景圖像被渲染到目標(biāo)緩存區(qū)。該方法的益處在于背景圖像也將被遮蔽。在另一個(gè)實(shí)施例中,通過使用包括設(shè)置每個(gè)像素的深度值的任何方法在第一階段執(zhí)行原始對象的渲染。例如這可以是圖形卡(GPU)所支持的標(biāo)準(zhǔn)渲染函數(shù)。使用之前所述方法中的其中一種在第二階段對陰影對象進(jìn)行渲染。如果阿爾法通道在目標(biāo)緩存區(qū)中不可用,則所有的像素被假定為完全不透明。然而,這需要深度通道以進(jìn)行工作。因此,該實(shí)施例只應(yīng)用于利用深度通道的所述方法中。該實(shí)施例的益處在于可以使用標(biāo)準(zhǔn)(且通常非??焖俚?GPU函數(shù)來渲染原始對象。還可以在GPU中使用遮蔽器來執(zhí)行陰影對象的第二次渲染。遮蔽器為GPU可以(非常快速)執(zhí)行的一段代碼。在這種情形下,遮蔽器將實(shí)現(xiàn)所述方法中的其中一個(gè)。GPU為專門制造來用于生成計(jì)算機(jī)圖形的芯片或設(shè)備。大部分現(xiàn)代PC具有GPU卡。該實(shí)施例在計(jì)算機(jī)游戲中和其它的實(shí)時(shí)應(yīng)用中是特別有用的。在本發(fā)明的其它實(shí)施例中,當(dāng)對象為復(fù)雜3D模型時(shí),例如它是車的3D模型,或人或動(dòng)物的細(xì)節(jié)模型時(shí),在生成陰影對象之前,對象可以被分成子對象??梢赃M(jìn)行對象的劃分,使得當(dāng)生成陰影對象時(shí),對象的每個(gè)主要部分例如手臂成為單獨(dú)的對象。該實(shí)施例的益處在于如果例如人靜止地站在場景中,但是移動(dòng)其手臂,與該手臂相關(guān)的陰影對象也將會(huì)移動(dòng),因此增加了真實(shí)感。在本發(fā)明的另一個(gè)實(shí)施例中,當(dāng)場景中存在非常多的原始對象時(shí),可以在生成陰影對象之前將原始對象進(jìn)行組合。例如,如果一些原始對象在空間中彼此靠近,則可以在生成陰影對象時(shí)將它們視為一個(gè)原始對象。該實(shí)施例的優(yōu)點(diǎn)在于將存在較少的陰影對象,因此與對每一個(gè)原始對象都添加一個(gè)陰影對象(或在原始對象由超過一個(gè)的光源進(jìn)行照明的情況下有多于一個(gè)的陰影對象)的情況相比,其向場景添加陰影對象的過程將變得快速且消耗較少的計(jì)算能力。如之前所述的,根據(jù)本發(fā)明的一個(gè)方面,與特定原始對象和特定光源相關(guān)聯(lián)的陰影對象被添加到從觀察者的視點(diǎn)看位于原始對象的后面,并偏移一定的偏移距離d。ffsrt。無論該初始偏移距離由預(yù)定參數(shù)、用戶指定參數(shù)確定,還是基于各種參數(shù)計(jì)算而來,根據(jù)本發(fā)明的計(jì)算機(jī)程序優(yōu)選地被編程為允許用戶在陰影對象50已被添加到場景中之后調(diào)節(jié)陰影對象50的初始偏移距離。這可以通過例如引入可以由用戶調(diào)節(jié)的滑動(dòng)控件,和/或用戶可以在計(jì)算機(jī)程序的圖形用戶界面(GUI)上輸入期望偏移距離的文本字段實(shí)現(xiàn)。根據(jù)本發(fā)明的一個(gè)方面,用戶可以選擇針對場景中所有的陰影對象調(diào)節(jié)偏移距離,或者針對場景中的陰影對象的(一個(gè)或更多個(gè))子集調(diào)節(jié)偏移距離。后者可以通過允許用戶例如通過使用計(jì)算機(jī)鼠標(biāo)點(diǎn)擊來指示場景中的一個(gè)或若干個(gè)原始對象來實(shí)現(xiàn),然后例如借助于移動(dòng)滑動(dòng)控件針對被指示的原始對象的陰影對象調(diào)節(jié)偏移距離。優(yōu)選地,計(jì)算機(jī)程序包括相似的功能以允許用戶在陰影對象被添加到場景之后調(diào)節(jié)陰影對象的尺寸、不透明度、顏色和/或形狀。另外,程序可以適于允許用戶在陰影對象已被添加到場景之后調(diào)節(jié)上述Max_DD_距離參數(shù)和Middle_DD_距離參數(shù)的值。用戶可以例如通過上述提出的滑動(dòng)控件或輸入文本字段來調(diào)節(jié)尺寸、不透明度、顏色、Max_DD_距離和Middle_DD_距離,然而可以例如通過以下方式來調(diào)節(jié)陰影對象的形狀通過從計(jì)算機(jī)程序的圖形用戶界面(GUI)呈現(xiàn)給用戶的下拉菜單或一組圖標(biāo)中選擇幾種預(yù)定義的形狀例如圓形、正方形、矩形、三角形、橢圓形等的其中一個(gè)。在一些情形中,如果用戶在陰影對象已添加到場景中之后改變陰影對象的尺寸,則理想的是降低陰影對象的不透明度以保持場景中的陰影常數(shù)的“值”。因此,根據(jù)本發(fā)明的一個(gè)實(shí)施例,計(jì)算機(jī)適于響應(yīng)于陰影對象的尺寸的用戶指定變化而自動(dòng)地改變陰影對象的不透明度。根據(jù)本發(fā)明的又一方面,用戶可以在陰影對象已被自動(dòng)地添加到場景之后,自由地調(diào)節(jié)陰影對象的偏移距離和/或3D位置。用戶可以通過指示陰影對象并在場景上將其移動(dòng)到期望位置實(shí)現(xiàn)上述情況,例如通過使用計(jì)算機(jī)鼠標(biāo)將其“拖放”到期望的位置?,F(xiàn)在參照圖9,示出了根據(jù)本發(fā)明的計(jì)算機(jī)程序的示例性圖形用戶界面(GUI)。 GUI包括圖像區(qū)域11,圖像區(qū)域11用于顯示從可以由用戶生成或下載到計(jì)算機(jī)程序中的場景渲染而成的圖像。這里渲染圖像為圖6中所示的圖像。在左手側(cè),⑶I包括多個(gè)用戶控件,所述多個(gè)用戶控件中的一些由附圖標(biāo)記12至14表示。這些控件允許計(jì)算機(jī)程序的用戶調(diào)節(jié)不同的參數(shù),這些參數(shù)影響陰影對象添加到場景中的方式,并因此影響渲染圖像的陰影化。附圖標(biāo)記12表示允許用戶改變上述偏移距離的用戶控件。該控件在GUI中被命名為“調(diào)節(jié)距離”。附圖標(biāo)記13和14分別表示允許用戶改變場景中的陰影對象的尺寸和透明度的用戶控件。用戶可以在各用戶控件的輸入文本字段中輸入數(shù)字值,或者用戶可以點(diǎn)擊各用戶控件的名字前面的小三角形以顯示用于改變參數(shù)值的滑動(dòng)控件。當(dāng)用戶改變參數(shù)值時(shí),計(jì)算機(jī)程序自動(dòng)地重新生成場景中針對所有原始對象/光源對的陰影對象,并將場景重新渲染到新的圖像中,新的圖像在圖像區(qū)域11中顯示給用戶。圖10為示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的、用于將陰影對象添加到場景中的一般方法的流程圖。在步驟Sl中,選擇光源。通過選取被定義成光源的項(xiàng),可以通過計(jì)算機(jī)程序自動(dòng)地選擇光源,或者可以例如通過用戶使用鼠標(biāo)點(diǎn)擊景象的項(xiàng)手動(dòng)地選擇光源。該方法然后進(jìn)行到步驟S2。在步驟S2中,選擇原始對象。類似于步驟Sl中的光源的選擇,可以通過計(jì)算機(jī)程序自動(dòng)地選擇原始對象,或者可以通過用戶手動(dòng)地選擇原始對象。該方法然后進(jìn)行到步驟S3。在步驟S3中,通過計(jì)算機(jī)程序基于選定的原始對象的3D位置和選定的光源的3D 位置計(jì)算陰影對象的3D位置(或者,通過計(jì)算機(jī)基于來自計(jì)算機(jī)程序的指令計(jì)算用于對象的3D位置)。當(dāng)已計(jì)算出3D位置時(shí),將陰影對象添加到場景的該位置處??梢愿鶕?jù)之前所述原則中的任何一個(gè)計(jì)算陰影對象的3D位置。該方法然后進(jìn)行到步驟S4。在步驟S4中,確定是否存在基于當(dāng)前選定的光源應(yīng)當(dāng)被添加陰影對象的多個(gè)原始對象。該步驟也可以自動(dòng)地執(zhí)行或手動(dòng)地執(zhí)行。計(jì)算機(jī)程序可以例如適于遍歷場景中的每個(gè)光源的所有原始對象(或反之亦然)。如果存在基于當(dāng)前選定的光源應(yīng)當(dāng)被添加陰影對象的多個(gè)原始對象,該方法返回到步驟S2。如果不存在,則該方法進(jìn)行到步驟S5。在步驟S5中,確定在場景中是否存在多個(gè)光源。如果存在多個(gè)光源,該方法返回到步驟Si。如果不存在多個(gè)光源,該方法進(jìn)行到步驟S6。在步驟S6中,場景被渲染到從觀察者的視點(diǎn)看的圖像中。可以以任何現(xiàn)有技術(shù)已知的方式執(zhí)行場景的渲染,然而優(yōu)選地是,根據(jù)之前所述的任何一個(gè)原則渲染場景的陰影對象。當(dāng)圖像被渲染后,該方法結(jié)束。應(yīng)當(dāng)理解的是,可以以任何可想到的方式組合文中所描述的本發(fā)明的各種實(shí)施例和方面,除非嚴(yán)格地相互矛盾。
權(quán)利要求
1.一種用于向計(jì)算機(jī)生成的場景(1)中的對象自動(dòng)添加陰影的方法,包括步驟-基于第一原始對象O ;20)的三維(3D)位置和第一光源(3 ;30)的三維位置計(jì)算陰影對象(5 ;50)的第一三維位置;以及-將所述陰影對象(5 ;50)在所述第一三維位置處添加到所述場景(1)。
2.根據(jù)權(quán)利要求1所述的方法,其中,計(jì)算所述第一三維位置,使得從所述光源的視點(diǎn)看所述陰影對象(5 ;50)定位在所述第一對象O ;20)的后面,并與所述第一對象O ;20)隔開一定的偏移距離d。ffset。
3.根據(jù)權(quán)利要求1或2所述的方法,其中,所述陰影對象(5;50)為二維QD)對象。
4.根據(jù)權(quán)利要求3所述的方法,其中,所述陰影對象(5;50)為邊緣模糊化的圓。
5.根據(jù)權(quán)利要求2至4中任一項(xiàng)所述的方法,進(jìn)一步包括如下步驟將所述陰影對象 (5 ;50)的不透明度設(shè)置成一定的不透明度值和/或?qū)⑺鲫幱皩ο?5 ;50)的顏色設(shè)置成一定的顏色值。
6.根據(jù)權(quán)利要求5所述的方法,其中,基于所述偏移距離doffset計(jì)算所述不透明度值和 /或所述顏色值。
7.根據(jù)權(quán)利要求2至6中任一項(xiàng)所述的方法,進(jìn)一步包括將所述陰影對象(5;50)的尺寸設(shè)置成一定的尺寸值的步驟。
8.根據(jù)權(quán)利要求7所述的方法,其中,基于所述第一原始對象O;20)的尺寸計(jì)算所述尺寸值。
9.根據(jù)權(quán)利要求7或8所述的方法,其中,基于所述第一光源(3;30)和所述第一原始對象O ;20)之間的距離計(jì)算所述尺寸值。
10.根據(jù)權(quán)利要求2至9中任一項(xiàng)所述的方法,其中,基于所述第一原始對象O;20)的尺寸計(jì)算所述偏移距離d。ffset。
11.根據(jù)權(quán)利要求2至10中任一項(xiàng)所述的方法,其中,基于從所述光源的視點(diǎn)看定位在所述第一對象O ;20 ;20A)后面的第二對象O0B)的三維位置計(jì)算所述偏移距離d。ffset。
12.根據(jù)權(quán)利要求2至9中任一項(xiàng)所述的方法,其中,所述偏移距離d。ffsrt為預(yù)設(shè)參數(shù)或者為由計(jì)算機(jī)的用戶輸入到所述計(jì)算機(jī)中的用戶指定參數(shù)。
13.根據(jù)前述權(quán)利要求中任一項(xiàng)所述的方法,進(jìn)一步包括如下步驟以從觀察者 40)的視點(diǎn)看從后向前的順序?qū)⑺鰣鼍阿配秩镜綀D像中,所述渲染通過以下方式執(zhí)行 對于所述陰影對象(5;50)的每一個(gè)像素,將所述像素合成到相應(yīng)的目標(biāo)緩存區(qū)像素,并同時(shí)保持所述目標(biāo)緩存區(qū)像素的阿爾法值不變。
14.根據(jù)權(quán)利要求13所述的方法,其中,所述渲染通過以下方式執(zhí)行對于所述陰影對象(5;50)的每一個(gè)像素,將所述陰影對象像素的阿爾法值乘以強(qiáng)度值,并將所述陰影對象像素合成到相應(yīng)的目標(biāo)緩存區(qū)像素,同時(shí)保持所述目標(biāo)緩存區(qū)像素的阿爾法值不變,所述強(qiáng)度值為所述陰影對象像素的深度和所述相應(yīng)的目標(biāo)緩存區(qū)像素的深度之間的距離的函數(shù),其中所述距離在此稱為這些像素之間的深度差DD距離。
15.根據(jù)權(quán)利要求14所述的方法,其中,如果深度差DD距離超過一定的閾值,則所述強(qiáng)度值被設(shè)置成零,所述閾值由在此稱為Max_DD_距離的參數(shù)給定。
16.根據(jù)權(quán)利要求15所述的方法,其中如果深度差DD距離>Max_DD_距離,則所述強(qiáng)度值被設(shè)置成0 ;如果深度差DD距離彡Max_DD_距離,則所述強(qiáng)度值被設(shè)置成(Max_DD_距離-深度差DD距離)/Max_DD_距離.
17.根據(jù)前述權(quán)利中任一項(xiàng)所述的方法,其中,針對所述場景(1)中的每一對象/光源對重復(fù)所有的方法步驟。
18.根據(jù)根據(jù)前述權(quán)利中任一項(xiàng)所述的方法,進(jìn)一步包括步驟-選取用戶生成的參數(shù)作為輸入?yún)?shù),所述用戶生成的參數(shù)表示用戶改變偏移距離 d。ffset的期望,和/或所述陰影對象(5 ;50)已被添加到所述第一三維位置之后的不透明度、 顏色和/或形狀;-基于所述輸入?yún)?shù)計(jì)算新的偏移距離d。ffsrt,和/或所述陰影對象(5;50)的新強(qiáng)度值和/或新顏色值和/或新形狀;以及-基于所述計(jì)算的結(jié)果改動(dòng)和/或改變所述陰影對象(5;50)的屬性。
19.根據(jù)前述權(quán)利要求中任一項(xiàng)所述的方法,其中,所述原始對象為粒子動(dòng)畫系統(tǒng)中的粒子。
20.一種用于如下設(shè)備的計(jì)算機(jī)程序,所述設(shè)備包括處理單元和能夠生成包括至少一個(gè)第一原始對象O ;20)和至少一個(gè)第一光源(3 ;30)的場景(1)的圖形渲染單元,所述計(jì)算機(jī)程序包括計(jì)算機(jī)可讀代碼,所述計(jì)算機(jī)可讀代碼當(dāng)由所述處理單元運(yùn)行時(shí),使得所述設(shè)備執(zhí)行根據(jù)權(quán)利要求1至19中任一項(xiàng)所述的方法。
21.一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)可讀介質(zhì)和存儲(chǔ)在所述計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)可讀代碼,所述計(jì)算機(jī)可讀代碼為根據(jù)權(quán)利要求20所述的計(jì)算機(jī)程序。
22.—種設(shè)備,包括計(jì)算裝置和能夠生成包括至少一個(gè)第一原始對象O ;20)和至少一個(gè)第一光源(3;30)的場景(1)的圖形渲染單元,所述設(shè)備適于-基于所述第一原始對象O ;20)的三維位置和所述第一光源(3 ;30)的三維位置計(jì)算陰影對象(5 ;50)的第一三維位置;以及-將所述陰影對象(5 ;50)在所述第一三維位置處添加到所述場景(1)。
全文摘要
本發(fā)明涉及用于向計(jì)算機(jī)生成的場景(1)中的對象(2;20)自動(dòng)添加陰影的方法、計(jì)算機(jī)程序以及設(shè)備。這通過以下來執(zhí)行基于第一原始對象(2;20)的三維(3D)位置和第一光源(3;30)的3D位置計(jì)算陰影對象5(5;50)的第一3D位置;以及將陰影對象(5;50)在所述第一3D位置處添加到所述場景(1)。
文檔編號G06T15/60GK102396003SQ201080017465
公開日2012年3月28日 申請日期2010年3月22日 優(yōu)先權(quán)日2009年4月17日
發(fā)明者彼得·諾爾比 申請人:設(shè)計(jì)代碼公司