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