两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

毛發(fā)運動合成器系統(tǒng)和用于毛發(fā)/皮毛流水線的優(yōu)化技術(shù)的制作方法

文檔序號:6455843閱讀:139來源:國知局
專利名稱:毛發(fā)運動合成器系統(tǒng)和用于毛發(fā)/皮毛流水線的優(yōu)化技術(shù)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及皮毛的數(shù)字創(chuàng)建。更具體地,本發(fā)明涉及動物模型上的皮 毛覆蓋層(fUrcoat)的逼真特寫和遠(yuǎn)處外觀的數(shù)字創(chuàng)建。
背景技術(shù)
在計算機(jī)圖形中對可信的哺乳動物進(jìn)行建模、動畫制作(animate)和 呈遞(render)的許多挑戰(zhàn)之一是制作看起來逼真的皮毛。真實的皮毛覆 蓋層由覆蓋皮膚的數(shù)十萬個體的圓柱毛發(fā)構(gòu)成,并且執(zhí)行諸如對抗寒冷和 捕食者的保護(hù)之類的生活機(jī)能。在動物之間或者在個體動物的身體上,這 些毛發(fā)的外觀和結(jié)構(gòu)在長度、厚度、形狀、色彩、定向和底層/表層構(gòu)成方 面十分不同。另外,皮毛不是靜態(tài)的,而是作為下層皮膚和肌肉的運動結(jié) 果以及由于諸如風(fēng)和水之類的外部影響而運動或分裂。
一些用于皮毛創(chuàng)建的現(xiàn)有計算機(jī)圖形技術(shù)已經(jīng)實現(xiàn)了令人信服的光滑 皮毛的外觀;但是,這些技術(shù)并未考慮真實皮毛經(jīng)常在身體的某些區(qū)域 (例如頸部周圍)分裂。另外,現(xiàn)有的方法并未考慮濕皮毛的毛發(fā)簇集在 一起從而引起與干燥皮毛相比顯著不同的樣子的情況。此外,在毛發(fā)因被 噴灑水而變得越來越濕時對毛發(fā)的仿真處理仍未被解決。

發(fā)明內(nèi)容
本發(fā)明的系統(tǒng)和方法提供了用于對諸如動物之類的表面幾何模型上的 逼真皮毛覆蓋層進(jìn)行數(shù)字表示和生成的靈活技術(shù)。在一個實施例中,提供 了一種對表面上的皮毛進(jìn)行布置、調(diào)整和梳理的創(chuàng)新技術(shù)。在一個實施例
中,表面塊(surface patch)邊界上的皮毛的連續(xù)性被維護(hù)。另夕卜,在一個 實施例中,提供了一種用于仿真濕皮毛的創(chuàng)新方法。在該方法中,靜態(tài)簇 集和動畫簇集(animated clumping)可被應(yīng)用于表面上的區(qū)域。在一個實 施例中,提供了一種用于對表面上沿著皮毛軌跡的毛發(fā)進(jìn)行對稱或單側(cè)分 裂的方法。以上處理可被迭代地應(yīng)用,以生成皮毛的各層,例如底層和表 層。


本發(fā)明的目的、特征和優(yōu)點將從以下詳細(xì)描述中變得清楚,其中
圖la和lb是根據(jù)本發(fā)明的教導(dǎo)而運行的系統(tǒng)的實施例的簡化框圖。 圖2是根據(jù)本發(fā)明的教導(dǎo)的皮毛生成處理的一個實施例的流程圖。 圖3a是對定義三維動物模型的皮膚的一組參數(shù)表面的圖示。 圖3b是示出靜態(tài)和動畫梳理處理的一個實施例的簡化流程圖。 圖3c和3d是示出梳理處理的一個實施例的示例。 圖4是示出用于調(diào)整控制毛發(fā)以在表面邊界處去除視覺不連續(xù)性的處 理的一個實施例的流程圖。
圖5是示出用于布置毛發(fā)的處理的一個實施例的流程圖。 圖6示出在表面上所定義的子塊的一個示例。 圖7a示出一根控制毛發(fā)的控制頂點的示例。 圖7b示出用于計算控制毛發(fā)重量的示例。
圖7c示出根據(jù)本發(fā)明一實施例的教導(dǎo)的用于計算最終毛發(fā)的定向的內(nèi) 插處理的示例。
圖7d是計算最終毛發(fā)的定向的一個實施例的簡化流程圖。 圖8是示出用于執(zhí)行靜態(tài)簇集的處理的一個實施例的流程圖。圖9示出不同的簇集百分比和簇集率值的示例。
圖10a示出經(jīng)梳理的皮毛覆蓋層的呈遞幀,且圖10b、 10c和10d示出
動畫的從干到濕的皮毛序列的一個實施例的快照。
圖11是示出用于動畫的區(qū)域簇集的處理的一個實施例的流程圖。
圖12a是示出用于毛發(fā)分裂的處理的一個實施例的流程圖。
圖12b示出毛發(fā)的對稱和單側(cè)分裂的示例。
圖12c、 12d、 12e和12f示出分裂效果的示例。
圖13a、 13b和13c示出底層和表層的視覺效果。
圖14是示出遮擋(shading)處理的一個實施例的流程圖。
圖15是與圖lb的流水線類似但包括另外的不同功能的毛發(fā)/皮毛流水
線的一個實施例的框圖。
圖16a和16b是示出沿著控制毛發(fā)利用可能的變化對控制毛發(fā)進(jìn)行簇
集的圖。
圖17是示出根據(jù)本發(fā)明一實施例的用于實現(xiàn)填充體積功能的處理 1700的流程圖。
圖18a 18c是示出定義表面和相關(guān)體積的辮子形狀的生成(圖 18a)、利用隨機(jī)布置的控制毛發(fā)對這些體積的填充(圖18b)以及從控制 毛發(fā)對最終毛發(fā)股的內(nèi)插(圖18c)的圖。
圖19a 19c是示出具有相同的控制毛發(fā)的變形表面的側(cè)視圖的圖,這 些側(cè)視圖分別示出不同類型的內(nèi)插技術(shù)。
圖20a 20c是示出波浪、編織和風(fēng)效果的圖。
圖21是示出根據(jù)本發(fā)明一實施例的用于實現(xiàn)幾何例示(geometric instancing)的處理的流程圖。
圖22a和22b是示出幾何例示的一個示例的圖。
圖23是示出根據(jù)本發(fā)明一實施例的將靜態(tài)節(jié)點連接到動畫節(jié)點和完 成的控制節(jié)點以提供毛發(fā)運動合成器系統(tǒng)的簡單圖的圖。 圖24是示出利用混合節(jié)點的處理的圖。 圖25a和25b是分別示出旋轉(zhuǎn)混合和位置混合的圖。 圖26是示出混合球的圖。
8圖27示出包括動態(tài)解算器節(jié)點(solvernode)的動態(tài)節(jié)點圖。 圖28a和28b是示出對體積節(jié)點的使用的圖。 圖29是示出超級毛發(fā)節(jié)點處理過程的流程圖。
圖30a和30b是分別示出局部空間和世界空間中的超級毛發(fā)操作的圖。
圖31是示出具有內(nèi)球面和外球面兩者的混合球的圖。 圖32是示出用于在各種仿真緩存之間進(jìn)行混合的級聯(lián)節(jié)點圖的圖。 圖33是示出用于實現(xiàn)依賴于視圖的畫面空間優(yōu)化的技術(shù)的圖。 圖34是示出毛囊根位置和被變換至規(guī)格化設(shè)備坐標(biāo)(NDC)系統(tǒng)的 毛發(fā)的圖。
圖35是示出在NDC空間中代理毛發(fā)從第一幀到第二幀所移動的距離 的圖。
圖36是示出利用畫面空間大小量度在毛發(fā)數(shù)、時間和存儲器方面對
未經(jīng)優(yōu)化的值和經(jīng)優(yōu)化的值的并排比較的表。
圖37是示出利用畫面空間速度方法的另一比較的表。
圖38是示出未經(jīng)優(yōu)化和經(jīng)優(yōu)化的毛發(fā)數(shù)、時間和存儲器值的表。
圖39是示出用于實現(xiàn)毛發(fā)子塊優(yōu)化的處理的流程圖。
圖40是示出對毛發(fā)子塊優(yōu)化的使用的簡化示例的圖。
圖41是示出被建模(其中,利用草和/或樹對毛發(fā)進(jìn)行了幾何例示)
并且利用子塊優(yōu)化技術(shù)的草地風(fēng)景的圖。 圖42是示出緩存狀態(tài)文件的示例的圖。 圖43是示出用于實現(xiàn)毛發(fā)緩存的處理的流程圖。 圖44是示出利用毛發(fā)緩存來呈遞完全覆蓋皮毛的角色所實現(xiàn)的時間
節(jié)省的表。
圖45是示出根據(jù)本發(fā)明一實施例的包括效果模塊的先前描述的毛發(fā)/ 皮毛流水線的一個實施例的框圖,其中該效果模塊還包括允許可重新排序 的多種可例示的效果的效果流水線。
圖46是示出根據(jù)本發(fā)明一實施例的用于實現(xiàn)可重新排序的多種可例 示的效果的處理的流程圖,這多種效果可通過效果模塊來實現(xiàn)。圖47是根據(jù)本發(fā)明一實施例的提供可重新排序的多種可例示的效果 的示例的框圖,這些效果通過毛發(fā)/皮毛流水線的效果模塊的效果流水線而 被應(yīng)用于最終毛發(fā)。
圖48是示出根據(jù)本發(fā)明一實施例的進(jìn)一步包括例示模塊和例示毛發(fā) 數(shù)據(jù)庫的毛發(fā)/皮毛流水線的框圖。
圖49是示出根據(jù)本發(fā)明一實施例的可由例示模塊在標(biāo)準(zhǔn)RAM存儲器 (例如,存儲器內(nèi)的例示)或者例示毛發(fā)數(shù)據(jù)庫中的一者或兩者上實現(xiàn)的 迭代樣式(iteratorpattern)的框圖。
圖50是根據(jù)本發(fā)明一實施例的可存儲在例示毛發(fā)數(shù)據(jù)庫中的信息類 型的示例。
具體實施例方式
方法和裝置提供了用于在諸如計算機(jī)生成的動物上的表面上對皮毛的 數(shù)字生成的創(chuàng)新技術(shù)。圖la是根據(jù)本發(fā)明的教導(dǎo)而運行的一個實施例的簡 化框圖。計算機(jī)系統(tǒng)IO包括中央處理單元(CPU) 15、存儲器25和輸入/ 輸出20,它們可耦合到諸如盤驅(qū)動器或其他設(shè)備之類的存儲設(shè)備。該系統(tǒng) 還可以包括鍵盤40或其他用戶輸入設(shè)備以及顯示器35,顯示器35可用于 顯示用戶界面以及根據(jù)本發(fā)明的教導(dǎo)對皮毛的最終呈遞。
在一個實施例中,存儲器25存儲指令,這些指令在被CPU 15執(zhí)行時 執(zhí)行這里所描述的處理。或者,可以經(jīng)由存儲裝置30或者諸如用戶輸入 40之類的其他輸入端來接收指令。這里所描述的處理可由諸如系統(tǒng)10之 類的系統(tǒng)經(jīng)由軟件來執(zhí)行,或者經(jīng)由硬件或硬件和軟件兩者的組合來執(zhí) 行。
在圖lb中示出一替代實施例。輸入被定義一表面的表面定義模塊50 所接收,以下將會說明,該表面定義待呈遞的對象的表面和控制毛發(fā)。模 塊55調(diào)整控制毛發(fā)以提供諸如梳理和表面邊界上的無縫毛發(fā)之類的功 能。內(nèi)插模塊60利用控制毛發(fā)在表面上進(jìn)行內(nèi)插。毛發(fā)簇集和分裂模塊 65通過提供毛發(fā)的簇集和分裂來增強(qiáng)對象的逼真視覺化。呈遞模塊70呈 遞毛發(fā)并向毛發(fā)提供遮擋、背光和陰影效果,并且模塊75顯示具有毛發(fā)表面的對象的最終輸出。
圖2是根據(jù)本發(fā)明的教導(dǎo)在生成皮毛覆蓋層的過程中所涉及的步驟的 流程圖。在步驟200,定義包含毛發(fā)的表面的幾何形狀。在一個實施例 中,可以使用三維幾何形狀對皮膚(例如,動物皮膚)進(jìn)行建模,隨后在
該皮膚上生成皮毛覆蓋層。如圖3a所示,幾何形狀通常被定義為一組相連 的參數(shù)表面,經(jīng)常稱為表面塊??捎帽绢I(lǐng)域技術(shù)人員已知的許多方式來生 成這些塊。在一個實施例中,使用NURBS表面塊。
返回來參考圖2,在步驟210,控制毛發(fā)被布置到這些表面塊上,從 而每根控制毛發(fā)被建模為由用戶指定數(shù)目的控制頂點所定義的參數(shù)曲線, 例如NURBS曲線。以下將會討論到,由用戶給出毛發(fā)的全局密度值以確 定實際毛發(fā)的數(shù)目以及它們在表面塊上的位置。每根毛發(fā)還具有許多屬 性,例如長度、寬度、波紋度、不透明度,并且缺省地指向其在表面上的 位置處的表面法線方向。
在本實施例中,對控制毛發(fā)執(zhí)行許多操作,并基于控制毛發(fā)和其他信 息來生成最終毛發(fā)。但是,應(yīng)當(dāng)認(rèn)識到,可以對最終毛發(fā)而非控制毛發(fā)來 執(zhí)行諸如這里所描述的梳理等的這些步驟。
可以采用許多不同的方法來生成控制毛發(fā)。 一種簡單的算法在每個 NURBS塊上的u方向上布置將相等間隔的x根毛發(fā)并在v方向上布置y根 毛發(fā)(其中x和y由用戶指定)?;蛘撸没¢L(arc-length)來相等地 布置這x和y根毛發(fā)。這將引起塊上的更均勻分布。但是,其并未實現(xiàn)控 制毛發(fā)不同大小的塊上的均衡分布;x和y根毛發(fā)被布置在所有選中的塊 上,而不管其大小。因此,在一替代實施例中,對控制毛發(fā)的生成考慮了 NURBS塊的面積以確定每個塊的x和y。在一個實施例中,用戶指定每單 位面積z根毛發(fā)。另外在一個實施例中,可以在表面上個體地或者沿著曲 線來布置控制毛發(fā)以進(jìn)行更細(xì)微的控制。例如,可以生成沿著動物耳朵的 清晰邊緣的額外控制毛發(fā),以確保最終生成的皮毛的正確排列。
返回來參考圖2, 一旦生成了控制毛發(fā),則在步驟210,在表面邊界 處調(diào)整控制毛發(fā)。由于控制毛發(fā)被布置在每個表面塊中,因此位于表面塊 的邊界上的控制毛發(fā)可能未與相鄰表面塊上的控制毛發(fā)對準(zhǔn);這可能引起
11沿著表面邊界的毛發(fā)的可視不連續(xù)性。為了解決該潛在問題,表面邊界上 的控制毛發(fā)被調(diào)整。通過圖4的流程圖示出了用于調(diào)整控制毛發(fā)的處理的 一個實施例。
在步驟400,在相鄰塊之間構(gòu)建縫。每條縫標(biāo)識沿著表面塊的相應(yīng)邊 界(例如,整個邊緣、T結(jié)或者拐角)的相鄰表面。在步驟405,針對每 個表面塊,邊界被遍歷,步驟410。在步驟412,每根控制毛發(fā)被檢查。 在步驟415,如果發(fā)現(xiàn)邊界毛發(fā),則在步驟420,由相應(yīng)縫所標(biāo)識的相鄰 塊被檢查以查看相鄰塊上是否存在相應(yīng)毛發(fā)。在一個實施例中,如果毛發(fā) 在離邊界毛發(fā)的小的預(yù)定距離內(nèi),則該毛發(fā)是相應(yīng)的。該距離可用參數(shù) u、 v或者絕對空間來指定。在一個實施例中,預(yù)定距離可以是相對小的距 離以使得毛發(fā)視覺上看起來在同一位置。
如果存在相應(yīng)的控制毛發(fā),則在步驟425,通過將控制毛發(fā)中的一者 或兩者的位置和定向分別修改為公共位置和定向,來將邊界毛發(fā)和相應(yīng)毛 發(fā)對準(zhǔn)。在一個實施例中,相鄰表面塊的相應(yīng)毛發(fā)被對齊到沿著邊界的邊 界毛發(fā)的位置。在一個實施例中,如果相鄰表面塊沒有相應(yīng)毛發(fā),則在步 驟445,在相鄰塊上插入一根毛發(fā)并將其對準(zhǔn)。該處理針對沿著每個表面 塊中的每個邊界的每根邊界毛發(fā)而繼續(xù)步驟430、 435和440,直到所有的 編解碼發(fā)都被對準(zhǔn)為止。
返回來參考圖2,在步驟215之后,在一個實施例中,控制毛發(fā)已被 布置在定義動物或其他對象模型的表面上,并且控制毛發(fā)的指向沿著其在 表面位置上的位置處的表面法線。
在步驟220,毛發(fā)被梳理以獲得希望的、經(jīng)修整的干燥皮毛外觀???以使用許多不同的梳理處理。但是,在本實施例中,靜態(tài)和動畫梳理處理 被應(yīng)用于控制毛發(fā)。靜態(tài)和動畫梳理的組合提供了低計算成本和有效的視 覺效果。在替代實施例中,靜態(tài)或動畫梳理可被單獨使用,并產(chǎn)生有益的 視覺結(jié)果??梢葬槍Σ煌溺R頭(shot)對相同的控制毛發(fā)使用梳理處 理,以例如提供皮毛的經(jīng)修整的外觀和稍微有些凌亂的外觀。
將參考圖3b來描述一個實施例。在一個實施例中,如果毛發(fā)在對象 (例如動物)的動畫制作期間未"主動地"運動,則應(yīng)用靜態(tài)梳理。應(yīng)當(dāng)
12注意,由于每根毛發(fā)是由表面法線、在毛發(fā)根部處的du和dv所定義的局 部坐標(biāo)系中表示的,因此經(jīng)靜態(tài)梳理的毛發(fā)將在下層表面被變形或動畫制 作時"被動地"運動。梳理是通過梳理方向曲線、彎曲程度和毛發(fā)曲率的 規(guī)范來實現(xiàn)的,并且每條梳理方向曲線都具有降落(fell-Off)。
在步驟325,創(chuàng)建一條或多條梳理方向曲線。這些曲線指示出方向適 用的控制毛發(fā)將被梳理。由圖3c和3d示出一個示例。圖3c示出了許多未 經(jīng)梳理的控制毛發(fā)。圖3d示出了示例性的梳理方向曲線365及其方向。 經(jīng)梳理的毛發(fā)也在圖3d中示出。
圖3d示出了一條梳理方向曲線。但是,實現(xiàn)多條不同的曲線也是常 見的,每條曲線對應(yīng)于表面的不同區(qū)域。因此,在步驟330,針對每條曲 線,分配一根或多根控制毛發(fā),以使得所分布的毛發(fā)根據(jù)相應(yīng)的梳理方向 曲線而被梳理。
另外,在步驟335,針對每條曲線,定義彎曲、曲率和沉降(fallout) 參數(shù)。彎曲參數(shù)定義控制毛發(fā)與表面有多接近。曲率參數(shù)指示出毛發(fā)的形 狀。例如,零曲率值可以指示出毛發(fā)是豎直向上的,并且最大值(例如, 1)可以指示出毛發(fā)從根部到末梢在緊繃的弧上彎曲的。
沉降值指示出一區(qū)域,在該區(qū)域之外,控制毛發(fā)離梳理方向曲線越 遠(yuǎn),該曲線就越降低其影響。在一些實施例中,沉降區(qū)域被指定為覆蓋相 對大的面積,以使得所有控制毛發(fā)受到相等影響并且不發(fā)生沉降。在其他 實施例中,希望在控制毛發(fā)和梳理方向曲線之間的距離越遠(yuǎn),就越降低梳 理效果。
在步驟340,根據(jù)每根控制毛發(fā)被分配給的梳理方向曲線以及彎曲、 曲率和沉降參數(shù)對每根控制毛發(fā)進(jìn)行處理。處理結(jié)果在圖3d中示出,其
中在梳理方向曲線365的方向上梳理了毛發(fā)。另外,根據(jù)所定義的彎曲和 曲率參數(shù)對毛發(fā)進(jìn)行彎曲。在本示例中,沉降參數(shù)定義整個表面以使得所 有的毛發(fā)受到相等的影響并且不出現(xiàn)沉降。
如上所述,也可以應(yīng)用動畫梳理(步驟345)。使用本領(lǐng)域中已知的 關(guān)鍵幀制作(key framing)在某些幀處所指定的處理改變之間進(jìn)行內(nèi)插, 以提供改變之間的光滑轉(zhuǎn)變。因此,例如,彎曲、曲率和沉降參數(shù)可被指定為在某些幀處改變。然后在幀期間,關(guān)鍵幀制作處理的執(zhí)行在指定的幀 改變之間轉(zhuǎn)變。該技術(shù)可用于仿真影響毛發(fā)外觀的各種條件,例如風(fēng)。因 此,通過在回放期間的每個幀處對參數(shù)進(jìn)行關(guān)鍵幀制作并執(zhí)行梳理計算, 毛發(fā)可被制成動畫。
梳理處理還可以包括簡單的毛發(fā)/表面沖突模型處理,其中由于梳理處 理而與下層表面相交的毛發(fā)被推回表面之上。例如由于將彎曲參數(shù)設(shè)置為 大的值,毛發(fā)被旋轉(zhuǎn)為與下層表面相交。
該處理包括確定毛發(fā)/表面相交的迭代算法。例如,該處理執(zhí)行定義控
制毛發(fā)的曲線(例如,NURBS曲線)的連續(xù)控制頂點與表面的線段交叉 檢查。如果控制頂點c到了表面之下,則毛發(fā)被朝著來自前一非交叉頂點 的表面法線向回旋轉(zhuǎn),使得c剛好足以離開表面。旋轉(zhuǎn)量足夠大以使得毛
發(fā)旋轉(zhuǎn)回表面之上達(dá)本申請所指定的小量。因此,受梳理影響的向量的頂 點被朝著表面法線旋轉(zhuǎn),以使得向量在表面之上。
在一替代實施例中,通過使控制毛發(fā)的每個控制頂點成為粒子并應(yīng)用 類似于重力或外力的動態(tài)效果,梳理可被制成動畫。諸如從加拿大多倫多
市的Silicon Graphics, Inc.的分部Alias|Wavefront可得的Maya之類的軟件 可用于執(zhí)行該功能。
一旦控制毛發(fā)被標(biāo)識和處理(例如,調(diào)整、梳理),就從控制毛發(fā)生 成每個塊的最終毛發(fā)(圖2的步驟223)。如上所述,在一個實施例中, 首先沿著表面邊界來調(diào)整控制毛發(fā)。在一替代實施例中,可以單獨應(yīng)用梳 理或者可以結(jié)合表面邊界調(diào)整處理的應(yīng)用來應(yīng)用梳理以控制毛發(fā)。
通過圖5的流程圖示出了用于將毛發(fā)布置在塊上的一種示例性處理。 在該實施例中,在兩組步驟中從控制毛發(fā)生成最終毛發(fā)。首先,計算靜態(tài) 毛發(fā)特征,例如最終毛發(fā)的布置(u、 v位置)。該步驟可被執(zhí)行一次。第 二組步驟可被針對動畫中的每個幀來執(zhí)行,并且提供依賴于幀的毛發(fā)特 征。
在步驟505,在將在其上生成毛發(fā)的對象的表面上標(biāo)識子塊。圖6示 出了用于將最終毛發(fā)布置在定義下層皮膚的表面上的一個實施例。在本實 施例中,按照表面的(u, v)參數(shù)值來確定每根最終毛發(fā)的根位置。這些值是從總的(對所有表面是全局的)密度輸入值dmax (每平方單位面積的毛 發(fā)數(shù))和一組規(guī)格化的每個表面塊的局部密度值(從0到1的值范圍;缺
省值可以是1)來計算的,它們被以相等間隔的可變分辨率柵格布置在表
面上(例如,128X128個點)。
在一個實施例中,該處理使毛發(fā)數(shù)獨立于該柵格的分辨率并獨立于表 面塊大小以在不同規(guī)模的表面上提供無縫的密度。為了討論,假定所指定 的輸入密度值(dmax)是10根毛發(fā)/單位平方面積,并且如圖6所示,在 表面上以相等間隔的點來布置局部密度值(例如,分別是0.4、 0.5、 0.6、 0.6根毛發(fā))。這些點定義待處理的表面的子塊(圖5的步驟505)。當(dāng)這 些相等間隔的點被遍歷(步驟510)時,相鄰點之間的(u, v)空間面積可通 過由兩個多邊形(更具體地,三角形(al和a2))定義的面積來近似,并 且每個三角形毛發(fā)單元的每平方單位面積的毛發(fā)數(shù)被從其頂點處的值平均 出(步驟520)。在一個實施例中,這是根據(jù)下式確定的HairUnit (每平 方單位面積的毛發(fā)數(shù))二dmaxXVavg,其中dmax表示指定的輸入密度 值,且Vavg表示從其頂點處的值所確定的每個三角形的平均局部密度 值。對于所定義的示例,這使得分別對于左上和右下的三角形可得10X (0.4 + 0.5 + 0.6)/3 = 5禾Q 10 X (0.4 + 0.6 + 0.6)/3 = 5.333根毛發(fā)/平方單位面 積。
在步驟525,從子塊(al和a2)的實際近似面積和每單位面積的毛發(fā) 數(shù)來確定布置在當(dāng)前子塊上的毛發(fā)總數(shù)。在一個實施例中,每單位面積的 毛發(fā)總數(shù)是根據(jù)下式確定的HairTotal (每單位面積的毛發(fā)總數(shù))=AX HairUnit,其中A表示子塊的實際近似面積。例如,如果值0.4用于面積 al并且0.3用于面積a2 (為了討論而假定的),貝U 0.4X5+0.3X5.333 = 3.5999是布置在由(ui, vi)、 (ui, vi+l)、 (ui+l, v+l)和(ui+l, vi)所定義的子塊 中的毛發(fā)總數(shù)。
在步驟530,布置最終毛發(fā)。由于優(yōu)選的是不布置小數(shù)的毛發(fā),因此 根據(jù)均勻生成的在[O, l]中的隨機(jī)數(shù)是大于或小于小數(shù)部分(0.5999),布 置3或4根毛發(fā)。這3或4根毛發(fā)被隨機(jī)布置在u[ui, ui+l]中并隨機(jī)布置在 v[vi, vi+l]中。該處理然后返回來進(jìn)行步驟510,對由接下來的四個相等間隔的點所定義的子塊進(jìn)行處理。
每根最終毛發(fā)包含多個控制頂點。每根控制毛發(fā)的根位置(第一控制 頂點)是按照下層表面的(U, V)值來指定的。每根毛發(fā)的其余控制頂點是在
原點被指定在毛發(fā)根位置處并且軸在表面法線、du和dv方向上的已知局
部坐標(biāo)系中定義的。在一個實施例中,每根毛發(fā)是沿著表面法線而定向 的,并且控制頂點的坐標(biāo)是通過將每根毛發(fā)的長度細(xì)分成n-l個相等部分
而生成的,其中n是每根毛發(fā)的控制頂點的數(shù)目。在圖7a中示出一個示 例,其中利用n二4在表面730上定義毛發(fā)725。根是頂點720并且其余頂 點是705、 710和715。
一旦根位置被計算出,圍住每根最終毛發(fā)的控制毛發(fā)(在一個實施例 中為三根)就被確定。在一個實施例中,二維的Delaunay三角測量(本領(lǐng) 域已知,因此這里不對其進(jìn)行進(jìn)一步討論)由每個表面塊的控制毛發(fā)的(u, v)位置構(gòu)成。之所以選擇這種三角測量是因為其通過將外接圓最小化并將 三角形的最小角最大化來創(chuàng)建"比例適當(dāng)?shù)?三角形。 一旦Ddaunay三角 測量被構(gòu)建,就確定每根最終毛發(fā)所落入了哪個三角形。形成特定三角形 的三根控制毛發(fā)的索引被分配給落入該三角形的毛發(fā)。
然后計算三根控制毛發(fā)(cl、 c2、 c3)中的每一根在最終毛發(fā)(h)上 所具有的權(quán)重(wl、 w2、 w3)。這可以利用中心坐標(biāo)(本領(lǐng)域已知,因 此這里不對其進(jìn)行進(jìn)一步討論)來完成,并且在圖7b中示出,其中"A" 表示三角形726 (cl、 c2、 c3)的面積。這些權(quán)重用于如下說明地從控制 毛發(fā)來內(nèi)插最終毛發(fā)。
對于動畫中的一個對象而言,每根最終毛發(fā)的上述信息(即,(u, v) 位置、3根圍住的控制毛發(fā)以及每根控制毛發(fā)的權(quán)重)僅可被生成一次。 該信息在這里被稱為靜態(tài)信息。相比之下,對每根最終毛發(fā)的定向的計算 可在動畫的每幀處完成。這種定向是通過參考圖7c和7d所說明的內(nèi)插處 理,從控制毛發(fā)的定向及其相應(yīng)的權(quán)重來確定的。
在步驟756,針對每根最終毛發(fā)(h),相應(yīng)的三根控制毛發(fā)(cl、 c2、 c3)被轉(zhuǎn)換到所利用的表面塊空間(在一個實施例中是塊坐標(biāo)系) 中。在步驟758,計算控制頂點(例如782、 783)之間的控制毛發(fā)向量
16(例如Vll、 Vl2、 Vl3)??梢允褂酶鞣N技術(shù)來計算控制毛發(fā)向量;在一 個實施例中,向量被相等地分布在控制頂點之間??刂泼l(fā)向量然后被規(guī)
格化(例如nvll、 nvl2、 nvl3)。在步驟760,三根控制毛發(fā)的相應(yīng)控制 毛發(fā)向量被內(nèi)插并被乘以針對最終毛發(fā)計算的三個所確定權(quán)重。在一個實 施例中,例如, 一個控制毛發(fā)向量是根據(jù)下式確定的ivl=nvllXwl + nv21Xw2+nv31Xw3;其中ivl表示最終毛發(fā)的經(jīng)內(nèi)插和加權(quán)的控制毛發(fā) 向量表示,nvll、 nv21和nv31表示規(guī)格化的控制向量,并且wl、 w2和 w3表示用于規(guī)格化的控制向量的相應(yīng)權(quán)重。在步驟762,得到的向量的大 小被調(diào)整為最終毛發(fā)長度(sivl、 siv2、 siv3)。 一旦經(jīng)大小調(diào)整向量被確 定,就在步驟764,從經(jīng)大小調(diào)整的向量來計算最終毛發(fā)的控制頂點 (786、 788、 790、 792)。
如圖2所示,步驟225、 230、 235和245是可選的,并且對于產(chǎn)生經(jīng) 修整的干燥皮毛覆蓋層而言不是必要的。步驟225和230被應(yīng)用于濕皮毛 的生成。當(dāng)皮毛由于水的表面張力或凝聚而變濕時,可能發(fā)生毛發(fā)的簇 集。效果是相鄰毛發(fā)(一束毛發(fā))的末梢趨于朝同一點下沉,從而創(chuàng)建了 一種錐形的"超級毛發(fā)"或者圓形簇。以下將會描述,步驟225是針對在 固定的預(yù)定區(qū)域中生成毛發(fā)簇的靜態(tài)區(qū)域簇集而執(zhí)行的。步驟230是針對 動畫的區(qū)域簇集而執(zhí)行的,即,當(dāng)簇集區(qū)域在模型上移動以例如仿真水或 雨點的噴流擊打皮毛并使其越來越濕。在兩種情況下,提供可被變動的參 數(shù)以實現(xiàn)各種程度的從干到濕的皮毛外觀。步驟235被用來生成干燥的皮 毛簇集或分裂。
根據(jù)特定應(yīng)用,步驟225、 230和235中的所有或一些步驟可被執(zhí) 行。另外,根據(jù)應(yīng)用可對步驟225、 230和235進(jìn)行優(yōu)先級排序,以使得 在較高優(yōu)先級的步驟中所調(diào)整的毛發(fā)在其他步驟中不被調(diào)整?;蛘?,依賴 于特定應(yīng)用,效果可以是累積的或者選擇性累積的。
在步驟225,靜態(tài)區(qū)域簇集被執(zhí)行。參考圖8描述了該處理的一個實 施例。為了討論,每個簇的中心毛發(fā)被稱為簇中心毛發(fā),并且該簇中被吸 引到該簇中心毛發(fā)的所有其他成員毛發(fā)在這里被稱為簇毛發(fā)。
在一個實施例中,存在四個簇集輸入?yún)?shù)簇密度、簇大小、簇集百分比和簇集率。與毛發(fā)密度參數(shù)類似,簇密度指定每平方面積應(yīng)當(dāng)生成多 少簇。這里所描述的處理將簇密度轉(zhuǎn)換成有簇中心毛發(fā)所定義的簇的實際 數(shù)目、依賴于每個表面塊的大小的簇中心毛發(fā)的數(shù)目。結(jié)果, 一些現(xiàn)有的 毛發(fā)被變成簇中心毛發(fā)。
簇大小定義簇的面積。在一個實施例中,簇大小是在世界空間中定義 的,世界空間是用戶關(guān)于對象的大小而通常參考的空間。在一個實施例 中,簇密度的優(yōu)先級高于簇大小,使得如果存在許多簇并且多數(shù)簇重疊, 則簇大小無法被維護(hù),這是因為簇毛發(fā)可能僅是一個簇的成員。如果簇密 度和大小都小,則簇之間的許多毛發(fā)將不被簇集。
參考圖8,為了確定每根最終毛發(fā)的簇成員關(guān)系(即,每根毛發(fā)屬于 什么簇(若有的話)),在每根簇中心毛發(fā)的位置處,具有指定簇大小的 簇被轉(zhuǎn)換成參數(shù)表面空間的U半徑和V半徑分量(步驟800)。在步驟
805、 810,每根毛發(fā)被評估以判斷其是否落在相應(yīng)的簇中心毛發(fā)的u、 v 半徑分量內(nèi)。如果毛發(fā)不在u、 v半徑分量內(nèi),則毛發(fā)不是簇毛發(fā)(步驟 815),并且處理繼續(xù)到下一毛發(fā)(步驟830)。如果毛發(fā)在u、 v半徑分 量內(nèi),則在步驟820,利用該毛發(fā)來參考簇中心毛發(fā)的索引。另外,簇集 率和簇集百分比被分配(步驟825)。
考慮許多變化??梢砸氪卮笮≡肼晠?shù)以在簇大小中產(chǎn)生隨機(jī)變 化。用于簇大小的特征(紋理)圖可由用戶創(chuàng)建和指定,每個表面塊一 個,以提供對在步驟805、 810所使用的半徑的局部控制。在該實施例 中,針對表面上的(u, v)處的特定簇(簇中心毛發(fā)),全局簇大小輸入?yún)?shù) 與用于該表面的簇大小特征圖中相應(yīng)的規(guī)格化(s, t)值相乘。此外,可以提 供靜態(tài)簇區(qū)域特征圖以將簇集限制到表面塊的指定區(qū)域,而非整個模型。
在一個實施例中,簇集百分比和簇集率值被分配給每根簇毛發(fā)(步驟 825)。在一個實施例中,兩者的值在[O, l]范圍之間,并且隨后用于對簇 毛發(fā)重定向(步驟835),這將在以下描述。
簇集百分比指定每根簇毛發(fā)的簇集程度。例如,值0表示毛發(fā)根本未 被簇集,即,像是"干燥"毛發(fā)。值1表示毛發(fā)被完全吸引到其簇中心毛 發(fā),即,毛發(fā)的末梢(其遠(yuǎn)端控制頂點)與簇中心毛發(fā)的末梢在同一位
18置。
簇集率定義簇毛發(fā)與其相應(yīng)的簇中心毛發(fā)簇集得有多緊湊。例如,值 0表示簇毛發(fā)從根部到末梢被逐漸線性地吸引到其簇中心毛發(fā)。更接近1 的簇集率值表示更接近根部的毛發(fā)控制頂點比更接近末梢的毛發(fā)控制頂點 相比被成比例地更多地吸引到相應(yīng)的簇中心毛發(fā)頂點,這產(chǎn)生更緊湊的 簇。在圖9中給出簇集百分比和簇集率的不同值的示例。
在步驟835,每根簇毛發(fā)的控制頂點(除根部頂點之外)被從在步驟 200、 210、 215、 220和223所確定的簇毛發(fā)的干燥的經(jīng)梳理的位置朝著相 應(yīng)的簇中心毛發(fā)頂點重定向。
在一個實施例中,該處理是在每幀處執(zhí)行的。在一個實施例中,控制 頂點(CV)的數(shù)目的缺省值是3 (4減去根部頂點),并且當(dāng)前控制頂點 的索引i的范圍在1 3。在一個實施例中,如下確定重定向
clumpHairCV[i] = clumpHairCV[i] + delta X (clumpCenterHairCV[i] — clumpHairCV[i]) , delta=clumpPercent X (fract+clumpRate X (1 — fract)); 其 中 fract 二 i/numberOfCVs ; clumpHairCV[i]表示簇毛發(fā)頂點; clumpCenterHairCV[i]表示相應(yīng)的簇中心毛發(fā)頂點;i表示對當(dāng)前控制定點 的索引;numberOfCVs表示簇毛發(fā)的控制頂點的數(shù)目;clumpPercent表示 簇集百分比;以及clumpRate表示簇集率。
可以通過與以上關(guān)于簇大小而描述的特征圖類似的特征圖來局部地控 制簇集百分比和簇集率參數(shù)兩者。這兩個值也可以隨著時間而被變動或改 變以提供對從干到濕再到干的皮毛外觀的連續(xù)控制。這由圖10a、 10b、 10c和10d示出,這些圖示出了從來自變動的簇集百分比和簇集率序列的 四幀。在圖10a的圖中,簇集百分比和簇集率都為零并且可以表示干燥的 經(jīng)梳理的毛發(fā)。在圖10b的圖中,簇集百分比為0.7且簇集率為0,這產(chǎn) 生稍微有些濕的外觀。在圖10c的圖中,簇集百分比為1.0且簇集率為 0.3,這產(chǎn)生濕的外觀。在圖10d的圖中,簇集百分比和簇集率都為1.0, 這產(chǎn)生非常濕的外觀。
希望存在動畫的區(qū)域簇集以仿真水或雨點的噴流擊打皮毛并使其越來 越濕。在圖2的步驟230,執(zhí)行動畫的簇集。在一個實施例中,在動畫系統(tǒng)中定義動畫的簇集區(qū)域。
參考圖11描述該處理的一個實施例。在一個實施例中,由擊打表面 塊的粒子來定義簇集區(qū)域。其他實施例可以使用用于生成動畫的簇集區(qū)域 的替代技術(shù)。在步驟1100,對所有的毛發(fā)執(zhí)行全局靜態(tài)區(qū)域簇集處理。該 步驟標(biāo)識出簇集區(qū)域和相應(yīng)的簇中心毛發(fā)和簇毛發(fā)。如以下所說明的,在 動畫的簇集處理中使用該信息。在一個實施例中,所使用的全局靜態(tài)區(qū)域 簇集是以上針對靜態(tài)區(qū)域簇集所描述的全局靜態(tài)區(qū)域簇集。
在步驟1102,定義生成粒子的一個或多個發(fā)射器。利用發(fā)射器來生成 粒子是本領(lǐng)域已知的,這里不進(jìn)行詳細(xì)討論。在一個實施例中,發(fā)射器粒 子的生成速率和在表面上的擴(kuò)散速率。
在步驟1105,在每幀處,針對擊打表面的所生成的每個粒子,粒子所 擊打的表面塊被標(biāo)識出(步驟1110)。在一個實施例中,在先前幀中生成 的粒子被運載經(jīng)過隨后的幀,以使得粒子是累積的。
針對擊打表面塊的每個粒子(包括在先前幀中生成的那些離子),在 (u, v)位置處的塊上創(chuàng)建圓形的動畫的簇集區(qū)域(步驟1115),該(u, v)位 置的簇集百分比、簇集率和動畫的簇集區(qū)域半徑是由在粒子擊打表面的幀 處執(zhí)行的創(chuàng)建表達(dá)式所確定的,以使得當(dāng)粒子在此時(即,在該幀處)擊 打表面時,簇集百分比可被設(shè)置為零并且半徑可被定義為或許可由隨機(jī)噪 聲值來調(diào)整的指定值。因此,可以定義該表達(dá)式來提供所希望的"潮濕" 效果。
以上討論的簇大小類似,所定義的圓形簇集區(qū)域的半徑被轉(zhuǎn)換為相應(yīng) 的u半徑和v半徑。在每幀處所執(zhí)行的運行時間表達(dá)式定義簇集百分比和 簇集率,從而確定皮毛多快地"變"濕和"變"得多濕。例如, 一個運行 時間表達(dá)式可以是MIN(FrameNumberXO.l, 1),以使得隨著幀號的增 大,毛發(fā)變得越來越濕。
簇的每根簇中心毛發(fā)(在步驟1100確定)然后被評估以判斷其是否 落在動畫的簇集區(qū)域內(nèi)(步驟1120)。為了判斷簇是否落在動畫的簇集區(qū) 域內(nèi),在每幀處,檢查簇的簇中心毛發(fā)和動畫的簇集區(qū)域的中心之間的(u, v)距離是否在動畫的簇集區(qū)域的(u, v)半徑參數(shù)內(nèi)。針對位于重疊的動畫簇
20集區(qū)域中的簇,增加了簇集百分比和簇集率的值,從而產(chǎn)生更濕的皮毛。
如果簇中心毛發(fā)在動畫的簇集區(qū)域內(nèi)(步驟1125),則相應(yīng)的簇被標(biāo) 上變動的簇集標(biāo)記,以使得簇毛發(fā)隨后被重定向來反映動畫的簇集效果。 或者,簇的每根簇毛發(fā)可以具有一變動的簇集標(biāo)記,該簇集標(biāo)記在相應(yīng)的 簇中心毛發(fā)被確定為在動畫的簇集區(qū)域內(nèi)的情況下被設(shè)置。另外,變動的 簇集率值和變動的簇集百分比值根據(jù)運行時間表達(dá)式而被分配給被標(biāo)識出 在動畫的簇集區(qū)域內(nèi)的簇毛發(fā)。在一個實施例中,動畫的簇集區(qū)域內(nèi)的每 個簇的簇集百分比和簇集率的值在每幀處被替換為動畫的簇集區(qū)域的相應(yīng) 值。因為動畫的簇集區(qū)域可以遠(yuǎn)大于簇,所以動畫的簇集區(qū)域可以包含若
干個體簇。針對每個粒子(步驟1145),每個簇被評估(步驟1140)。
應(yīng)當(dāng)注意,動畫的簇集區(qū)域可以騎跨表面塊邊界。例如,動畫的簇集 區(qū)域的中心可以位于一個表面塊上,但該區(qū)域可以位于一個或多個其他塊 上。由于動畫的簇集區(qū)域通常被定義并因此與包含動畫的簇集區(qū)域的中心 (即,粒子擊打的位置)的表面相關(guān)聯(lián),因此騎跨相鄰塊的簇集區(qū)域的一 些部分可被忽視(overlook)。這可能導(dǎo)致最終毛發(fā)的簇集的不連續(xù)性。
在一個實施例中,解決了該潛在問題。每當(dāng)新的粒子擊打表面并且(u, v)半徑超過該表面的邊界時,針對影響相鄰塊的動畫的簇集區(qū)域,生成另 外的(u,v)中心和(u,v)半徑。因此,例如,如果簇集區(qū)域覆蓋兩個相鄰塊的 一些部分,則為每個相鄰塊生成相應(yīng)的(u, v)中心和半徑,以提供另外的動 畫簇集區(qū)域用于步驟1120 1140的評估。
在步驟1150,針對每幀,在動畫的簇集區(qū)域內(nèi)的簇的簇毛發(fā)被重定 向。因此,如果簇毛發(fā)在動畫的簇集區(qū)域內(nèi),則簇毛發(fā)被選擇性地調(diào)整。 在一個實施例中,簇集被限制為每幀處的動畫簇集區(qū)域,以使得在動畫簇 集區(qū)域之外的簇的最終毛發(fā)通常被制作為"干燥"毛發(fā)。
在步驟1155,如果更多幀將被處理,則處理在步驟1105再次繼續(xù)。 因此,在多幀上執(zhí)行動畫的簇集處理以提供動畫效果。
返回來參考圖2,步驟235可被應(yīng)用,以通過在下層皮膚(表面)上 沿著某些線(皮毛軌跡或者分裂線)來分裂經(jīng)修整的皮毛覆蓋層來生成毛 發(fā)分裂或者干燥毛發(fā)聚集的效果。如下所述,該處理可以包括兩種毛發(fā)分裂對稱的和單側(cè)的。在對稱分裂中,皮毛軌跡的兩側(cè)上的毛發(fā)朝著該軌 跡分裂,而在單側(cè)分裂中,軌跡一側(cè)上的毛發(fā)從軌跡向外分裂。
在一個實施例中,在動畫系統(tǒng)中將皮毛軌跡指定為表面上的曲線。每 條軌跡具有半徑、針對對稱和單側(cè)分裂的分裂百分比和分裂率以及針對單 側(cè)分裂的另外的分裂向量。所生成的最終信息被輸出到分裂文件中,隨后 分裂文件被訪問以重定向受影響的毛發(fā)。
由圖12a示出了毛發(fā)分裂技術(shù)的一個實施例。在步驟1200,定義皮毛 軌跡??梢耘c簇類似地通過定義(U, V)分裂半徑來定義皮毛軌跡。在步驟
1205,計算分裂線毛發(fā)(位于由針對皮毛軌跡所定義的曲線來定義的皮毛
軌跡曲線上或者與其非常接近的毛發(fā))。利用分裂線毛發(fā)和分裂半徑,在
步驟1215、 1220,每根毛發(fā)都被評估以判斷毛發(fā)在對稱分裂的情況下是否 位于分裂線的兩側(cè)上的(ii, v)分裂半徑內(nèi),或者在單側(cè)分裂的情況下是否位 于由分裂向量所指定的一側(cè)(分裂向量側(cè))。針對由半徑所指定的空間內(nèi) 的每根毛發(fā)(這里稱為分裂毛發(fā)),相應(yīng)的分裂線毛發(fā)(皮毛軌跡上的毛 發(fā))然后被確定為與其最接近的毛發(fā)。毛發(fā)被標(biāo)注為分裂線毛發(fā)、具有對 其相應(yīng)分裂線毛發(fā)的索引的分裂毛發(fā)或者不位于分裂所指定的區(qū)域內(nèi)的正 常毛發(fā)。
應(yīng)當(dāng)注意,對于單側(cè)分裂的實例,現(xiàn)在每根分裂毛發(fā)在分裂向量的方 向上被"離開"其相應(yīng)的分裂線毛發(fā)而重定向,而非"朝著"分裂線毛 發(fā)。在圖12b中示出對稱和單側(cè)分裂的示例。
分裂毛發(fā)被相對于其相應(yīng)的分裂線毛發(fā)而重定向(步驟237)。對于 對稱分裂,該處理與早先討論的針對簇毛發(fā)所執(zhí)行的處理類似。但是,對 于分裂毛發(fā),使用分裂百分比和分裂率來代替用于簇毛發(fā)的簇集百分比和 簇集率。對于單側(cè)分裂,與被吸引到分裂線毛發(fā)相反,根據(jù)分裂百分比和 分裂率參數(shù)來避開(repd)分裂毛發(fā)。
由圖12c、 12d、 12e和12f示出分裂效果。圖12c示出具有分裂線毛 發(fā)1252和1254的對象1250。圖12d示出對稱分裂在對象上產(chǎn)生的效果。 圖12e和12f示出沿著分裂線毛發(fā)1256 1270的單側(cè)分裂。
在圖2的步驟245,對是否將對處理執(zhí)行多次作出決定。多數(shù)有皮毛
22的動物的覆蓋層由毛發(fā)的較細(xì)、較薄和較短層(稱為底層)加上較長和較 厚毛發(fā)的表層構(gòu)成。步驟245示出執(zhí)行兩次(或多次)處理的能力,從而
步驟210、 215、 220和223 (并且可選地,225、 230和235)被執(zhí)行多于 一次,每次產(chǎn)生一組不同的毛發(fā)。這些組或?qū)尤缓笤诔蔬f時被處理和組合 (步驟250)。通過參考圖13a、 13b和13c可以看到效果。圖13a是根據(jù) 本發(fā)明的教導(dǎo)而生成的底層的表示。圖13b代表對表層的表示,且圖13c 代表由底層和表層的構(gòu)成的組合圖像。
如步驟250所示,由其控制頂點所代表的簇集毛發(fā)被呈遞為一系列的 二維圖像以創(chuàng)建逼真的干和濕毛發(fā)外觀。在一個實施例中,該處理用于從 特定觀察點的角度將三維毛發(fā)幾何形狀投射到二維圖像平面上。
為了快速且高效地呈遞大量毛發(fā),每根毛發(fā)的幾何模型可被保持為簡 單的。如上所述,毛發(fā)由具有預(yù)定數(shù)目的控制頂點(在一個實施例中,缺 省為四個)的參數(shù)曲線來表示。
在一個實施例中,處理采用已知的呈遞技術(shù)來制作由相應(yīng)控制頂點所 描述的毛發(fā)。在一替代實施例中,增加定制的模塊來逼真地"遮擋"毛 發(fā)。這可以通過在毛發(fā)上或者沿著毛發(fā)的每個點處分配色彩強(qiáng)度來實現(xiàn), 其中沿著毛發(fā)的點可被定義為構(gòu)成毛發(fā)的像素。
在呈遞毛發(fā)期間,為每根毛發(fā)添加寬度以將其變換成窄條帶,該窄條 帶的定向總是朝著相機(jī)或者觀察點。遮擋處理適當(dāng)?shù)卣趽踹@些條帶基元以 更逼真地將其呈現(xiàn)為細(xì)毛發(fā)。
在圖14的流程圖中給出遮擋處理的一個實施例。在步驟1400,每根 毛發(fā)被處理。在步驟1405,針對每根毛發(fā),在毛發(fā)基底處的表面法線被與 毛發(fā)上的當(dāng)前點處的法線向量混合,以獲得毛發(fā)上的當(dāng)前點處的遮擋法 線。在一個實施例中,毛發(fā)被呈遞為顯示器上一系列的點或像素。因此, 當(dāng)前點是表現(xiàn)毛發(fā)的像素之一。
在沿著毛發(fā)的多個點處可以應(yīng)用遮擋處理。在一個實施例中,這些向 量中的每一個向量對混合所貢獻(xiàn)的量是基于毛發(fā)上的當(dāng)前點處的正切向量 與毛發(fā)基底處的表面法線向量之間的角度的。該角度越小,表面發(fā)現(xiàn)對遮 擋法線的貢獻(xiàn)就越多。在步驟1410,利用毛發(fā)上的當(dāng)前點處的遮擋法線來確定該點處的毛發(fā)
強(qiáng)度。在一個實施例中,使用Lambertian模型來計算這些強(qiáng)度。使用該方 法提供了以下好處允許用戶在皮毛被添加時照亮下層皮膚表面并接收可 預(yù)測的結(jié)果。該方法考慮了個體毛發(fā)之間的遮擋差異和沿著每根毛發(fā)長度 的遮擋的差異。
為了在皮毛覆蓋層上獲得逼真的陰影,使用陰影圖。對陰影圖的使用 在本領(lǐng)域中是已知的,這里不進(jìn)行進(jìn)一步討論。但是,將毛發(fā)加入到陰影 圖中可能產(chǎn)生若干不合需要的副作用。 一個問題是由于皮毛自身陰影而引 起被照亮的皮毛上的暗拖影。暗拖影在被照亮的皮毛上看起來是錯誤的, 因為正常情況下,光從皮膚和毛發(fā)反射以防止被照亮的皮毛上的黑暗陰 影。
為了將暗拖影效果最小化,在一個實施例中,基于某些標(biāo)準(zhǔn)來縮短用 于陰影圖的毛發(fā)(步驟1415)。例如,毛發(fā)的長度和密度可以指示出縮短 毛發(fā)的百分比。通過選擇性地縮短用于陰影圖的毛發(fā),毛發(fā)自身陰影效果 被最小化,同時仍然在明暗界線上產(chǎn)生分裂的陰影以使得光能夠落在皮毛 上。
以類似的方式實現(xiàn)背光對位于有皮毛對象后方的每個燈使用陰影
圖,并在陰影圖程度處理中基于密度和長度再次縮短毛發(fā)。在一個實施例 中,用于毛發(fā)的照明模型還允許每個燈控制其漫反射離開角度。因此,在 有皮毛的對象的直接后方的燈可以圍繞對象。利用這些照明控制以及陰影 圖,實現(xiàn)了合理的背光效果。
在一個實施例中,對簇集毛發(fā)的遮擋被修改。在一個實施例中,毛發(fā) 遮擋的兩個方面可被修改。首先,增大皮毛上的光譜量。其次,在遮擋模 型中考慮簇集。在幾何上,如早先所說明的,以簇方式對皮毛進(jìn)行建模以 仿真當(dāng)皮毛變濕時所時間發(fā)生的情況。在該遮擋模型中,針對每根毛發(fā)并 針對每個燈,確定毛發(fā)所位于的簇的一側(cè)相對于燈的位置,并且基于毛發(fā) 所位于的一側(cè)來使毛發(fā)變暗或變亮。因此,在與燈相面對的簇的一側(cè)上的 毛發(fā)比背向燈的簇上的毛發(fā)更亮。
其他實施例
24本發(fā)明的其他實施例涉及添加到圖lb的動物皮毛和人類毛發(fā)流水線
的其他特征。具體而言,這些添加到流水線的其他特征涉及為數(shù)字角色產(chǎn) 生各種式樣化的圖像逼真的皮毛和毛發(fā)外觀。
現(xiàn)在參考圖15,圖15是與先前描述的圖lb的流水線類似但包括另外
的不同功能的毛發(fā)/皮毛流水線1500的框圖。
與之前相同,由表面定義模塊1550來接收輸入。如前所述,表面定 義模塊1550定義待呈遞的對象的表面和控制毛發(fā)。此外,如前所述,控 制毛發(fā)調(diào)整模塊1555調(diào)整控制毛發(fā)以提供諸如梳理和表面邊界上的無縫 毛發(fā)之類的功能。
除了先前描述的圖lb的流水線之外,向毛發(fā)/皮毛流水線1500增加了 毛發(fā)運動合成器模塊1557,以提供對不同毛發(fā)動畫的編輯和組合,這將在 下文中詳細(xì)描述。如前所述,內(nèi)插模塊1560可用于利用控制毛發(fā)在表面 上進(jìn)行內(nèi)插。
另外,效果模塊1565可被用作毛發(fā)/皮毛流水線1500的一部分,以向 毛發(fā)和皮毛提供諸如簇集、分裂、波浪效果、編織效果等的各種效果,這 將在下文中更詳細(xì)地描述。此外,毛發(fā)/皮毛流水線1500可以利用優(yōu)化模 塊1567,以提供用于改善呈遞時間的方法,這將在下文中更詳細(xì)地描述。
在毛發(fā)/皮毛流水線1500中可以利用遮擋、背光和陰影模塊1570以向 毛發(fā)/皮毛提供遮擋、背光和陰影效果,并且可以利用顯示模塊1575以呈 遞和顯示具有毛發(fā)/皮毛表面的對象的最終輸出,如前所述。
此外,如先前參考圖la所描述的,應(yīng)當(dāng)認(rèn)識到毛發(fā)/皮毛流水線1500 可用計算機(jī)將系統(tǒng)實現(xiàn),該計算機(jī)系統(tǒng)具有中央處理單元(CPU)、存儲 器、輸入/輸出(I/O)等,它們可耦合到諸如盤驅(qū)動器或其他設(shè)備之類的 存儲設(shè)備。此外,該計算機(jī)系統(tǒng)可以包括鍵盤或其他用戶輸入設(shè)備以及顯 示器,該顯示器可用于顯示用戶界面以及根據(jù)本發(fā)明的實施例對毛發(fā)/皮毛 的呈遞。
具體而言,本發(fā)明的實施例涉及由先前描述的圖15的流水線1500所 實現(xiàn)的技術(shù),其涉及諸如以下各項專用的梳理工具、不同的最終毛發(fā)內(nèi) 插算法以及除了呈遞每根最終毛發(fā)之外還執(zhí)行可定制的每根毛發(fā)計算的通用應(yīng)用程序接口 (API)。其他技術(shù)涉及用于編輯和組合不同的毛發(fā)動 畫的方法和系統(tǒng),這里稱為毛發(fā)運動合成器(HMC),以及用于改善呈遞
時間的毛發(fā)優(yōu)化策略。在一個實施例中,HMC可由毛發(fā)/皮毛流水線1500 的毛發(fā)運動合成器模塊1557實現(xiàn),并且優(yōu)化策略可由毛發(fā)/皮毛流水線 1500的優(yōu)化模塊1567實現(xiàn)。
數(shù)字動物、人和虛構(gòu)的生物在越來越多地加入到電影中,既包括有真 實動作的也包括計算機(jī)制作的。為了使得它們可信,這些角色中的許多角 色需要有說服力的毛發(fā)或皮毛。在質(zhì)量最重要的制作環(huán)境中,用于生成毛 發(fā)的流水線不僅必須工作,而且需要是實用、耐用、靈活、高效和強(qiáng)大 的。
這里描述的是如下的工具和技術(shù)這些工具和技術(shù)輔助創(chuàng)建特定毛發(fā)
和皮毛外觀以滿足總監(jiān)可能為特定演出和其角色選擇的樣子和表情。描述 了解決方案,這些解決方案使得可以生成令人信服的動物皮毛,制作可信 的人類毛發(fā),并精密地匹配真實演員的毛發(fā)。
這里描述的是對圖lb的毛發(fā)/皮毛呈遞流水線的改進(jìn),這解決并改善
了數(shù)字毛發(fā)創(chuàng)建處理中最復(fù)雜和耗時的領(lǐng)域中的三項外觀顯影(梳 理),毛發(fā)動畫和鏡頭,以及呈遞大量的毛發(fā)。
應(yīng)當(dāng)注意,當(dāng)在幾何上對毛發(fā)建模時,出現(xiàn)與人類毛發(fā)有關(guān)的問題, 這些問題稍微不同于動物皮毛的那些問題。具體而言,更長的人類毛發(fā)需 要復(fù)雜得多的梳理和動畫工具。對于動物皮毛而言,呈遞階段需要被優(yōu)
化,因為與人類的大約IOO,OOO到150,000相比,存在數(shù)百萬的個體毛發(fā) 股。
這里將會描述,由毛發(fā)/皮毛流水線1500所采用的技術(shù)涉及制作各種 發(fā)型,從短的動物皮毛到長的人類毛發(fā)。具體而言,毛發(fā)/皮毛流水線 1500包括諸如以下的特征用于對毛發(fā)進(jìn)行建模、動畫制作和呈遞的工 具;允許任意的少量控制毛發(fā)來定義基本梳理和動畫特征;以及用于從這 些控制毛發(fā)來內(nèi)插最終的經(jīng)呈遞的毛發(fā)股的技術(shù)。
應(yīng)當(dāng)注意,傳統(tǒng)的3D動畫軟件(例如從AUTODESK可得的 MAYA)可用于提供傳統(tǒng)的查看功能。另外,從PIXAR可得的
26RENDERMAN軟件可用于幫助呈遞最終毛發(fā)。這些軟件包是計算機(jī)圖形 領(lǐng)域公知的。
在下文中描述由毛發(fā)/皮毛流水線實現(xiàn)的其他梳理和控制毛發(fā)編輯工 具。例如,在一個實施例中,附接到控制毛發(fā)的基本引導(dǎo)鏈可用在前向或 反向運動模式中,以定義控制毛發(fā)的形狀同時大致維護(hù)其長度。也可以在 世界空間或局部空間中向其他選中的控制毛發(fā)應(yīng)用相同的變形。此外,可 以利用直觀切割工具,其中用戶可以在正視圖中草擬出曲線,該曲線然后 用于計算與選中的控制毛發(fā)的相交,并且在這些點處對它們進(jìn)行切割。
在一個特定實施例中,公開了允許選中的控制毛發(fā)以受控方式被簇集 在一起的梳理工具。
參考圖16a和16b,圖16a和16b是示出沿著控制毛發(fā)利用可能的變 化對控制毛發(fā)進(jìn)行簇集的圖。如圖16a所示,第一組控制毛發(fā)1602和第二 組控制毛發(fā)1604被示出為從生物1606的頭部而在發(fā)現(xiàn)方向上延伸。簇輪 廓窗口 1610包括可由用戶定義的簇輪廓曲線1611,該曲線是由毛發(fā)/皮毛 流水線1500的控制毛發(fā)調(diào)整模塊1555實現(xiàn)的,并且可被應(yīng)用于第一組控 制毛發(fā)1602以使得控制毛發(fā)以變形的控制毛發(fā)1615的方式變形,從而使 得它們接近可由用戶定義的簇輪廓1611,這在圖16b中可看出。
填充體積技術(shù)
在一個實施例中,毛發(fā)/皮毛流水線1500的表面定義模塊1550可用于 生成定義表面和相關(guān)體積的形狀??刂泼l(fā)模塊1555可用于利用控制毛 發(fā)來填充體積,并且內(nèi)插模塊1560可用于從控制毛發(fā)來內(nèi)插最終的毛發(fā) 股。將在以下更詳細(xì)地描述這些技術(shù)。
具體而言,填充體積工具可用于利用隨機(jī)布置的控制毛發(fā)來快速地填 充所圍住的表面。這在生成毛發(fā)以填充"毛發(fā)體積"的過程中可以是有用 的,以描述角色的粗略毛發(fā)外觀,"毛發(fā)體積"例如是定義建模者經(jīng)常提 供的馬尾辮的體積。
參考圖17,圖17是示出用于實現(xiàn)填充體積功能的處理1700的流程 圖。如圖17所示,在框1710,生成定義表面和相關(guān)體積的形狀。例如, 這可以利用毛發(fā)/皮毛流水線1500的表面定義模塊1550來實現(xiàn)。接下來,體積被填充有隨機(jī)布置的控制毛發(fā)(框1720)。例如,這可以利用毛發(fā)/
皮毛流水線1500的控制毛發(fā)調(diào)整模塊1555來實現(xiàn)。最后,從控制毛發(fā)股 來內(nèi)插最終毛發(fā)股(框1730)。例如,這可以利用毛發(fā)/皮毛流水線1500 的內(nèi)插模塊1560來實現(xiàn)。
此外,在圖18a 18c中可以看到對此的示例,其中辮子被建模者簡單 地表示為表面,然后填充有毛發(fā)。具體而言,圖18a 18c示出了定義表面 和相關(guān)體積的辮子形狀的生成(圖18a)、利用隨機(jī)布置的控制毛發(fā)對這 些體積的填充(圖18b)以及從控制毛發(fā)對最終毛發(fā)股的內(nèi)插(圖 18c)。
如圖18a所示,首先,生成三個經(jīng)編織的圓柱1802、 1804和1806, 每個圓柱都定義形狀和相關(guān)體積。接下來,如圖18b所示,利用填充體積 功能來分別生成控制毛發(fā)1810、 1812和1816。最后,在圖18c中可見, 最終的毛發(fā)辮子1820、 1822和1826被從控制毛發(fā)所內(nèi)插并被呈遞。
利用與以下描述的算法類似的內(nèi)插算法,可以從現(xiàn)有的控制毛發(fā)來自 動內(nèi)插另外的控制毛發(fā),并且也可以從現(xiàn)有的毛發(fā)股來自動內(nèi)插最終毛發(fā) 股。另外,新插入的控制毛發(fā)的形狀可在選中的現(xiàn)有控制毛發(fā)之間被混 合。
在一個實施例中,毛發(fā)/皮毛流水線1500可以基于不同的坐標(biāo)方案, 利用不同的算法從控制毛發(fā)來內(nèi)插最終毛發(fā)股以及從現(xiàn)有的控制毛發(fā)來內(nèi) 插其他的控制毛發(fā)(例如,利用內(nèi)插模塊1560)。
可以參考圖19a 19c來看到這種內(nèi)插技術(shù)的一個示例。在圖19a 19c中可見,利用相同的控制毛發(fā)來示出變形的表面1900的側(cè)視圖。通過 利用該內(nèi)插技術(shù),在不同的應(yīng)用中可將控制毛發(fā)的數(shù)目保持為較小。
例如,圖19a示出了在"世界空間"坐標(biāo)框架中從控制毛發(fā)1902來內(nèi) 插最終毛發(fā)股1904的第一內(nèi)插方法,其中最終毛發(fā)股1904不會自動跟隨 表面變形。這對于不應(yīng)當(dāng)跟隨表面(皮膚)變形的長發(fā)型或植物而言是有 用的。
圖19b示出了在"局部空間"坐標(biāo)框架中從控制毛發(fā)1902來內(nèi)插最 終毛發(fā)股1904的第二內(nèi)插方法。在"局部空間"方案中,最終毛發(fā)股
281904自動跟隨表面變形。這對于較短的毛發(fā)或皮毛而言是更自然的。
最后,圖19c示出了從控制毛發(fā)來內(nèi)插最終毛發(fā)股1904的第三內(nèi)插方 法,其中最終毛發(fā)股1904仍然在有所影響的控制毛發(fā)1902的凸起外殼 (convex hull)中。該方案例如對于從彎曲的頭皮的頂部或側(cè)方落下的長 的未簇集的人類毛發(fā)是有用的。應(yīng)當(dāng)注意,在局部和世界空間模式中,所 內(nèi)插的最終毛發(fā)股1904可能顯得長于控制毛發(fā)1902,而在凸起外殼模式 中并非如此。
此外,可以利用毛發(fā)/皮毛流水線1500 (例如,利用效果模塊1565) 來實現(xiàn)最終毛發(fā)股的分級簇集能力。最終毛發(fā)可能屬于由用戶直接布置的 手工簇,或者屬于由過程生成的自動和小型簇。自動簇毛發(fā)可能發(fā)生在手 工簇之內(nèi)或之外,而小型簇毛發(fā)可能僅存在于手工或自動簇中。這些技術(shù) 可被應(yīng)用于濕毛發(fā)外觀并用于定制干毛發(fā)的束的外觀。
毛發(fā)/皮毛流水線1500另一特性在于例如通過毛發(fā)/皮毛流水線1500 的效果模塊1565,可以實現(xiàn)諸如波浪、編織(在毛發(fā)根部周圍旋轉(zhuǎn))、縮 短末梢和風(fēng)之類的許多效果或參數(shù)。在控制毛發(fā)之間的內(nèi)插之后,這些效 果可被直接應(yīng)用于最終毛發(fā)。
這些波浪、編制和風(fēng)效果的示例在圖20a 20c中示出。在圖20a 20c的各種情況中,控制毛發(fā)2002被示出為指向豎直上方。例如,圖20a 未示出最終毛發(fā)2004上的任何效果。圖20b示出某種波浪和編制效果被 應(yīng)用于最終毛發(fā)2004。最后,圖20c示出風(fēng)效果被應(yīng)用于最終毛發(fā)2004。
此外,在簇集之前或之后,效果可被選擇性地應(yīng)用于不同的毛發(fā)"類 型",例如手工簇成員毛發(fā)或者未簇集的毛發(fā)。另外,可以結(jié)合具有可能 不同組的控制毛發(fā)的多個最終毛發(fā)層來使用獨立的毛發(fā)參數(shù)或效果。對于 動物皮毛,底層和表層可被這樣生成,并且復(fù)雜的人類毛發(fā)可被分裂成若 干不同的層,例如基底、分離層和絨毛。
幾何例示
本發(fā)明的另一實施例涉及任意的幾何例示。任意的幾何例示提供一特 征,該特征對毛發(fā)/皮毛流水線1500的能力進(jìn)行杠桿作用以對最終所呈遞 的毛發(fā)基元(如先前所述)的式樣或外觀進(jìn)行實例化、動畫制作和控制。在這點上,可以結(jié)合毛發(fā)呈遞功能來提供通用應(yīng)用程序接口 (API),以 使得應(yīng)用開發(fā)者可以從毛發(fā)系統(tǒng)獲得每個毛囊的信息,并利用其他操作來 替代毛發(fā)的呈遞。
例如,在一個實施例中,毛發(fā)流水線1500可用于基于至少一根毛發(fā)
相對于表面的毛發(fā)位置來生成用戶選中的幾何形狀。表面定義模塊1550 可用于定義表面。顯示模塊1575可用于處理用戶選中的幾何形狀,并
在表面上的毛發(fā)位置處呈遞用戶選中的幾何形狀來代替至少一根毛發(fā)。
具體而言,提供進(jìn)入到毛發(fā)/皮毛流水線1500中的鉤(例如在顯示和 呈遞模塊1575處)以允許用戶略過(override)所呈遞的幾何形狀,而不 是輸出最終所呈遞的基元的毛囊,并且呈遞另一幾何形狀而不是呈遞毛 發(fā)。因此,可以生成具有刺的人頭,而不是利用毛發(fā)來填充例如人頭。或 者可以填充充滿花、草或樹的區(qū)域,而不是充滿毛發(fā)的區(qū)域。
此外,應(yīng)當(dāng)注意,當(dāng)試圖設(shè)計特定的風(fēng)景時,實例化完全相同的對象 (例如,花或者樹)并不好,這是因為所有的花或者樹將是相同的。因 此,在呈遞時可以對不同種類的基元進(jìn)行建模和實例化,以替代每根最終 毛發(fā)。
可以使用毛囊來表示變形的軸,而不是完全放棄最終的毛發(fā)形狀,在 該軸周圍,可以根據(jù)毛發(fā)的形狀來使所例示的幾何形狀變形。這樣,先前 所描述的與呈遞毛發(fā)有關(guān)的所有各種效果(例如,簇集、分裂、波浪、編 織、風(fēng)等)的所有優(yōu)點可用在呈遞另一選中的幾何形狀(例如,花、樹 等)。
現(xiàn)在參考圖21,圖21是示出根據(jù)本發(fā)明一實施例的用于實現(xiàn)幾何例 示的處理2100的流程圖。在框2105,判斷毛發(fā)/皮毛流水線1500是否進(jìn) 入了呈遞階段。如果判斷結(jié)果為否,則處理結(jié)束(塊2U0)。但是,如果 已進(jìn)入呈遞階段,則在框2115,判斷用戶是否決定略過毛發(fā)呈遞操作,而 是利用幾何例示功能。如果判斷結(jié)果為否,則處理在框2120處結(jié)束。
另一方面,如果用戶決定了略過毛發(fā)呈遞處理并且改為利用幾何例示 功能,則在框2125,毛囊信息被獲得。接下來,在框2130,基于用戶選 中的幾何形狀,表面上的毛囊被改為填充有用戶選中的結(jié)合形狀(即,并非毛發(fā)/皮毛)。然后,在框2135,先前為毛發(fā)所確定的毛發(fā)形狀被應(yīng)用 以使用戶選中的幾何形狀變形。
在圖22a和22b可看到對此的一個示例。如圖22a所示,所示出的多 根毛發(fā)2210在表面2212上被呈遞。每根毛發(fā)2210具有毛囊信息(例如, 其在表面2212上的相對位置),以及與其相關(guān)聯(lián)的軸向變形框架(例 如,定義毛發(fā)的形狀)和關(guān)于諸如曲線、彎曲、旋轉(zhuǎn)、扭絞等的形狀特征 (如先前所述)的有關(guān)控制信息。
但是,利用本發(fā)明的實施例,如圖22b所示,用戶可以決定呈遞另一 幾何對象(例如,花),而非毛發(fā)。例如,可以從三個建模的花的集合中 隨機(jī)選擇花并通過相應(yīng)最終毛發(fā)的形狀來使花變形。
如圖22b所示,所示出的多個花2220、 2222和2224利用相同的毛囊 信息和相同的形狀信息來替代毛發(fā)。應(yīng)當(dāng)認(rèn)識到,花是僅被作為示例而給 出的,實際上可以使用任何幾何形狀來代替毛發(fā)形狀。因此,利用毛發(fā)/皮 毛流水線1500可以對新的幾何形狀進(jìn)行例示和變形,從而提供呈遞任何 類型的幾何形狀的強(qiáng)大且獨特的方式。
毛發(fā)運動合成器系統(tǒng)
當(dāng)在制作背景下處理毛發(fā)動畫和動態(tài)仿真時,經(jīng)常出現(xiàn)對組合不同運 動結(jié)果的需要。如果毛發(fā)的一部分在一次仿真中是完美的,但毛發(fā)的其余 部分在另一次仿真中看起來更好,則與合計出適當(dāng)?shù)脑O(shè)置以使得毛發(fā)的全 部以希望的方式運動相比,更容易選擇每次仿真的那些部分是希望保持 的。
在下文中將會描述,在一個實施例中,毛發(fā)運動合成器提供一種系統(tǒng) 和方法,該系統(tǒng)和方法允許用戶通過建立節(jié)點和操作的網(wǎng)絡(luò)來組合并修改 各種控制毛發(fā)動畫。例如,在一個實施例中,毛發(fā)/皮毛流水線1500的毛 發(fā)運動合成器模塊1557可用于實現(xiàn)毛發(fā)運動合成器。
例如,在一個實施例中,毛發(fā)流水線1500利用表面定義模塊1550來 定義表面和控制毛發(fā),并且毛發(fā)運動合成器模塊1557將與控制毛發(fā)和表 面相關(guān)聯(lián)的不同控制毛發(fā)曲線形狀組合。具體而言,毛發(fā)運動合成器模塊 1557生成定義靜態(tài)控制毛發(fā)曲線形狀的靜態(tài)節(jié)點;生成定義動畫控制毛發(fā)
31曲線形狀的動畫節(jié)點;并且將靜態(tài)節(jié)點的靜態(tài)控制毛發(fā)曲線形狀與動畫節(jié) 點的動畫控制毛發(fā)曲線形狀組合,以產(chǎn)生用于控制毛發(fā)的復(fù)合控制毛發(fā)曲 線形狀。
節(jié)點圖基本內(nèi)容
在一個實施例中,毛發(fā)運動合成器(HMC)是節(jié)點的受指導(dǎo)的非循環(huán)
圖,其中節(jié)點可以表示動畫或者應(yīng)用于動畫的操作。節(jié)點之間的連接表示 動畫的控制毛發(fā)曲線形狀的數(shù)據(jù)流。 簡單節(jié)點
為角色或?qū)ο髣?chuàng)建HMC裝置通常假設(shè)存在控制毛發(fā)的現(xiàn)有靜態(tài)梳 理,用作基礎(chǔ)。HMC裝置通常需要兩個節(jié)點靜態(tài)節(jié)點(包含控制毛發(fā) 曲線的初始的非動畫的形狀)和控制節(jié)點(表示最終結(jié)果——節(jié)點圖的輸 出)。表示控制毛發(fā)曲線形狀的其他節(jié)點可被插入到圖中。這些其他節(jié)點 可被稱為動畫節(jié)點。
參考圖23,圖23是示出連接到動畫節(jié)點2304和完成的控制節(jié)點 2306的靜態(tài)節(jié)點2302的簡單圖。在圖23中可見,動畫節(jié)點2304的輸入 是來自靜態(tài)節(jié)點2302的靜態(tài)的經(jīng)梳理的形狀。用戶可以通過由動畫控制 節(jié)點2304所提供的控制毛發(fā)曲線的動畫集合來應(yīng)用擰動和關(guān)鍵幀,以使 靜態(tài)形狀偏移,從而產(chǎn)生控制節(jié)點2306的最終的經(jīng)梳理的毛發(fā)結(jié)果。
混合節(jié)點
可以利用混合節(jié)點來合成特征。混合節(jié)點可被定義為采用兩個輸入并 將其組合在一起以形成單個輸出的操作節(jié)點。例如,來自每個輸入的控制 毛發(fā)曲線可被旋轉(zhuǎn)地混合在一起(以維護(hù)曲線長度)或者在位置上混合在 一起(用于線性混合)。
另外,可以使用用于混合節(jié)點的混合因子參數(shù)來控制各個輸入應(yīng)當(dāng)被 使用多少。例如,值0表示表示完全使用輸入節(jié)點A,并且值1表示完全 使用輸入節(jié)點B;其中,對于之間的所有值,混合節(jié)點提供對輸入節(jié)點A 和B的控制毛發(fā)曲線形狀的光滑內(nèi)插。
現(xiàn)在參考圖24,圖24是示出利用混合節(jié)點2403的處理的圖。也可以 同時參考圖25a和25b,圖25a和25b分別示出旋轉(zhuǎn)混合和位置混合。具
32體而言,圖24示出混合節(jié)點2403,混合節(jié)點2403對來自靜態(tài)節(jié)點2402 和動畫節(jié)點2404的輸入進(jìn)行混合以獲得控制節(jié)點2406的復(fù)合輸入形狀。 在該示例中,混合節(jié)點具有0.5的混合因子。
更具體而言,在圖25a中可見,當(dāng)具有0.5的混合因子的混合節(jié)點 2403選擇旋轉(zhuǎn)混合時,基于輸入的靜態(tài)控制毛發(fā)2520和動畫控制毛發(fā) 2530而獲得復(fù)合的控制毛發(fā)2510。旋轉(zhuǎn)混合的優(yōu)點在于其保持了得到的 控制毛發(fā)的長度。
在圖25b中可見,當(dāng)具有0.5的混合因子的混合節(jié)點2403選擇位置混 合時,基于輸入的靜態(tài)控制毛發(fā)2560和動畫控制毛發(fā)2570而獲得復(fù)合的 控制毛發(fā)2555。位置混合的優(yōu)點在于得到的控制毛發(fā)形狀比利用旋轉(zhuǎn)混合 的更可預(yù)測。
缺省情況下,混合節(jié)點2403可以將同一混合值應(yīng)用于每條輸入控制 毛發(fā)曲線的所有控制頂點(CV)。針對每個CV的控制,用戶可以建立指 定在每個CV出使用什么混合因子值的函數(shù)曲線。例如,這可用于使得基 底CV運動來自第一輸入,并且末梢CV運動來自第二輸入。通常,即使 在使用每個CV的函數(shù)曲線時,同一混合因子也被應(yīng)用于輸入的每條控制 毛發(fā)曲線。
為了指定每根毛發(fā)的混合值,用戶可以利用標(biāo)識出三維空間中的區(qū)域 的混合球?;旌锨蚩捎煞謩e具有內(nèi)部和外部混合因子值的兩個通信球面構(gòu) 成。如果內(nèi)部值是0且外部值是1,則內(nèi)球面內(nèi)的所有控制毛發(fā)曲線將從 第一輸入獲得它們的動畫,并且外球面外的所有控制毛發(fā)曲線將從第二輸 入獲得它們的值,之間具有光滑內(nèi)插。
在圖26中示出了這種類型的混合球2600的示例。實質(zhì)上,混合球 2600用于對混合節(jié)點的效果局部化。在圖26中可見,混合球2600包括內(nèi) 球面2602和外球面2604。此外,圖26示出了在將動畫控制毛發(fā)2607與 輸入的靜態(tài)控制毛發(fā)2608混合后混合球2600的效果(經(jīng)由內(nèi)球面2602和 外球面2604),并且還示出復(fù)合的輸出控制毛發(fā)2610。
動態(tài)解算器
應(yīng)當(dāng)認(rèn)識到,除了指定典型的仿真設(shè)置(嚴(yán)格性、阻尼等等)之外,大量的初始努力都是指定作為輸入而饋送到解算器的良好目標(biāo)形狀(例
如,用戶可能希望控制毛發(fā)曲線"命中"的關(guān)鍵姿勢(key posture))。 但是最終,多數(shù)時間被花費在處理一次或多次仿真的結(jié)果上。
由于動態(tài)求解處理本身經(jīng)常是耗時的并且在直接用戶控制之外,因此 將為了獲得所希望的結(jié)果而需要運行的仿真的數(shù)目最小化是重要的。
例如,在一個實施例中,MAYA毛發(fā)動態(tài)解算器可用于毛發(fā)仿真。但 是,應(yīng)當(dāng)注意到,先前描述的HMC系統(tǒng)是不知道動態(tài)解算器的。實質(zhì) 上,解算器看起來是節(jié)點圖中的單個節(jié)點。
參考圖27,圖27示出包括動態(tài)解算器節(jié)點(由解算器節(jié)點2706和動 態(tài)節(jié)點2708表示)的動態(tài)裝置。初始靜態(tài)梳理節(jié)點2702通過將被用作目 標(biāo)的動畫節(jié)點2704而連接到解算器2706,但最終結(jié)果在動態(tài)仿真節(jié)點 2708的輸出和目標(biāo)之間被混合(通過混合節(jié)點2712)??刂乒?jié)點2710是 復(fù)合的輸出。
缺省情況下,混合被設(shè)置為0以100%是動態(tài)的。但是,為了快速使 得毛發(fā)更硬(常見的藝術(shù)要求),混合可被逐漸增大以混合回靜態(tài)目標(biāo), 而不運行新的仿真。
依賴于所使用的設(shè)置和場景的復(fù)雜性,動態(tài)仿真可能花費很長時間, 使得它們經(jīng)??稍赗ENDERFARM上運行以釋放用戶的計算機(jī)來進(jìn)行其他 工作。為了適應(yīng)于此,可利用連接到控制節(jié)點2710的緩存輸出(cache-out) 節(jié)點2720來每當(dāng)有節(jié)點連接到其時寫入到存儲設(shè)備中。如將要描述 的,隨后可以利用緩存輸入文件來讀回緩存輸出文件。應(yīng)當(dāng)認(rèn)識到,緩存 輸出節(jié)點可應(yīng)用于系統(tǒng)的任何節(jié)點。此外,應(yīng)當(dāng)認(rèn)識到,存儲設(shè)備可以是 硬盤驅(qū)動器或者任何其他類型的存儲設(shè)備。
體積節(jié)點
通常,尤其對于計算機(jī)圖形特征產(chǎn)品而言,由動畫部門在某些關(guān)鍵姿 勢處對代表毛發(fā)的代理表面進(jìn)行建模和關(guān)鍵幀制作,以表示毛發(fā)應(yīng)當(dāng)在給 定的鏡頭中如何移動。
例如,角色的馬尾辮可由凸出的管狀體積來近似。為了提供該功能, 可以利用體積節(jié)點,該體積節(jié)點在效果上將控制毛發(fā)曲線綁定以使得它們
34跟隨一個或多個體積的動畫。體積節(jié)點的另一種用途可以是使動態(tài)仿真的
結(jié)果偏移以產(chǎn)生希望的結(jié)果。在這種情況下,使甩手動體積(hand-animated volume) 是不切實際的,因為手動體積不會自動跟隨動態(tài)控制毛 發(fā)。相反,可以使用提供其自己體積的體積節(jié)點,其中其自己的體積可被 隨時內(nèi)建在將被變形的控制毛發(fā)曲線的凸起外殼中。用戶然后可以修改體 積以使動畫偏移。這與修改個體毛發(fā)的控制頂點相比簡單得多。
圖28a是示出圍繞控制毛發(fā)曲線2802的自動生成的圓柱形體積節(jié)點 2804的圖。圖28b是示出在用戶己利用體積節(jié)點2804編輯了控制毛發(fā)曲 線之后被偏移的控制毛發(fā)曲線2810的圖。在圖28a和28b中可見,可以通 過體積節(jié)點2804來容易地修改控制毛發(fā)2802,如經(jīng)修改的控制毛發(fā)曲線 2810所示。
超級毛發(fā)節(jié)點
超級毛發(fā)節(jié)點通過利用簡化的代理幾何形狀來對毛發(fā)動畫進(jìn)行整形或 偏移而提供與體積節(jié)點類似的機(jī)制。但是,這種情況下的代理幾何形狀是 附接到表面的曲線,與所有其他毛發(fā)一樣。超級毛發(fā)節(jié)點可用于控制在用 于對靜態(tài)毛發(fā)整形的梳理階段和在用于改變動畫毛發(fā)的鏡頭中控制多根控 制毛發(fā)。
在一個實施例中,超級毛發(fā)節(jié)點可以具有兩種操作模式絕對的和相 對的。在絕對模式中,超級毛發(fā)節(jié)點使用單條控制曲線來指示出控制毛發(fā) 的精確形狀和動畫。用戶可以利用權(quán)重參數(shù)來選擇僅部分地應(yīng)用效果,權(quán) 重參數(shù)的值在0和1之間變化。超級毛發(fā)節(jié)點還具有在世界空間中匹配控 制曲線的形狀或者在每條控制毛發(fā)曲線的局部空間中應(yīng)用變形的選項。
參考圖29,圖29是示出超級毛發(fā)節(jié)點處理過程2900的流程圖。在框 2910,用戶選擇超級毛發(fā)節(jié)點。在框2915,用戶選擇是利用絕對模式還是 相對模式。如果絕對模式被選擇,則在框2920可以選擇權(quán)重參數(shù),并在 框2925可以選擇世界或局部空間。在框2930,控制曲線被應(yīng)用于控制毛 發(fā)。
另一方面,如果在過程2900期間,相對模式被選擇,則用戶同樣選 擇權(quán)重參數(shù)(框2940)并選擇世界或局部空間(框2945)。但是在相對
35模式中,控制曲線和基礎(chǔ)曲線都被應(yīng)用(框2950)于控制毛發(fā)。
在相對模式中,使用控制曲線和基礎(chǔ)曲線兩者,并且僅將兩者之間的 差應(yīng)用于控制毛發(fā)曲線。當(dāng)修改已經(jīng)具有一些進(jìn)入的動畫的控制毛發(fā)時, 通常使用這種方法。應(yīng)當(dāng)注意,如果控制曲線和基礎(chǔ)曲線完全匹配,則超 級毛發(fā)節(jié)點沒有效果。當(dāng)創(chuàng)建超級毛發(fā)節(jié)點時,控制曲線和基礎(chǔ)曲線缺省 地被豎直向上創(chuàng)建。為了使動畫毛發(fā)偏移,兩條曲線可以選擇性地采用控 制毛發(fā)的平均形狀。于是從這里開始對控制曲線進(jìn)行擰動要直觀得多。
簡要參考圖30a和30b,分別示出局部空間和世界空間中的超級毛發(fā) 操作。在圖30a和30b中可見,初始控制曲線形狀3000從表面沿著法線豎 直延伸,并且得到的控制毛發(fā)3010被整形以匹配控制曲線3020。
在絕對和相對這兩種模式中超級毛發(fā)的效果被均勻地應(yīng)用于所有被驅(qū) 動的毛發(fā)。對于局部化的控制,可在控制曲線周圍定義影響區(qū)域。
包括內(nèi)球面和外球面(如前所述)的混合球可用于定義超級毛發(fā)在何 處具有效果以及超級毛發(fā)具有多少效果,如圖31所示。具體而言,圖31 是示出具有內(nèi)球面3112和外球面3114兩者的混合球3110以及混合球 3110對控制曲線3120和控制毛發(fā)3130的效果的圖。
內(nèi)部和外部權(quán)重都與每個相應(yīng)的球面3112和3114相關(guān)聯(lián),并且超級 毛發(fā)3120和控制毛發(fā)3130的效果被內(nèi)插在其間。作為影響區(qū)域的實際應(yīng) 用,超級毛發(fā)3120可用于偽造沖突,例如通過以下方式而在皮毛一部分 上的手摩擦使控制曲線在表面上滑動以跟隨手的運動并在其運動時向下 擠壓毛發(fā)。
毛發(fā)運動合成的示例性用途
以下討論的是毛發(fā)運動合成器(HMC)的能力和通用性的一些示例。 改善單次仿真結(jié)果
對于真實動作和計算機(jī)圖形特征兩者,視覺效果產(chǎn)品都趨于嚴(yán)重面向 藝術(shù)。來自初始毛發(fā)鏡頭回顧的最常用要素之一是使動態(tài)仿真與藝術(shù)上批 準(zhǔn)的外觀更接近地匹配。這可能需要使仿真更嚴(yán)格以去除額外的或者無規(guī) 律的運動,或者使其以更好的方式匹配關(guān)鍵幀制作的目標(biāo)動畫。
通常,仿真可以產(chǎn)生物理上逼真的結(jié)果,但不一定是所希望的外觀。與通過設(shè)法微調(diào)動態(tài)參數(shù)而依賴于物理上精確的解算器并一再啟動新的仿
真相比,利用先前參考圖24、 25、 26、 27和31所描述的混合節(jié)點功能經(jīng) ??梢愿菀椎?合成" 一些靜態(tài)或目標(biāo)動畫。如所描述的,混合因子可 被設(shè)置或變動以保留動態(tài)仿真中被發(fā)現(xiàn)是視覺上合意的量。 多次仿真結(jié)果之間的混合
如前所述,仿真結(jié)果很少"現(xiàn)成(out of the box)"地提供完美的所 希望的外觀。利用變化的輸入?yún)?shù)集, 一次仿真可能給出良好的起動,但 另一仿真可能提供更好的結(jié)束外觀,并且又一仿真可能在某些關(guān)鍵時刻是 更有表現(xiàn)力的。找出能提供所有這三者的組合的統(tǒng)一參數(shù)集通常是不可能 的。
但是,利用如前所述的毛發(fā)運動合成器(HMC)的特征,級聯(lián)圖可被 容易地建立以在各種仿真緩存之間進(jìn)行混合,如圖32所示。
在圖32中可見,三個毛發(fā)緩存3200、 3202和3204各自分別是通過動 畫節(jié)點3210、 3212和3214來處理的。毛發(fā)緩存3200和3202還通過混合 節(jié)點3220而被組合,并且還通過動畫節(jié)點3222在混合節(jié)點3230處與毛發(fā) 緩存3204進(jìn)一步混合。
然后通過動畫節(jié)點3240來處理該經(jīng)混合的輸出,并在混合節(jié)點3245 處將其與靜態(tài)節(jié)點3248混合,并且在控制節(jié)點3250處呈遞最終的處理輸 出。應(yīng)當(dāng)認(rèn)識到,混合值可以是經(jīng)關(guān)鍵幀制作的,以選取每個緩存的最合 意的各部分。
混合也可用于非動態(tài)緩存文件。對于具有短皮毛的角色而言,具有兩 種靜態(tài)梳理可能是實際的 一種"正常"梳理, 一種與朝著表面被緊密下 壓的毛發(fā)相沖突的"沖突"梳理。然后,不是在諸如手或道具逆著皮毛摩 擦的鏡頭中仿真所有與皮毛的相交,而是可以利用跟隨沖突對象的混合球 來僅僅將毛發(fā)與那些區(qū)域中的先前沖突的梳理向混合。
除了其混合能力之外,毛發(fā)運動合成器(HMC)系統(tǒng)可用于糾正特定 鏡頭中的問題。例如,這經(jīng)常發(fā)生在經(jīng)常引起不好結(jié)果的兩種情形之一 使得靜態(tài)的經(jīng)梳理的目標(biāo)毛發(fā)剌入角色皮膚的動畫問題,以及諸如錯過的 沖突之類的小仿真差錯。在這些情況下,毛發(fā)的一般運動是完全可接受
37的,并且糾正問題所需的全部都可以通過利用先前討論的體積偏移節(jié)點或 超級毛發(fā)節(jié)點來完成。這比重新運行仿真直到滿意為止要快得多。 優(yōu)化技術(shù)
如先前參考圖15所討論的,本發(fā)明的實施例還涉及可由毛發(fā)/皮毛流
水線1500的優(yōu)化模塊1567實現(xiàn)的優(yōu)化技術(shù)。具體而言,這里討論了用于 改善毛發(fā)/皮毛流水線1500的可用性和呈遞速度的三種特定優(yōu)化技術(shù)。
第一種優(yōu)化技術(shù)涉及依賴于畫面空間量度對最終毛囊的剔除(cull) 的細(xì)微控制。這里稱為依賴于視圖的畫面空間優(yōu)化技術(shù)。這里公開的第二
種優(yōu)化方法涉及毛發(fā)/皮毛流水線1500的以下能力基于毛發(fā)子塊來選擇
性地生成并呈遞可見的毛囊。這里稱為毛發(fā)子塊優(yōu)化技術(shù)。此外,由毛發(fā)/
皮毛流水線1500實現(xiàn)的第三種優(yōu)化技術(shù)涉及毛發(fā)緩存以減少呈遞時間并 改善照明工作的周轉(zhuǎn)時間。這里稱為毛發(fā)緩存技術(shù)。 依賴于視圖的畫面空間優(yōu)化
如所公知的,以最大的毛發(fā)密度來呈遞完全覆蓋有皮毛的生物通?;?費很長時間,利用大量計算能力,并且利用大量存儲器。盡管可以手工調(diào) 節(jié)毛發(fā)密度以基于每個鏡頭來優(yōu)化毛發(fā)密度,但是乏味且容易出錯的處 理。
根據(jù)本發(fā)明的一個實施例,由毛發(fā)/皮毛流水線15Q0的優(yōu)化模塊1567 實現(xiàn)的依賴于試圖的畫面空間優(yōu)化技術(shù)可以通過利用在畫面空間中測量的 連續(xù)量度來實現(xiàn),這些連續(xù)量度給出了對毛發(fā)參數(shù)(例如,呈遞時的毛發(fā) 密度和毛發(fā)寬度)的設(shè)置的細(xì)微控制。此外,可以通過用戶定義的函數(shù)曲 線來定制優(yōu)化參數(shù)的行為。
在一個實施例中,表面定義模塊1550可用于定義表面,并且優(yōu)化模 塊1567可用于判斷毛發(fā)是否將在表面上被呈遞。具體而言,優(yōu)化模塊 1567可用于確定毛發(fā)的大小量度;將第一密度曲線應(yīng)用于為毛發(fā)所確定 的大小量度,以生成密度倍數(shù)值;并且基于密度倍數(shù)值,判斷毛發(fā)是否應(yīng) 當(dāng)被呈遞。
優(yōu)化參數(shù)的連續(xù)量度和可定制性在該方法中提供了很大靈活性,并且 不受與對預(yù)定值的離散選擇相關(guān)聯(lián)的約束。在本發(fā)明的一個實施例中,優(yōu)化參數(shù)(將在下文中討論)涉及毛發(fā)密度和毛發(fā)寬度參數(shù)。但是,應(yīng)當(dāng)認(rèn) 識到,其他類型的與毛發(fā)有關(guān)的參數(shù)也可被優(yōu)化。
在該實施例中,毛發(fā)畫面空間優(yōu)化基于畫面上的每根個體毛發(fā)(畫面 空間大小量度)和毛發(fā)在畫面上移動的速度(畫面空間速度量度)來確定 所呈遞的毛發(fā)的減少量。
兩種量度被針對每根毛發(fā)而計算,并且然后被傳送回用戶指定的函數(shù) 曲線,該函數(shù)曲線指定了毛發(fā)是否應(yīng)當(dāng)被呈遞。通過利用定制的函數(shù)曲 線,在每個鏡頭的基礎(chǔ)上可以定制角色的毛發(fā),并且從而給予了藝術(shù)家很 大靈活性來確定從角色剔除多少毛發(fā)。
參考圖33,圖33是示出用于實現(xiàn)依賴于視圖的畫面空間優(yōu)化的技術(shù) 的圖。在圖33中可見,依賴于視圖的畫面空間優(yōu)化3300被分成兩個階 段。第一階段是量度生成階段3310,并且第二階段是量度到參數(shù)映射階段 3320。具體而言,每個毛囊3308被饋送到量度生成階段3310中。
具體而言,每個毛囊3308被饋送到量度生成階段3310中,并且另外 參考圖34,每根毛發(fā)3410的每個毛囊根位置3402在量度生成階段3310 中被變換成規(guī)格化設(shè)備坐標(biāo)(NDC)框架,以生成替代原始毛發(fā)的代理毛 發(fā)3405。
更具體而言,在量度生成階段3310中,每根毛發(fā)的NDC根位置3402 用于測量不同的量度,這些不同的量度提供另外的信息以決定在呈遞時如 何控制每根毛發(fā)的參數(shù)。
在該實施例中,在量度生成階段3310中利用兩種不同的量度——大 小量度3312和速度量度3314。但是,應(yīng)當(dāng)認(rèn)識到,也可以利用各種其他 不同量度。畫面空間大小量度3312用于計算在NDC空間中代理毛發(fā)3405 的長度。代理毛發(fā)3405是從毛囊根位置3402豎直向上生長的單位長度毛 發(fā)。因為與最終毛發(fā)相比,代理毛發(fā)3405更容易進(jìn)行計算處理,所以利 用代理毛發(fā)3405而非原始的最終毛發(fā)3410。這是因為尤其在毛發(fā)最終被 剔除的情況下,與最終毛發(fā)相關(guān)聯(lián)的毛發(fā)內(nèi)插和效果操作在計算上是非常 密集的。另一原因在于離相機(jī)相等距離但高度不同的所有毛發(fā)應(yīng)當(dāng)被同樣 對待。通過這樣做,保留了具有大的毛發(fā)長度變化的外觀,但一旦優(yōu)化被
39應(yīng)用,在這種情況下忽略代理毛發(fā)可能引起禿點或不同的外觀。
畫面空間速度量度3314計算在NDC空間中毛囊的根部從當(dāng)前幀到下 一幀所移動的距離。簡要參考圖35,圖35是示出在NDC空間中代理毛發(fā) 3506的根部3502從時間t處的第一幀3510到時間t+l處的第二幀3520 所移動的距離的圖。之所以選擇該量度是因為運動嚴(yán)重模糊的對象不需要 完全的毛發(fā)密度來達(dá)到相同的外觀。
返回來參考圖33,在大小量度3312和速度量度3314在量度生成階段 3310中被確定之后,這些值被傳送到量度到參數(shù)映射階段3320。針對每 個參數(shù),操作者將相應(yīng)的函數(shù)曲線應(yīng)用于每個量度值。在該示例中,密度 曲線3324和3326分別被應(yīng)用于大小量度3312和速度量度3314 (例如, 密度與大小和速度的關(guān)系),并且寬度曲線3330和3332被分別應(yīng)用于大 小量度3312和速度量度3314 (例如,寬度與大小和速度的關(guān)系)。各個 結(jié)果中的每一個然后被相乘以得出最終的參數(shù)倍數(shù)值。在該示例中,確定 可被傳送到呈遞功能3360上的密度倍數(shù)值3340和寬度倍數(shù)值3350。
應(yīng)當(dāng)注意,在密度倍數(shù)的情況下,用戶定義的函數(shù)曲線3324和3326 被約束為在范圍[O, l]中的映射量度值。同樣在[O, l]之間相應(yīng)變化的最終結(jié) 果(密度倍數(shù)值3340)然后用于判斷最終毛發(fā)是否在呈遞模塊3360處被 呈遞。在一個示例中,這可以通過生成范圍[O, l]中的隨機(jī)數(shù)來實現(xiàn);如果 該數(shù)低于最終結(jié)果,則毛發(fā)被繪制。否則,毛發(fā)被剔除。
對于寬度倍數(shù),用戶定義的函數(shù)曲線3330和3332被約束為任何非負(fù) 實數(shù),因此最終結(jié)果也是非負(fù)實數(shù)。該最終結(jié)果(寬度倍數(shù)3350)然后乘 以當(dāng)前毛發(fā)的寬度參數(shù)并被傳送到呈遞模塊3360。
應(yīng)當(dāng)注意,因為當(dāng)對象(例如,具有毛發(fā)的角色)從前臺移動到后臺 時毛發(fā)數(shù)不再是靜態(tài)的,所以可能發(fā)生彈出(popping)。為了減輕這種行 為,已經(jīng)進(jìn)行了經(jīng)驗性測試,測試顯示,結(jié)合這些優(yōu)化技術(shù)使毛囊漸弱可 將這種效果最小化。鑒于此,可以強(qiáng)制每個毛囊首先經(jīng)過可見性確定,并 且如果確定是不可見的,則可以通過線性地減小毛發(fā)的不透明度值來減小 毛發(fā)的不透明度。
應(yīng)當(dāng)認(rèn)識到,通過利用以上定義的技術(shù),所生成或呈遞的毛發(fā)數(shù)可被
40減少密度倍數(shù)值,并且其余毛發(fā)的寬度可被增大寬度倍數(shù)值。因此,通過 利用速度和大小量度以及四條函數(shù)曲線,這些優(yōu)化技術(shù)確定了是否剔除毛 發(fā)以及將其寬度調(diào)整多少。
具體而言,將這些技術(shù)用于完全覆蓋有皮毛的生物可以使得顯著節(jié)省 處理和存儲器。這是因為如果生物不是畫面上的特寫或者在畫面上快速移 動,則這些技術(shù)允許呈遞少于最初設(shè)計的生物所具有的所有毛發(fā)而沒有大 的視覺差異,但呈遞時間和存儲器要求被顯著改善。
參考圖36,圖36示出了表3600,表3600給出了在各幀處利用畫面 空間大小量度對毛發(fā)數(shù)、時間和存儲器方面的未經(jīng)優(yōu)化的值和毛發(fā)數(shù)、時 間和存儲器方面的經(jīng)優(yōu)化的值的并排比較。以分和秒列出呈遞時間("時 間"),并且以兆字節(jié)給出存儲器使用率("存儲器") 在表3600所 示的該測試中,由皮毛的角色從幀IO處的特寫位置移動到幀100處的遠(yuǎn) 離相機(jī)處。該示例中所使用的函數(shù)曲線是變化迅速的,因為實際毛發(fā)數(shù)從 幀10處原始毛發(fā)數(shù)的78%變?yōu)閹?00處的1%。在表3600中可見,呈遞 時間和存儲器使用率都顯著改善。
應(yīng)當(dāng)注意,依賴于視圖的畫面空間優(yōu)化技術(shù)在以下意義上是靈活的 函數(shù)曲線可以被容易地調(diào)整以微調(diào)優(yōu)化,使得角色在任何距離都看起來良 好并且存儲器和呈遞時間接收盡可能地高。
參考圖37,圖37是示出利用畫面空間速度方法的另一比較的表3700 (與表3600類似)。在該示例中,角色非常快速地在畫面上閃動(shot move)并且被呈遞有運動模糊。選擇了畫面空間速度為高的幀。應(yīng)當(dāng)注 意,角色的毛發(fā)量被減少為19%。該技術(shù)示出了針對快速移動鏡頭在呈遞 時間和存儲器方面的動態(tài)節(jié)省,在表3700中可見。
此外,在大小和速度量度兩者被彼此結(jié)合地利用的情況下執(zhí)行了測 試。具體而言,參考圖38,圖38是示出未經(jīng)優(yōu)化和經(jīng)優(yōu)化的毛發(fā)數(shù)、時 間和存儲器值的表3800 (與表3600和3700類似)。在該示例中,角色被 呈遞有從遠(yuǎn)溯的幀101處到十分接近的幀270處的運動模糊。在表3800的 值中可見,兩種量度彼此很好地工作并節(jié)省了呈遞時間和存儲器,并且還 被示出為未犧牲視覺質(zhì)量。毛發(fā)子塊優(yōu)化
毛發(fā)/皮毛流水線1500的優(yōu)化模塊1567所實現(xiàn)的另一種優(yōu)化技術(shù)涉及
毛發(fā)子塊優(yōu)化。 一般而言,在基于并非所有毛發(fā)總是對相機(jī)可見的事實來
呈遞大量毛發(fā)的過程中,這種優(yōu)化是有用的。利用優(yōu)化模塊1567的毛發(fā) 流水線1500可以通過首先不生成不可見的基元來節(jié)省呈遞時間,而不是 生成所有的毛發(fā)并允許顯示模塊1575在呈遞期間執(zhí)行可見性剔除。具體 而言,這些技術(shù)的一些方面可由優(yōu)化模塊1567結(jié)合顯示模塊1575來實 現(xiàn)。
在一個實施例中,表面定義模塊1550可用于定義表面,并且優(yōu)化模
塊1567可用于為一組毛發(fā)創(chuàng)建限制盒;判斷限制盒是否可見;并且如
果限制盒可見,則與該可見的限制盒相關(guān)聯(lián)的毛發(fā)在表面上被呈遞。
一般而言,可以為待呈遞的初始的一組毛發(fā)創(chuàng)建限制盒,然后可以在 呈遞之前測試該限制盒的可見性。如果限制盒是可見的,則將毛發(fā)基元在 空間上分成四個子群,并且為每個子群創(chuàng)建新的限制盒并再次測試每個子 群的可見性。如果限制盒被確定為不可見,則對該毛發(fā)群不執(zhí)行進(jìn)一步的 細(xì)分并且不對其進(jìn)行呈遞。在遞歸地細(xì)分所有可見毛發(fā)群達(dá)預(yù)定次數(shù)之 后,每個群的毛發(fā)基元然后被發(fā)送到顯示模塊1575以在該點進(jìn)行呈遞。
參考圖39,圖39是示出用于實現(xiàn)毛發(fā)子塊優(yōu)化的處理3900的流程 圖。在圖39中可見,在框3910,為初始的一組毛發(fā)創(chuàng)建限制盒。接下 來,在框3915,判斷用于該初始的一組毛發(fā)的限制盒是否可見。如果判斷 結(jié)果為否,則處理3900結(jié)束(框3920)。例如,可按近似相等的關(guān)系在 空間上劃分子群。但是,如果限制盒或者限制盒的一部分對于該初始的一 組毛發(fā)是可見的,則限制盒在空間上被分成子群(框3925)。例如,可按 近似相等的關(guān)系在空間上劃分子群。此外,為每個子群創(chuàng)建限制盒(框 3930)。
還可以參考圖40,圖40是示出毛發(fā)子塊優(yōu)化的簡化示例的圖。在圖 40中可見,示出了第一幀4002,其中用于初始的一組毛發(fā)的限制盒4010 位于幀的右側(cè)??梢钥吹?,用于初始的一組毛發(fā)的限制盒4010是可見 的,以使得其是可見的并且如幀4004所示,限制盒4010然后在空間上被
42分成子群或子群限制盒4012。
返回到圖39的處理3900,在框3935,判斷這些子群限制盒是否可 見。如果判斷結(jié)果為否,則在框3940,處理結(jié)束。但是如果這些子群限制 盒是可見的,則判斷是否滿足預(yù)定數(shù)目的細(xì)分(框3945)。如果判斷結(jié)果 為否,則子群被進(jìn)一步劃分并且被遞歸地細(xì)分預(yù)定次數(shù)。假定滿足了預(yù)定 數(shù)目,則在框3950,子群限制盒的毛發(fā)基元被呈遞。
具體而言,參考圖40,在幀4006處可見,最左邊的兩個子群限制盒 4014被確定為不可見(并且用陰影線標(biāo)識),而最右邊的兩個盒是不可見 的。因此,與最左邊的兩個可見子群限制盒4014相關(guān)聯(lián)的毛發(fā)被轉(zhuǎn)送, 而與最右邊的兩個不可見子群限制盒相關(guān)聯(lián)的毛發(fā)被放棄。應(yīng)當(dāng)認(rèn)識到, 這可被遞歸地實現(xiàn)預(yù)定次數(shù)。
此外,由于先前參考幾何例示實施例所討論的毛發(fā)/皮毛流水線1500 的靈活性,環(huán)境建模者可以利用毛發(fā)子塊優(yōu)化的各方面以將其擴(kuò)展到其他 計算機(jī)圖形用途,例如呈遞大的草地風(fēng)景。通過逐鏡頭地利用毛發(fā)子塊優(yōu) 化實施例的實施例,可能僅需要呈遞整個風(fēng)景的一小部分,從而節(jié)省了大 量處理和存儲器。但是,應(yīng)當(dāng)認(rèn)識到,通過利用先前描述的幾何例示實施 例,任何用戶選中的或者隨機(jī)生成的幾何對象都可以被呈遞,代替具有或 者沒有相關(guān)毛發(fā)參數(shù)(彎曲、旋轉(zhuǎn)、風(fēng)等)和與毛發(fā)相關(guān)聯(lián)的軸向變形參 數(shù)的毛發(fā)。
例如,為了定義風(fēng)景,可以利用如下的單個限制盒來發(fā)起處理該單 個限制盒圍繞定義整個風(fēng)景的塊。然后可以利用更小的限制盒將該塊細(xì)分 成四個不相交的象限,如前所述。對于被剔除的限制盒,不進(jìn)行進(jìn)一步處 理,但對于繼續(xù)被處理的限制盒,將進(jìn)行進(jìn)一步的細(xì)分,直到達(dá)到用戶定 義的停止標(biāo)準(zhǔn)為止。
也可以利用另外的停止標(biāo)準(zhǔn),例如與子塊維度的參數(shù)長度和參數(shù)紋理 空間有關(guān)的參數(shù)限制和細(xì)分深度。
利用先前描述的、參考圖39和40討論的應(yīng)用于風(fēng)景的毛發(fā)子塊優(yōu)化 技術(shù),利用兩千五百萬根毛發(fā)對單個大的草地風(fēng)景進(jìn)行了建模,其中毛發(fā) 在幾何上被例示為草和/或樹。但如圖41的幀中所示,利用毛發(fā)子塊優(yōu)化技術(shù)實際上僅生成和呈遞了幾百根的草。在沒有該優(yōu)化的情況下,呈遞所 有的草將會需要大得多的處理量和存儲器使用率。 毛發(fā)緩存優(yōu)化
在照明階段,照明專家通常對已被動畫和布局部門批準(zhǔn)的鏡頭進(jìn)行工 作。通常需要做的是確定燈的數(shù)目和布置并創(chuàng)建實現(xiàn)所希望的外觀需要的 照明條件的類型。
具體而言,在照明階段期間,畫面的所有元素已被最終確定,包括所 有的毛發(fā)參數(shù)。因此,可以緩存輸出并再次使用毛發(fā)幾何形狀和毛發(fā)參數(shù) 以獲得顯著的處理和存儲器節(jié)省。在一個實施例中,優(yōu)化模塊1567結(jié)合
遮擋和背光模塊1570可用于實現(xiàn)這里所描述的根據(jù)毛發(fā)緩存實施例的技術(shù)。
為了實現(xiàn)該技術(shù),可以創(chuàng)建和/或確認(rèn)緩存毛發(fā)狀態(tài)文件,并且可以保 存毛發(fā)參數(shù)的狀態(tài)(因為這些參數(shù)將被呈遞)。例如,這些毛發(fā)參數(shù)可被 保存為緩存毛發(fā)狀態(tài)文件中的未排序的毛發(fā)參數(shù)列表。
在一個實施例中,照明模塊1570可用于為鏡頭在照明階段中產(chǎn)生照 明效果,并且優(yōu)化模塊1567可用于判斷是否存在包括毛發(fā)參數(shù)的緩存 毛發(fā)狀態(tài)文件;以及判斷緩存毛發(fā)狀態(tài)文件是否包括將在鏡頭中使用的匹 配毛發(fā)參數(shù),并且如果是這樣的話,來自緩存毛發(fā)狀態(tài)文件的毛發(fā)參數(shù)值 被用在照明階段中。
參考圖42,示出了包括毛發(fā)狀態(tài)參數(shù)4202、 4204、 4206等的列表的 緩存毛發(fā)狀態(tài)文件4200的示例。如果緩存毛發(fā)狀態(tài)文件4200并不存在或 者包含不同于當(dāng)前呈遞狀態(tài)的參數(shù)值,則新的一組值可被保存到緩存毛發(fā) 狀態(tài)文件4200中(即,作為毛發(fā)狀態(tài)參數(shù)4202、 4204、 4206等)。然后 可以利用該新的或者更新的緩存毛發(fā)狀態(tài)文件4200。但是,如果緩存毛發(fā) 狀態(tài)文件4200已經(jīng)與當(dāng)前呈遞狀態(tài)相匹配,則原始的緩存毛發(fā)狀態(tài)文件 4200可被使用。
參考圖43,圖43是示出用于實現(xiàn)毛發(fā)緩存的處理4300的流程圖。在 框4302,判斷是否存在緩存毛發(fā)狀態(tài)文件4200。如果判斷結(jié)果為否,則 創(chuàng)建新的緩存毛發(fā)狀態(tài)文件4200 (框4304)。然后,在框4306,保存新
44的緩存毛發(fā)狀態(tài)文件4200。
但是,如果存在緩存狀態(tài)文件,則在框4310,判斷緩存毛發(fā)狀態(tài)文件 4200是否包括將用于呈遞的相同參數(shù)。如果是這樣的話,則處理移動到將 被描述的框4320。否則,在框4306,不同的毛發(fā)狀態(tài)參數(shù)被保存到緩存 毛發(fā)狀態(tài)文件4200。
利用具有相同參數(shù)的緩存毛發(fā)狀態(tài)文件或者具有不同參數(shù)的緩存毛發(fā) 狀態(tài)文件中任一個新的緩存毛發(fā)狀態(tài)文件,處理移動到框4320,在框 4320,判斷是否存在正確的文件鑰匙。在緩存確認(rèn)、緩存生成和緩存呈遞 之前,用排他性的文件鎖將每個呈遞和緩存確認(rèn)處理鎖住。因此,需要存 在正確的鑰匙以使得緩存毛發(fā)狀態(tài)文件可用于照明階段中。這是因為在點 亮器(lighter)對鏡頭進(jìn)行工作時通常多個處理被用來生成最終的呈遞 幀。
如果不存在正確的文件鑰匙,則處理在框4340結(jié)束,并且緩存毛發(fā) 狀態(tài)文件4200被刪除。但是,如果緩存毛發(fā)狀態(tài)文件4200被正確地開 鎖,則在框4350,緩存文件可用于照明階段。
在 一 個實施例中,物理的緩存毛發(fā)狀態(tài)文件可被表示為 RENDERMAN文件。這是在不丟失普遍性的情況下完成的,因為其僅僅 對生成毛發(fā)幾何形狀所需的數(shù)據(jù)點和參數(shù)進(jìn)行了編碼。另外,經(jīng)壓縮的 RENDERMAN文件可被用作表示緩存文件的空間節(jié)省技術(shù)。
因此,先前描述的處理4300判斷緩存毛發(fā)狀態(tài)文件4200是有效的還 是無效的。如果不存在緩存毛發(fā)狀態(tài)文件緩存毛發(fā)狀態(tài)文件或者在緩存文 件中所發(fā)現(xiàn)的基元與將要呈遞的毛發(fā)基元不匹配,則緩存毛發(fā)狀態(tài)文件一 般被確定為無效。具體而言,為了確定后一種情況,可能要求每個緩存毛 發(fā)狀態(tài)文件首先包含生成其所使用的毛發(fā)呈遞設(shè)置。
因此,如果呈遞設(shè)置匹配,則認(rèn)為緩存毛發(fā)狀態(tài)文件是有效的。另一 方面,如果發(fā)現(xiàn)緩存毛發(fā)狀態(tài)文件是無效的,則正確的毛發(fā)參數(shù)被饋送并 存儲到緩存毛發(fā)狀態(tài)文件,如前所述。
通常,在第一次時,緩存是無效的,因此需要被生成(緩存生成和使 用)。由于允許一旦另一處理器生成了緩存就立即使用該緩存的連續(xù)化
45(serialization),因此這里可以發(fā)現(xiàn)有所節(jié)省。這單獨將呈遞時間削減了 69%。當(dāng)不同的處理在使用同一緩存文件時,可以實現(xiàn)進(jìn)一步的節(jié)省。應(yīng) 當(dāng)注意,點亮器通常保持多次再呈遞并且實際的時間節(jié)省通常被倍增。
現(xiàn)在參考圖44,圖44示出了一個表,其中示出了點亮器通過利用先 前描述的技術(shù)來呈遞完全覆蓋有皮毛的角色可以實現(xiàn)的時間節(jié)省。在圖44 中可見,示出了在沒有緩存的情況下的呈遞時間、用于進(jìn)行呈遞的緩存的 生成和使用時間以及利用現(xiàn)有的緩存的呈遞時間??梢钥吹?,實現(xiàn)了顯著 的時間節(jié)省。
多種可例示的效果
參考圖45,圖45是示出先前描述的包括效果模塊1565的毛發(fā)/皮毛 流水線1500的一個實施例的框圖,其中效果模塊1565還包括允許可重新 排序的多種可例示的效果的效果流水線4510。
在一個實施例中,毛發(fā)/皮毛流水線1500的表面定義模塊1550可用于 定義表面。內(nèi)插模塊1560可用于基于至少一根控制毛發(fā)在表面上內(nèi)插至 少一根最終毛發(fā)。此外,效果模塊1565可另外包括效果流水線4510,效 果流水線4510用于以預(yù)定的順序向最終毛發(fā)應(yīng)用多種效果,以生成可由 顯示模塊1575最終呈遞的經(jīng)修改的最終毛發(fā)。
如先前詳細(xì)所述,毛發(fā)/皮毛流水線1500基于輸入可以首先在表面定 義模塊1550處定義表面。此外,如前所述,控制毛發(fā)調(diào)整模塊1555可以 定義并調(diào)整控制毛發(fā)以幫助提供諸如簇集、分裂以及其他先前所述功能之 類的功能。毛發(fā)運動合成器模塊1557可以設(shè)在毛發(fā)/皮毛流水線1500中, 用于編輯和組合不同的毛發(fā)動畫。如前所述的內(nèi)插模塊1560可用于基于 控制毛發(fā)在表面上內(nèi)插最終毛發(fā)。另外,如前所述,效果模塊1565可向 最終毛發(fā)和皮毛提供各種效果,例如簇集、分裂、波浪效果、編織效果、 風(fēng)效果等等。
另外,根據(jù)本發(fā)明的一個實施例,效果模塊1565可以包括效果工廠 4504和效果流水線4510。如稍后將更詳細(xì)描述的,使用效果工廠4504和 效果流水線4510允許各種先前描述的效果(例如,簇集、分裂、波浪、 編織、風(fēng)等)被以任何順序應(yīng)用并且還可以利用不同參數(shù)來多次應(yīng)用同一效果。先前描述的效果中的每一個通常包括與給定效果相關(guān)聯(lián)的參數(shù),以 提供將被應(yīng)用于毛發(fā)的效果的某個參數(shù)量(例如,毛發(fā)簇集到控制毛發(fā)的 程度、應(yīng)用于毛發(fā)的編織量等)。這樣,更逼真的毛發(fā)式樣可被以高保真 度的方式正確地建模。
通過利用效果流水線4510,用戶通過用戶輸入可以指定什么類型的效
果應(yīng)當(dāng)被應(yīng)用于從內(nèi)插模塊1560接收到的最終毛發(fā)以及這些效果應(yīng)當(dāng)以 什么順序應(yīng)用。例如,這可以通過利用生成可擴(kuò)展標(biāo)記語言(XML)文件 或者包括該信息的其他合適類型的文件的用戶接口來實現(xiàn)。該XML文件 然后可被傳送到效果工廠4505上。
效果工廠4505然后制造用戶所指定的所有效果(例如,簇集、分 裂、波浪、編織、風(fēng)等),應(yīng)用針對用戶所選擇的每種效果而選擇的各種 參數(shù)值,應(yīng)用用戶所選擇的效果的排序,并且以用戶定義的順序用用戶定 義的多個不同效果來填充效果流水線4510。此外,應(yīng)當(dāng)認(rèn)識到,用戶可以 選擇將同一效果應(yīng)用多次,這多次具有不同參數(shù)值。
圖46是示出根據(jù)本發(fā)明一實施例的用于實現(xiàn)可重新排序的多種可例 示效果的處理4600的流程圖,這多種效果可通過效果模塊1565來實現(xiàn)。
在框4605,用戶通過輸入來定義將應(yīng)用于最終毛發(fā)的效果的類型。接 下來,用戶通過用戶輸入來定義效果被應(yīng)用于最終毛發(fā)的順序(框 4610)。用戶可以按用戶所希望的任何順序,來選擇多種不同的效果和多 種類似的效果(對于每個效果具有相同或不同參數(shù)值),以及其組合。
具體而言,可以利用先前描述的簇集、分裂、波浪、編織和風(fēng)效果及
其他先前描述的效果,以及本領(lǐng)域技術(shù)人員通常知道的其他類型的效果。 此外,如前所述,為了完成該操作,可以通過利用用戶接口來接受用戶輸 入,該用戶接口然后可以生成包括該信息以供處理的XML文件或其他合 適類型的文件。
基于該信息,效果模塊1565的效果工廠4505以用戶所選擇的順序來 創(chuàng)建用戶所指定的這類效果(框4615),并利用所希望的效果來填充效果 流水線4510 (框4620)。所希望的效果然后被應(yīng)用于最終毛發(fā)(框 4625),使得最終毛發(fā)因而被修改,并且經(jīng)修改的最終毛發(fā)被傳送到毛發(fā)/
47皮毛流水線1500的優(yōu)化模塊1567 (框4630)、遮擋和陰影模塊1570等 并最終傳送到顯示模塊1575,在顯示模塊1575,經(jīng)修改的最終毛發(fā)被呈 遞(框4640)。應(yīng)當(dāng)認(rèn)識到,在毛發(fā)/皮毛流水線中可以利用另外的或者 不同的模塊。
參考圖47,示出了根據(jù)本發(fā)明一實施例的提供可重新排序的多種可例 示的效果的示例的框圖,這些效果通過毛發(fā)/皮毛流水線的效果模塊的效果 流水線4510而被應(yīng)用于最終毛發(fā)。
在圖47中可見,來自內(nèi)插模塊的最終毛發(fā)4705被轉(zhuǎn)發(fā)到效果模塊, 更具體地,轉(zhuǎn)發(fā)到效果模塊的效果流水線4510。包括用于效果的參數(shù)值和 來自用戶接口的排序信息在內(nèi)的用戶定義的效果被傳送到效果工廠4505 上。該信息可被處理并存儲為XML文件。效果工廠4505制造用戶所指定 的所有多種不同類型的效果和排序,并利用效果來填充效果流水線4510。
在該示例中,第一效果(例如,波浪)4722與第二效果(例如,簇 集)4724以及各種中間效果相結(jié)合,并最終與最后的效果(例如,編織) 4726相結(jié)合。所有這些效果被應(yīng)用于最終毛發(fā)4705以生成經(jīng)修改的最終 毛發(fā)4730。應(yīng)當(dāng)認(rèn)識到,先前描述的波浪、簇集和編織效果僅僅是示例性 的。
因此,利用用戶所請求的所有所希望的效果來填充效果流水線4510, 并且通過效果流水線4510來處理來自內(nèi)插模塊的所有最終經(jīng)內(nèi)插毛發(fā) 4705以生成經(jīng)修改的最終毛發(fā)4730。 一旦通過效果流水線4510處理了最 終毛發(fā),然后就將經(jīng)修改的最終毛發(fā)4730移交給優(yōu)化模塊、遮擋和陰影 模塊并最終移交給顯示模塊以供呈遞。
例示毛發(fā)數(shù)據(jù)庫
參考圖48,圖48是示出根據(jù)本發(fā)明一實施例的進(jìn)一步包括例示模塊 4802和例示毛發(fā)數(shù)據(jù)庫4804的毛發(fā)/皮毛流水線1500的框圖。結(jié)合例示毛 發(fā)數(shù)據(jù)庫4804來使用例示模塊4802允許大量的毛發(fā)或者對象被例示。
在一個實施例中,毛發(fā)/皮毛流水線1500的表面定義模塊1550可用于 定義表面。例示模塊4802用于對毛發(fā)進(jìn)行例示。例示毛發(fā)數(shù)據(jù)庫4804耦 合到例示模塊4802并且用于存儲毛發(fā)數(shù)據(jù)。如將要描述的,例示模塊4802從例示毛發(fā)數(shù)據(jù)庫4804檢索毛發(fā)數(shù)據(jù)以允許大量的毛發(fā)被有效地例示。顯示模塊1575 (在內(nèi)插、效果、優(yōu)化等之后)用于相對于表面來顯示所例示的毛發(fā)。
圖形呈遞過程中利用的典型計算機(jī)僅僅具有有限量的隨機(jī)存取存儲器(RAM)可專用于表示最終毛發(fā)以供呈遞,使得可被例示以供呈遞的來自RAM的毛發(fā)數(shù)相當(dāng)有限。但是,通過結(jié)合存儲毛發(fā)信息的例示毛發(fā)數(shù)據(jù)庫4804來利用例示模塊4802,發(fā)現(xiàn)可以容易地滿足對巨大毛發(fā)數(shù)的產(chǎn)生要求以及諸如草地呈遞之類的其他應(yīng)用。通過結(jié)合存儲毛發(fā)信息的例示毛發(fā)數(shù)據(jù)庫4804來利用例示模塊4802,用于產(chǎn)生包括數(shù)百萬毛發(fā)(及以上)中的毛發(fā)數(shù)的大量毛發(fā)的可縮放性(scalability)是可實現(xiàn)的。例示模塊數(shù)據(jù)庫可被存儲在一種類型的存儲器中,該存儲器允許相對大規(guī)模的存儲,例如硬盤驅(qū)動器、磁盤驅(qū)動器、網(wǎng)絡(luò)驅(qū)動器、光學(xué)驅(qū)動器等,或者允許相對大規(guī)模的存儲的任何其他類型的存儲設(shè)備。
毛發(fā)是根據(jù)先前描述的毛發(fā)/皮毛流水線1500生成的,毛發(fā)/皮毛流水線1500包括表面定義1550、控制毛發(fā)定義和調(diào)整1555等。在該流水線中,例示模塊4802耦合到例示毛發(fā)數(shù)據(jù)庫4804,并布置在內(nèi)插模塊1560之前。例示模塊4802可用于從存儲大量毛發(fā)數(shù)據(jù)的例示毛發(fā)數(shù)據(jù)庫4804中檢索相對大量的毛發(fā)數(shù)據(jù)以供例示。這樣,例示模塊4802可以有效并高效地生成巨大數(shù)目的毛發(fā)。
通過將例示模塊4802和例示毛發(fā)數(shù)據(jù)庫4804布置在內(nèi)插模塊1560之前,諸如毛囊位置、控制毛發(fā)權(quán)重和簇成員關(guān)系之類的靜態(tài)毛發(fā)信息可在內(nèi)插和效果被應(yīng)用之前被存儲在例示毛發(fā)數(shù)據(jù)庫4804中。通過這樣做,包括標(biāo)準(zhǔn)的存儲器內(nèi)(基于RAM)的實例化在內(nèi)的不同表示策略可被單獨使用,或者結(jié)合例示毛發(fā)數(shù)據(jù)庫4804來使用?;蛘?,例示毛發(fā)數(shù)據(jù)庫4804可被單獨使用。實際上,例示模塊4802的例示毛發(fā)數(shù)據(jù)庫4804可用作對經(jīng)由例示毛發(fā)數(shù)據(jù)庫4804的標(biāo)準(zhǔn)的存儲器內(nèi)(基于RAM)例示的代理。
應(yīng)當(dāng)認(rèn)識到,通過利用例示毛發(fā)數(shù)據(jù)庫4804,直接處理大量數(shù)據(jù)集的嵌入式數(shù)據(jù)庫技術(shù)可被用于毛發(fā)實例化和生成。照此,通過結(jié)合例示毛發(fā)數(shù)據(jù)庫4804來利用例示模塊4802,提供了用于表示最終毛發(fā)的高度可縮放技術(shù),使得巨大數(shù)目的毛發(fā)可被有效且高效地例示。實際上,例示毛發(fā)數(shù)據(jù)庫4804非常順從于用于對大量最終毛發(fā)集例示的迭代樣式。
圖49是示出可由例示模塊4802在標(biāo)準(zhǔn)RAM存儲器(例如,存儲器內(nèi)的例示)或者例示毛發(fā)數(shù)據(jù)庫4804中的一者或兩者上實現(xiàn)的迭代樣式4920的框圖。基于迭代樣式4920的存儲器內(nèi)例示4922可用于在不需要大量毛發(fā)時對來自存儲器(例如RAM)的最終毛發(fā)實例化。但是,對于更大的毛發(fā)實例化任務(wù)(即,要求大的數(shù)據(jù)集),數(shù)據(jù)可被存儲在例示毛發(fā)數(shù)據(jù)庫4804。迭代樣式4920可被應(yīng)用于例示毛發(fā)數(shù)據(jù)庫4804以基于例示毛發(fā)數(shù)據(jù)庫中的用戶輸入(例如,所定義的局部區(qū)域、密度圖、毛發(fā)的總體密度等)在表面上對大量毛發(fā)(或者其他形狀,例如草、雜草、樹等)實例化。應(yīng)當(dāng)認(rèn)識到,依賴于任務(wù),可以使用RAM存儲器4922,可以使用例示毛發(fā)數(shù)據(jù)庫4804,或者可以使用這兩者。
如將要描述的,基于迭代樣式,可從例示毛發(fā)數(shù)據(jù)庫4804中容易地搜索和收集包括毛發(fā)位置、控制毛發(fā)權(quán)重和簇成員關(guān)系在內(nèi)的毛發(fā)屬性。這允許高的定制程度。例如,針對某個區(qū)域內(nèi)的所有毛發(fā)或者針對所有簇集中心毛發(fā)等來詢問例示毛發(fā)數(shù)據(jù)庫4804是容易的。
參考圖50,圖50是根據(jù)本發(fā)明一實施例的可存儲在例示毛發(fā)數(shù)據(jù)庫4804中的信息類型的示例。在一種實現(xiàn)方式中,例示毛發(fā)數(shù)據(jù)庫4804可以包括毛發(fā)1 N的數(shù)據(jù)。對于每根毛發(fā)1 N (由行表示),以下信息可按列形式包括在數(shù)據(jù)庫中囊位置5010、可變數(shù)目的控制毛發(fā)權(quán)重參數(shù)1 N (5020、 5022)以及給定毛發(fā)的簇成員關(guān)系5030。關(guān)于簇成員關(guān)系值5030,這可以是簇成員毛發(fā)的簇中心毛發(fā)的行索引、非簇成員毛發(fā)的空值或者簇中心毛發(fā)的負(fù)值。
利用包括先前描述的為最終毛發(fā)存儲的數(shù)據(jù)類型的先前描述的例示毛發(fā)數(shù)據(jù)庫4804,例示毛發(fā)數(shù)據(jù)庫4804允許巨大數(shù)目的毛發(fā)被有效且高效地例示。此外,例示毛發(fā)數(shù)據(jù)庫4804非常順從于用于基于輸入標(biāo)準(zhǔn)來收縮和例示大的最終集的迭代樣式。使用例示毛發(fā)數(shù)據(jù)庫允許大量的毛發(fā)以利用標(biāo)準(zhǔn)的存儲器內(nèi)的基于RAM的例示所不可能有的方式被有效地處理
50此后,通過內(nèi)插模塊1560、效果模塊1565等可以應(yīng)用動態(tài)效果,并且可以在毛發(fā)/皮毛流水線1500的顯示模塊1575處最終顯示毛發(fā)(或者如前所述的其他形狀——例如草、雜草、樹等)。
在本說明書中,給出了許多具體細(xì)節(jié)。但是,應(yīng)當(dāng)理解,本發(fā)明的實施例可在沒有這些具體細(xì)節(jié)的情況下實施。在其他實例中,公知的電路、結(jié)構(gòu)、軟件處理和技術(shù)未被示出,以免模糊對本說明書的理解。
本發(fā)明的各種實施例的部件可用硬件、軟件、固件、微碼或者其組合來實現(xiàn)。當(dāng)用軟件、固件或者微碼實現(xiàn)時,本發(fā)明的實施例的元件是用于執(zhí)行必要任務(wù)的代碼或者代碼段。代碼段可以表示過程、功能、子程序、程序、例程、子例程、模塊、軟件包、類或者指令、數(shù)據(jù)結(jié)構(gòu)或程序語句的任何組合。代碼段可通過傳送和/或接收信息、數(shù)據(jù)、自變量、參數(shù)或者存儲器內(nèi)容而耦合到另一代碼段或者硬件電路。信息、自變量、參數(shù)、數(shù)據(jù)等可經(jīng)由任何適當(dāng)?shù)氖侄味粋魉?、轉(zhuǎn)發(fā)或者發(fā)送,這些手段包括存儲器共享、消息傳送、令牌傳送、網(wǎng)絡(luò)傳輸?shù)取?br> 程序或代碼段可被存儲在處理器可讀的介質(zhì)中,或者通過傳輸介質(zhì)由體現(xiàn)為載波的計算機(jī)數(shù)據(jù)信號或者由載波所調(diào)制的信號而發(fā)送。"處理器可讀或可訪問的介質(zhì)"或者"機(jī)器可讀或可訪問的介質(zhì)"可以包括任何能夠存儲、傳輸或者轉(zhuǎn)移信息的介質(zhì)。機(jī)器可訪問的介質(zhì)的示例包括電子電路、半導(dǎo)體存儲器設(shè)備、只讀存儲器(ROM)、閃存、可擦除ROM(EROM)、軟盤、緊致盤(CD-ROM)、光盤、硬盤、光纖介質(zhì)、射頻(RF)鏈路等等。計算機(jī)數(shù)據(jù)信號可以包括任何可以在諸如電子網(wǎng)絡(luò)信道、光纖、空氣、電磁、RF鏈路等的傳輸介質(zhì)上傳播的信號。代碼段可被經(jīng)由諸如因特網(wǎng)、內(nèi)聯(lián)網(wǎng)等的計算機(jī)網(wǎng)絡(luò)而下載。機(jī)器可訪問的介質(zhì)可被體現(xiàn)為制造物品。機(jī)器可訪問的介質(zhì)可以包括數(shù)據(jù),這些數(shù)據(jù)在被機(jī)器訪問時,使機(jī)器執(zhí)行以下描述的操作。這里的術(shù)語"數(shù)據(jù)"指的是為了機(jī)器可讀目的而被編碼的任何類型信息。因此,其可以包括程序、代碼、數(shù)據(jù)、文件等。
更具體而言,本發(fā)明的實施例的全部或者一部分可通過軟件實現(xiàn)。軟件可以具有彼此耦合的若干模塊。 一個軟件模塊耦合到另一個模塊以接收變量、參數(shù)、自變量、指針等,和/或生成或傳送結(jié)果、更新的變量、指針等。軟件模塊也可以是與運行在平臺上的操作系統(tǒng)交互的軟件驅(qū)動器或者接口。軟件模塊也可以是用于配置、設(shè)置、初始化、發(fā)送和接收去往和來自硬件設(shè)備的數(shù)據(jù)的硬件驅(qū)動器。
盡管按照若干實施例描述了本發(fā)明,但是本領(lǐng)域技術(shù)人員將會認(rèn)識到,本發(fā)明不限于所描述的實施例,而是可以在所附權(quán)利要求的精神和范圍內(nèi),在進(jìn)行修改和變更的情況下來實施。因此,這種描述被認(rèn)為是說明性而非限制性的。
權(quán)利要求
1. 一種用于生成毛發(fā)的毛發(fā)流水線,包括表面定義模塊,用于定義表面和控制毛發(fā);以及毛發(fā)運動合成器模塊,用于組合與所述控制毛發(fā)和所述表面相關(guān)聯(lián)的不同控制毛發(fā)曲線形狀,該毛發(fā)運動合成器模塊用于生成定義靜態(tài)控制毛發(fā)曲線形狀的靜態(tài)節(jié)點;生成定義動畫控制毛發(fā)曲線形狀的動畫節(jié)點;以及將所述靜態(tài)節(jié)點的靜態(tài)控制毛發(fā)曲線形狀與所述動畫節(jié)點的動畫控制毛發(fā)曲線形狀組合,以產(chǎn)生用于所述控制毛發(fā)的復(fù)合控制毛發(fā)曲線形狀。
2. 如權(quán)利要求1所述的毛發(fā)流水線,其中,所述毛發(fā)運動合成器模塊 還生成混合節(jié)點,該混合節(jié)點用于定義混合因子參數(shù),該混合因子參數(shù)與 被分配給在所述靜態(tài)節(jié)點和動態(tài)節(jié)點的控制毛發(fā)曲線形狀的組合期間所利 用的所述靜態(tài)節(jié)點的靜態(tài)控制毛發(fā)曲線形狀和所述動畫節(jié)點的動畫控制毛 發(fā)曲線形狀的權(quán)重相對應(yīng)。
3. 如權(quán)利要求2所述的毛發(fā)流水線,其中,所述靜態(tài)節(jié)點的靜態(tài)控制 毛發(fā)曲線形狀被以旋轉(zhuǎn)方式與所述動畫節(jié)點的動畫控制毛發(fā)曲線形狀相結(jié) 合。
4. 如權(quán)利要求2所述的毛發(fā)流水線,其中,所述靜態(tài)節(jié)點的靜態(tài)控制 毛發(fā)曲線形狀被以定位方式與所述動畫節(jié)點的動畫控制毛發(fā)曲線形狀相結(jié) 合。
5. 如權(quán)利要求2所述的毛發(fā)流水線,其中,所述混合節(jié)點還定義混合 球,用于將不同的混合因子參數(shù)分配給所述控制毛發(fā)的不同部分。
6. 如權(quán)利要求1所述的毛發(fā)流水線,其中,所述動畫節(jié)點包括體積節(jié) 點,該體積節(jié)點用于定義關(guān)于多根控制毛發(fā)的凸起外殼,該體積節(jié)點是可 修改的以使所述多根控制毛發(fā)偏移。
7. 如權(quán)利要求1所述的毛發(fā)流水線,其中,所述動畫節(jié)點包括超級毛 發(fā)節(jié)點,該超級毛發(fā)節(jié)點用于定義控制毛發(fā)曲線形狀,其中多根控制毛發(fā)被修改以接近所述超級毛發(fā)節(jié)點的控制毛發(fā)曲線形狀。
8. 如權(quán)利要求7所述的毛發(fā)流水線,還包括與所述超級毛發(fā)節(jié)點相關(guān) 聯(lián)的權(quán)重參數(shù),其中所述多根控制毛發(fā)與所述超級毛發(fā)節(jié)點的控制毛發(fā)曲 線形狀的接近程度是基于所述權(quán)重參數(shù)的。
9. 如權(quán)利要求8所述的毛發(fā)流水線,還包括混合球,該混合球用于將不同的權(quán)重參數(shù)分配給所述多根控制毛發(fā)中的一根或多根控制毛發(fā)的不同 部分。
10. —種用于生成毛發(fā)的方法,包括 定義表面和控制毛發(fā);生成用于定義靜態(tài)控制毛發(fā)曲線形狀的靜態(tài)節(jié)點; 生成用于定義動畫控制毛發(fā)曲線形狀的動畫節(jié)點;將所述靜態(tài)節(jié)點的靜態(tài)控制毛發(fā)曲線形狀與所述動畫節(jié)點的動畫控制 毛發(fā)曲線形狀組合,以產(chǎn)生用于所述控制毛發(fā)的復(fù)合控制毛發(fā)曲線形狀。
11. 如權(quán)利要求IO所述的方法,還包括生成混合節(jié)點,該混合節(jié)點用 于定義混合因子參數(shù),該混合因子參數(shù)與被分配給在所述靜態(tài)節(jié)點和動態(tài) 節(jié)點的控制毛發(fā)曲線形狀的組合期間所利用的所述靜態(tài)節(jié)點的靜態(tài)控制毛 發(fā)曲線形狀和所述動畫節(jié)點的動畫控制毛發(fā)曲線形狀的權(quán)重相對應(yīng)。
12. 如權(quán)利要求11所述的方法,其中,所述靜態(tài)節(jié)點的靜態(tài)控制毛發(fā) 曲線形狀被以旋轉(zhuǎn)方式與所述動畫節(jié)點的動畫控制毛發(fā)曲線形狀相結(jié)合。
13. 如權(quán)利要求11所述的方法,其中,所述靜態(tài)節(jié)點的靜態(tài)控制毛發(fā) 曲線形狀被以定位方式與所述動畫節(jié)點的動畫控制毛發(fā)曲線形狀相結(jié)合。
14. 如權(quán)利要求11所述的方法,還包括定義混合球,該混合球用于將不同的混合因子參數(shù)分配給所述控制毛發(fā)的不同部分。
15. 如權(quán)利要求IO所述的方法,其中,所述動畫節(jié)點包括體積節(jié)點,該體積節(jié)點用于定義關(guān)于多根控制毛發(fā)的凸起外殼,該體積節(jié)點是可修改 的以使所述多根控制毛發(fā)偏移。
16. 如權(quán)利要求IO所述的方法,其中,所述動畫節(jié)點包括超級毛發(fā)節(jié) 點,該超級毛發(fā)節(jié)點用于定義控制毛發(fā)曲線形狀,其中多根控制毛發(fā)被修 改以接近所述超級毛發(fā)節(jié)點的控制毛發(fā)曲線形狀。
17. 如權(quán)利要求16所述的方法,還包括分配與所述超級毛發(fā)節(jié)點相關(guān) 聯(lián)的權(quán)重參數(shù),其中所述多根控制毛發(fā)與所述超級毛發(fā)節(jié)點的控制毛發(fā)曲 線形狀的接近程度是基于所述權(quán)重參數(shù)的。
18. 如權(quán)利要求17所述的方法,還包括定義混合球,該混合球用于將不同的權(quán)重參數(shù)分配給所述多根控制毛發(fā)中的一根或多根控制毛發(fā)的不同
19. 一種用于生成毛發(fā)的毛發(fā)流水線,包括 表面定義模塊,用于定義表面;以及優(yōu)化模塊,用于判斷是否將在所述表面上呈遞毛發(fā),所述優(yōu)化模塊用于為所述毛發(fā)確定大小量度;將第一密度曲線應(yīng)用于為所述毛發(fā)確定的大小量度以生成密度倍數(shù) 值;以及基于所述密度倍數(shù)值,判斷是否呈遞所述毛發(fā)。
20. 如權(quán)利要求19所述的毛發(fā)流水線,其中,所述密度倍數(shù)值被進(jìn)一 步與隨機(jī)數(shù)相比較以判斷是否呈遞所述毛發(fā)。
21. 如權(quán)利要求19所述的毛發(fā)流水線,其中,為所述毛發(fā)確定大小量 度的步驟包括計算所述毛發(fā)在規(guī)格化設(shè)備坐標(biāo)(NDC)空間中的長度。
22. 如權(quán)利要求19所述的毛發(fā)流水線,其中,第一寬度曲線被應(yīng)用于 所述毛發(fā)的大小量度以調(diào)整所述毛發(fā)的寬度。
23. 如權(quán)利要求19所述的毛發(fā)流水線,其中,所述優(yōu)化模塊還基于所 述毛發(fā)的毛發(fā)根位置從第一幀到第二幀所移動的距離來確定速度空間量 度。
24. 如權(quán)利要求23所述的毛發(fā)流水線,其中,第二密度曲線被應(yīng)用于 所述毛發(fā)的速度空間量度以生成所述密度倍數(shù)值。
25. 如權(quán)利要求24所述的毛發(fā)流水線,其中,第一寬度曲線被應(yīng)用于 所述毛發(fā)的大小量度并且第二寬度曲線被應(yīng)用于所述毛發(fā)的速度空間量 度,以生成寬度倍數(shù)值來調(diào)整所述毛發(fā)的寬度。
26. —種用于判斷毛發(fā)是否將被呈遞的方法,包括為毛發(fā)確定大小量度;將第一密度曲線應(yīng)用于為所述毛發(fā)確定的大小量度以生成密度倍數(shù) 值;以及基于所述密度倍數(shù)值來判斷是否呈遞所述毛發(fā)。
27. 如權(quán)利要求26所述的方法,還包括將所述密度倍數(shù)值與隨機(jī)數(shù)相 比較以判斷是否呈遞所述毛發(fā)。
28. 如權(quán)利要求26所述的方法,其中,為所述毛發(fā)確定大小量度的步 驟包括計算所述毛發(fā)在規(guī)格化設(shè)備坐標(biāo)(NDC)空間中的長度。
29. 如權(quán)利要求26所述的方法,還包括將第一寬度曲線應(yīng)用于所述毛 發(fā)的大小量度以調(diào)整所述毛發(fā)的寬度。
30. 如權(quán)利要求26所述的方法,還包括基于所述毛發(fā)的毛發(fā)根位置從 第一幀到第二幀所移動的距離來確定速度空間量度。
31. 如權(quán)利要求30所述的方法,還包括將第二密度曲線應(yīng)用于所述毛 發(fā)的速度空間量度以生成所述密度倍數(shù)值。
32. 如權(quán)利要求31所述的方法,還包括將第一寬度曲線應(yīng)用于所述毛 發(fā)的大小量度并且將第二寬度曲線應(yīng)用于所述毛發(fā)的速度空間量度,以生 成用于調(diào)整所述毛發(fā)的寬度的寬度倍數(shù)值。
全文摘要
毛發(fā)流水線利用表面定義模塊(50)來定義表面和控制毛發(fā),并且毛發(fā)運動合成器模塊(55)組合與控制毛發(fā)和表面相關(guān)聯(lián)的不同控制毛發(fā)曲線形狀。具體而言,毛發(fā)運動合成器模塊生成定義靜態(tài)控制毛發(fā)曲線形狀的靜態(tài)節(jié)點;生成定義動畫控制毛發(fā)曲線形狀的動畫節(jié)點;并且將靜態(tài)節(jié)點的靜態(tài)控制毛發(fā)曲線形狀與動畫節(jié)點的動畫控制毛發(fā)曲線毛發(fā)形狀組合,以產(chǎn)生用于控制毛發(fā)的復(fù)合控制毛發(fā)曲線形狀。
文檔編號G06T13/40GK101512633SQ200780033172
公開日2009年8月19日 申請日期2007年7月24日 優(yōu)先權(quán)日2006年7月24日
發(fā)明者克林特·川, 弗蘭克斯·查德外恩, 格斯塔弗·梅里徹, 阿明·沃爾特·布朗德林 申請人:索尼株式會社;索尼電影娛樂公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
镇原县| 山阳县| 南澳县| 崇信县| 通州区| 西青区| 砀山县| 台安县| 胶南市| 沅江市| 英德市| 澄城县| 阿克| 台北县| 鄯善县| 恭城| 留坝县| 当雄县| 萨迦县| 古丈县| 新干县| 萍乡市| 溧阳市| 牡丹江市| 兴城市| 麦盖提县| 德江县| 含山县| 石阡县| 曲周县| 扶风县| 通城县| 长治县| 会理县| 连南| 安化县| 太白县| 成安县| 二连浩特市| 和田县| 乌苏市|