本公開涉及計(jì)算機(jī)圖形學(xué)技術(shù)領(lǐng)域,具體而言,涉及一種虛擬對(duì)象毛發(fā)處理方法、虛擬對(duì)象毛發(fā)處理裝置、計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)以及電子設(shè)備。
背景技術(shù):
隨著圖形學(xué)以及計(jì)算機(jī)硬件的飛速發(fā)展,用戶對(duì)于游戲品質(zhì)要求越來越高;原本的畫面制作較為粗糙的游戲已經(jīng)很難在市場(chǎng)中存活,取而代之的是每一幀畫面都極為精細(xì)的精品游戲。為了使每一幀畫面都極為精細(xì),需要從各種細(xì)節(jié)去挖掘、提升游戲中各個(gè)虛擬對(duì)象的每一幀畫面的質(zhì)量。
毛發(fā)作為虛擬對(duì)象身體中重要的一個(gè)組成部分,可以很好的反應(yīng)虛擬對(duì)象的特性,因而眾多游戲開發(fā)者也在虛擬對(duì)象毛發(fā)的處理上花費(fèi)了很多精力;但是,由于效率和技術(shù)的限制,使得大部分游戲中虛擬對(duì)象的毛發(fā)都是使用片狀的網(wǎng)格模型并配合透明紋理來進(jìn)行制作以及模擬,但是利用該方法制作的毛發(fā)與現(xiàn)實(shí)中的毛發(fā)存在很大的差別,因此也大大的降低了用戶體驗(yàn)以及畫面的美感。
需要說明的是,在上述背景技術(shù)部分公開的信息僅用于加強(qiáng)對(duì)本公開的背景的理解,因此可以包括不構(gòu)成對(duì)本領(lǐng)域普通技術(shù)人員已知的現(xiàn)有技術(shù)的信息。
技術(shù)實(shí)現(xiàn)要素:
本公開的目的在于提供一種虛擬對(duì)象毛發(fā)處理方法、虛擬對(duì)象毛發(fā)處理裝置、計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)以及電子設(shè)備,進(jìn)而至少在一定程度上克服由于相關(guān)技術(shù)的限制和缺陷而導(dǎo)致的一個(gè)或者多個(gè)問題。
根據(jù)本公開的一個(gè)方面,提供一種虛擬對(duì)象毛發(fā)處理方法,包括:
建立虛擬對(duì)象的毛發(fā)模型,所述毛發(fā)模型包含多個(gè)主副發(fā)結(jié)構(gòu),其中,每個(gè)所述主副發(fā)結(jié)構(gòu)包含一根主發(fā)和與所述主發(fā)關(guān)聯(lián)的多根副發(fā);
根據(jù)預(yù)設(shè)參數(shù)對(duì)所述主發(fā)的位置進(jìn)行模擬,并根據(jù)所述毛發(fā)模型確定每個(gè)所述主副發(fā)結(jié)構(gòu)中副發(fā)與主發(fā)的相對(duì)位置;
根據(jù)每個(gè)所述主副發(fā)結(jié)構(gòu)中主發(fā)的位置以及每個(gè)所述主副發(fā)結(jié)構(gòu)中副發(fā)與主發(fā)的相對(duì)位置確定所述副發(fā)的位置;
當(dāng)所述主發(fā)以及所述副發(fā)的位置確定后,對(duì)所述虛擬對(duì)象毛發(fā)進(jìn)行渲染。
在本公開的一種示例性實(shí)施例中,在建立虛擬對(duì)象的毛發(fā)模型后還包括:
建立各所述主發(fā)的局部坐標(biāo)系并根據(jù)各所述預(yù)設(shè)參數(shù)以及各所述主發(fā)的局部坐標(biāo)系建立各所述主發(fā)與各所述副發(fā)的局部坐標(biāo)關(guān)系;
根據(jù)各所述主發(fā)與各所述副發(fā)的局部坐標(biāo)關(guān)系確定各所述主發(fā)與各所述副發(fā)的局部相對(duì)位置。
在本公開的一種示例性實(shí)施例中,建立各所述主發(fā)的局部坐標(biāo)系包括:
根據(jù)各所述主發(fā)的長(zhǎng)度為各所述主發(fā)配置多個(gè)第一參考端點(diǎn);
選取任一所述第一參考端點(diǎn)以及與任一所述參考端點(diǎn)相鄰的另一所述參考端點(diǎn)之間的線段作為x軸;
選取任一固定方向向量與所述x軸的方向向量進(jìn)行叉乘得到第一叉乘結(jié)果并判斷所述第一叉乘結(jié)果是否為零;
在判斷所述第一叉乘結(jié)果不為零時(shí),選取所述第一叉乘結(jié)果的方向向量為y軸;
將所述x軸的方向向量與所述y軸的方向向量進(jìn)行叉乘得到第二叉乘結(jié)果并選取所述第二叉乘結(jié)果的方向向量為z軸;
根據(jù)所述x軸、y軸以及z軸建立所述主發(fā)的局部坐標(biāo)系。
在本公開的一種示例性實(shí)施例中,根據(jù)各所述預(yù)設(shè)參數(shù)以及各所述主發(fā)的局部坐標(biāo)系建立各所述主發(fā)與各所述副發(fā)的局部坐標(biāo)關(guān)系包括:
根據(jù)各所述副發(fā)的長(zhǎng)度為各所述副發(fā)配置多個(gè)第二參考端點(diǎn);
根據(jù)各所述預(yù)設(shè)參數(shù)以及各所述主發(fā)的局部坐標(biāo)系建立各所述第一參考端點(diǎn)與各所述第二參考端點(diǎn)的局部坐標(biāo)關(guān)系。
在本公開的一種示例性實(shí)施例中,所述虛擬對(duì)象毛發(fā)處理方法還包括:
將所述虛擬對(duì)象的毛發(fā)分為多個(gè)待處理組并為各所述待處理組配置約束參數(shù);
其中,各所述待處理組中包括多個(gè)所述主副發(fā)結(jié)構(gòu)。
在本公開的一種示例性實(shí)施例中,為各所述待處理組配置約束參數(shù)包括:
根據(jù)各所述待處理組與所述虛擬對(duì)象的皮膚的距離為各所述待處理組配置約束參數(shù)。
在本公開的一種示例性實(shí)施例中,各所述待處理組中還包括多個(gè)獨(dú)立模擬的自由發(fā);其中,所述虛擬對(duì)象毛發(fā)處理方法還包括:
為各所述自由發(fā)配置自由發(fā)參數(shù)并根據(jù)各所述自由發(fā)參數(shù)對(duì)各所述自由發(fā)的位置進(jìn)行模擬。
在本公開的一種示例性實(shí)施例中,對(duì)所述虛擬對(duì)象毛發(fā)進(jìn)行渲染包括:
將所述虛擬對(duì)象的毛發(fā)分為多個(gè)區(qū)域并利用多種顏色分別對(duì)各所述區(qū)域的毛發(fā)進(jìn)行渲染。
在本公開的一種示例性實(shí)施例中,所述虛擬對(duì)象毛發(fā)處理方法還包括:為所述虛擬對(duì)象的預(yù)設(shè)骨骼部位綁定碰撞體以使得當(dāng)所述虛擬對(duì)象的毛發(fā)與所述碰撞體接觸時(shí)實(shí)現(xiàn)所述虛擬對(duì)象的毛發(fā)與所述預(yù)設(shè)骨骼部位的交互。
根據(jù)本公開的一個(gè)方面,提供一種虛擬對(duì)象毛發(fā)處理裝置,包括:
主副發(fā)結(jié)構(gòu)模塊,用于建立虛擬對(duì)象的毛發(fā)模型,所述毛發(fā)模型包含多個(gè)主副發(fā)結(jié)構(gòu),其中,每個(gè)所述主副發(fā)結(jié)構(gòu)包含一根主發(fā)和與所述主發(fā)關(guān)聯(lián)的多根副發(fā);
模擬模塊,用于根據(jù)預(yù)設(shè)參數(shù)對(duì)所述主發(fā)的位置進(jìn)行模擬,并根據(jù)所述毛發(fā)模型確定每個(gè)所述主副發(fā)結(jié)構(gòu)中副發(fā)與主發(fā)的相對(duì)位置;
毛發(fā)位置確定模塊,用于根據(jù)每個(gè)所述主副發(fā)結(jié)構(gòu)中主發(fā)的位置以及每個(gè)所述主副發(fā)結(jié)構(gòu)中副發(fā)與主發(fā)的相對(duì)位置確定所述副發(fā)的位置;
渲染模塊,用于當(dāng)所述主發(fā)以及所述副發(fā)的位置確定后,對(duì)所述虛擬對(duì)象毛發(fā)進(jìn)行渲染。
根據(jù)本公開的一個(gè)方面,提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述任意一項(xiàng)所述的虛擬對(duì)象毛發(fā)處理方法。
根據(jù)本公開的一個(gè)方面,提供一種電子設(shè)備,包括:
處理器;以及
存儲(chǔ)器,用于存儲(chǔ)所述處理器的可執(zhí)行指令;
其中,所述處理器配置為經(jīng)由執(zhí)行所述可執(zhí)行指令來執(zhí)行上述任意一項(xiàng)所述的虛擬對(duì)象毛發(fā)處理方法。
本公開一種虛擬對(duì)象毛發(fā)處理方法及裝置,通過將虛擬對(duì)象的毛發(fā)模型分為多個(gè)主副發(fā)結(jié)構(gòu);然后根據(jù)各預(yù)設(shè)參數(shù)對(duì)各主發(fā)的位置進(jìn)行模擬,并根據(jù)毛發(fā)模型確定每個(gè)主副發(fā)結(jié)構(gòu)中副發(fā)與主發(fā)的相對(duì)位置;最后根據(jù)每個(gè)主發(fā)的位置以及每個(gè)副發(fā)與主發(fā)的相對(duì)位置確定副發(fā)的位置并對(duì)毛發(fā)進(jìn)行渲染;一方面,通過將虛擬對(duì)象的毛發(fā)模型分為多個(gè)主副發(fā)結(jié)構(gòu),實(shí)現(xiàn)了虛擬對(duì)象毛發(fā)的成束模擬;另一方面,通過成束模擬使得當(dāng)該束毛發(fā)的主發(fā)運(yùn)動(dòng)時(shí),副發(fā)可以一起相對(duì)靜止的運(yùn)動(dòng),實(shí)現(xiàn)了當(dāng)虛擬對(duì)象的毛發(fā)為卷發(fā)時(shí),該束卷發(fā)在運(yùn)動(dòng)中也可以保持原有卷發(fā)的造型,提升了虛擬對(duì)象毛發(fā)的真實(shí)性,提升了用戶體驗(yàn);進(jìn)一步的,通過預(yù)設(shè)參數(shù)對(duì)主發(fā)進(jìn)行位置模擬并根據(jù)毛發(fā)模型確定每個(gè)主副發(fā)結(jié)構(gòu)中副發(fā)與主發(fā)的相對(duì)位置,使得副發(fā)的位置相對(duì)于主發(fā)的位置可以保持不變;避免出現(xiàn)由于運(yùn)動(dòng)幅度過大而出現(xiàn)的毛發(fā)拉長(zhǎng)的情況;更進(jìn)一步的,通過為主發(fā)預(yù)設(shè)不同的參數(shù),當(dāng)虛擬對(duì)象的毛發(fā)長(zhǎng)度較長(zhǎng)時(shí),也可以支持整束毛發(fā)的模擬。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本公開。
附圖說明
此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本公開的實(shí)施例,并與說明書一起用于解釋本公開的原理。顯而易見地,下面描述中的附圖僅僅是本公開的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1示意性示出一種頭發(fā)處理方法的流程圖。
圖2示意性示出一種頭發(fā)效果示例圖。
圖3示意性示出一種卷發(fā)效果示例圖。
圖4示意性示出一種虛擬對(duì)象毛發(fā)處理方法的流程圖。
圖5示意性示出一種主副發(fā)結(jié)構(gòu)的框圖。
圖6示意性示出一種主副發(fā)結(jié)構(gòu)的示例圖。
圖7示意性示出另一種虛擬對(duì)象毛發(fā)處理方法的流程圖。
圖8示意性示出一種建立主發(fā)的局部坐標(biāo)系的方法流程圖。
圖9示意性示出根據(jù)主發(fā)的局部坐標(biāo)系建立主發(fā)與各副發(fā)的局部坐標(biāo)關(guān)系的方法流程圖。
圖10示意性示出一種主發(fā)以及副發(fā)的參考端點(diǎn)的示例圖。
圖11示意性示出一種局部坐標(biāo)系的示例圖。
圖12示意性示出一種渲染效果示例圖。
圖13示意性示出另一種渲染效果的示例圖。
圖14示意性示出一種預(yù)設(shè)骨骼部位與毛發(fā)交互的示例圖。
圖15示意性示出一種頭發(fā)效果對(duì)比示例圖。
圖16示意性示出一種虛擬對(duì)象毛發(fā)處理裝置的框圖。
圖17示意性示出一種實(shí)現(xiàn)虛擬對(duì)象毛發(fā)處理方法的電子設(shè)備示例圖。
圖18示意性示出一種實(shí)現(xiàn)虛擬對(duì)象毛發(fā)處理方法的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的示例圖。
具體實(shí)施方式
現(xiàn)在將參考附圖更全面地描述示例實(shí)施方式。然而,示例實(shí)施方式能夠以多種形式實(shí)施,且不應(yīng)被理解為限于在此闡述的范例;相反,提供這些實(shí)施方式使得本公開將更加全面和完整,并將示例實(shí)施方式的構(gòu)思全面地傳達(dá)給本領(lǐng)域的技術(shù)人員。所描述的特征、結(jié)構(gòu)或特性可以以任何合適的方式結(jié)合在一個(gè)或更多實(shí)施方式中。在下面的描述中,提供許多具體細(xì)節(jié)從而給出對(duì)本公開的實(shí)施方式的充分理解。然而,本領(lǐng)域技術(shù)人員將意識(shí)到,可以實(shí)踐本公開的技術(shù)方案而省略所述特定細(xì)節(jié)中的一個(gè)或更多,或者可以采用其它的方法、組元、裝置、步驟等。在其它情況下,不詳細(xì)示出或描述公知技術(shù)方案以避免喧賓奪主而使得本公開的各方面變得模糊。
此外,附圖僅為本公開的示意性圖解,并非一定是按比例繪制。圖中相同的附圖標(biāo)記表示相同或類似的部分,因而將省略對(duì)它們的重復(fù)描述。附圖中所示的一些方框圖是功能實(shí)體,不一定必須與物理或邏輯上獨(dú)立的實(shí)體相對(duì)應(yīng)。可以采用軟件形式來實(shí)現(xiàn)這些功能實(shí)體,或在一個(gè)或多個(gè)硬件模塊或集成電路中實(shí)現(xiàn)這些功能實(shí)體,或在不同網(wǎng)絡(luò)和/或處理器裝置和/或微控制器裝置中實(shí)現(xiàn)這些功能實(shí)體。
在一種毛發(fā)處理方法中,首先對(duì)虛擬對(duì)象的毛發(fā)進(jìn)行單根建模,例如可以利用amd(超微半導(dǎo)體公司,advancedmicrodevices,inc.)的tressfx技術(shù)或者nvida(英偉達(dá),nvidiacorporation)的hairworks技術(shù)對(duì)虛擬對(duì)象的毛發(fā)進(jìn)行單根建模。通過對(duì)虛擬對(duì)象的毛發(fā)進(jìn)行單根建模,使得虛擬對(duì)象的毛發(fā)的整體效果有了很好的改變。例如,在游戲《古墓麗影9》中,女主角勞拉的頭發(fā)使用了tressfx的技術(shù)進(jìn)行處理;在游戲《巫師3》中,男主角的頭發(fā)使用了hairworks的技術(shù)進(jìn)行處理。
對(duì)虛擬對(duì)象的毛發(fā)進(jìn)行單根建模這一技術(shù),在很早之前就由daldegan等人提出,并將該方法命名為發(fā)線模型建模;但是由于硬件以及渲染技術(shù)的限制,沒能很好地將該項(xiàng)技術(shù)運(yùn)用到游戲中。但是隨著硬件以及渲染技術(shù)的發(fā)展,上述發(fā)線模型建模方法已經(jīng)得到了很好運(yùn)用,典型代表就是amd的tressfx和nvidia的hairworks。
其中,利用tressfx技術(shù)處理虛擬對(duì)象的毛發(fā)可以包括以下步驟:建模,模擬和渲染。參考圖1所示,可以首先在maya(瑪雅)等技術(shù)軟件中進(jìn)行單根毛發(fā)的建模,然后將制作好的毛發(fā)數(shù)據(jù)導(dǎo)出成編輯器能夠讀取的格式并進(jìn)行一些毛發(fā)相關(guān)的參數(shù)配置后,在游戲引擎中對(duì)虛擬對(duì)象的整體毛發(fā)進(jìn)行模擬,最后再對(duì)虛擬對(duì)象的毛發(fā)進(jìn)行渲染。圖2中對(duì)maya中的建模效果進(jìn)行了展示。其中,圖(a)中展示的是整體效果;圖(b)是局部的頭發(fā)效果,b為建模的單根頭發(fā);由圖(b)可以看出在該模型中,采用的是曲線進(jìn)行單根建模。
但是,在maya建好的毛發(fā)模型是靜態(tài)的。由于游戲角色在游戲中是會(huì)走動(dòng),并且還會(huì)有風(fēng)等外力會(huì)對(duì)毛發(fā)產(chǎn)生影響,因此毛發(fā)還需要進(jìn)行動(dòng)態(tài)模擬以達(dá)到上述的動(dòng)態(tài)效果。動(dòng)態(tài)毛發(fā)模擬可以兼顧以下兩個(gè)方面:首先,需要一定程度上保留原有毛發(fā)的形態(tài);其次,需要有動(dòng)態(tài)的感覺。為此,tressfx提供了相關(guān)參數(shù)來對(duì)毛發(fā)模擬進(jìn)行約束,可以包括:全局形狀約束和局部形狀約束。其中,全局形狀約束可以被定義為:運(yùn)動(dòng)的毛發(fā)對(duì)只進(jìn)行剛體運(yùn)動(dòng)時(shí)的保持程度;局部形狀約束可以被定義為:?jiǎn)胃l(fā)對(duì)原始彎曲程度的保持程度。因此可以理解的是,全局形狀約束更關(guān)注毛發(fā)的位置保持能力,局部形狀約束更關(guān)注毛發(fā)的旋轉(zhuǎn)保持能力。因而對(duì)于渲染一個(gè)對(duì)象而言,知道位置和旋轉(zhuǎn)也就定下了對(duì)象的形態(tài)。
雖然tressfx的模擬效果使得虛擬對(duì)象栩栩如生,備受游戲用戶好評(píng)。然而,tressfx對(duì)簡(jiǎn)單的短發(fā)模擬效果較好。例如,《古墓麗影9》中使用該技術(shù)的女主角的毛發(fā)就是短發(fā);但是,一旦遇到比較復(fù)雜的帶有一定發(fā)型的毛發(fā)(例如是長(zhǎng)發(fā)或者卷發(fā)時(shí)),表現(xiàn)效果就不盡如人意(參考圖3(a)所示的方框的卷發(fā),在運(yùn)動(dòng)的過程中它們往往需要一起相對(duì)靜止地運(yùn)動(dòng),而不是得到圖3中(b)的結(jié)果,已經(jīng)完全失去了原來卷發(fā)的形狀)。然而在大多數(shù)游戲中,人物的造型可能是多種多樣的,尤其對(duì)于女性角色來說,長(zhǎng)發(fā)和卷發(fā)更是常見,這大大限制了tressfx的使用范圍,使得其無法大面積被使用。
本示例實(shí)施方式中首先提供了一種虛擬對(duì)象頭發(fā)處理方法。參考圖4所示,該虛擬對(duì)象頭發(fā)處理方法可以包括以下步驟:
步驟s410.建立虛擬對(duì)象的毛發(fā)模型,所述毛發(fā)模型包含多個(gè)主副發(fā)結(jié)構(gòu),其中,每個(gè)所述主副發(fā)結(jié)構(gòu)包含一根主發(fā)和與所述主發(fā)關(guān)聯(lián)的多根副發(fā)。
步驟s420.根據(jù)預(yù)設(shè)參數(shù)對(duì)所述主發(fā)的位置進(jìn)行模擬,并根據(jù)所述毛發(fā)模型確定每個(gè)所述主副發(fā)結(jié)構(gòu)中副發(fā)與主發(fā)的相對(duì)位置。
步驟s430.根據(jù)每個(gè)所述主副發(fā)結(jié)構(gòu)中主發(fā)的位置以及每個(gè)所述主副發(fā)結(jié)構(gòu)中副發(fā)與主發(fā)的相對(duì)位置確定所述虛擬對(duì)象毛發(fā)的位置。
步驟s440.當(dāng)所述主發(fā)以及所述副發(fā)的位置確定后,對(duì)所述虛擬對(duì)象毛發(fā)進(jìn)行渲染。
在上述虛擬對(duì)象處理方法中,一方面,通過將虛擬對(duì)象的毛發(fā)模型分為多個(gè)主副發(fā)結(jié)構(gòu),實(shí)現(xiàn)了虛擬對(duì)象毛發(fā)的成束模擬;另一方面,通過成束模擬使得當(dāng)該束毛發(fā)的主發(fā)運(yùn)動(dòng)時(shí),副發(fā)可以一起相對(duì)靜止的運(yùn)動(dòng),實(shí)現(xiàn)了當(dāng)虛擬對(duì)象的毛發(fā)為卷發(fā)時(shí),該束卷發(fā)在運(yùn)動(dòng)中也可以保持原有卷發(fā)的造型,提升了虛擬對(duì)象毛發(fā)的真實(shí)性,提升了用戶體驗(yàn);進(jìn)一步的,通過預(yù)設(shè)參數(shù)對(duì)主發(fā)進(jìn)行位置模擬并根據(jù)毛發(fā)模型確定每個(gè)主副發(fā)結(jié)構(gòu)中副發(fā)與主發(fā)的相對(duì)位置,使得副發(fā)的位置相對(duì)于主發(fā)的位置可以保持不變;避免出現(xiàn)由于運(yùn)動(dòng)幅度過大而出現(xiàn)的毛發(fā)拉長(zhǎng)的情況;更進(jìn)一步的,通過為主發(fā)預(yù)設(shè)不同的參數(shù),當(dāng)虛擬對(duì)象的毛發(fā)長(zhǎng)度較長(zhǎng)時(shí),也可以支持整束毛發(fā)的模擬。
下面將對(duì)本示例實(shí)施方式中上述虛擬對(duì)象處理方法中的各步驟進(jìn)行詳細(xì)的解釋。
在步驟s410中,建立虛擬對(duì)象的毛發(fā)模型,所述毛發(fā)模型包含多個(gè)主副發(fā)結(jié)構(gòu),其中,每個(gè)所述主副發(fā)結(jié)構(gòu)包含一根主發(fā)和與所述主發(fā)關(guān)聯(lián)的多根副發(fā)。
在本示例實(shí)施方式中,上述虛擬對(duì)象可以包括虛擬人物或者虛擬動(dòng)物,也可以包括游戲中其他具有毛發(fā)的生物(例如怪物等等),本示例實(shí)施方式對(duì)此不做特殊限制。具體而言:
參考圖5所示,可以首先通過maya(瑪雅)等技術(shù)軟件建立上述虛擬對(duì)象(例如游戲中的女主角a)的毛發(fā)模型(例如毛發(fā)模型為長(zhǎng)發(fā)),然后將毛發(fā)模型分為多個(gè)主副發(fā)結(jié)構(gòu)(例如可以是將女主角a的長(zhǎng)發(fā)分為很多縷),每個(gè)主副發(fā)結(jié)構(gòu)都可以包括一根主發(fā)以及與主發(fā)關(guān)聯(lián)的多根副發(fā)(參考圖6所示);然后為主副發(fā)結(jié)構(gòu)中的各主發(fā)配置預(yù)設(shè)參數(shù)。此處需要說明的是,設(shè)置毛發(fā)模型的主副發(fā)結(jié)構(gòu)時(shí),各主副發(fā)結(jié)構(gòu)中主發(fā)與副發(fā)的相對(duì)位置也進(jìn)行了設(shè)置;參考圖6所示,對(duì)于一束卷發(fā)來說,可以設(shè)置其中的一根直發(fā)為主發(fā),然后設(shè)置多根卷發(fā)為副發(fā),然后設(shè)置各副發(fā)與主發(fā)的相對(duì)位置;此處可以理解的是,也可以選擇一根卷發(fā)作為主發(fā),其他的卷發(fā)作為副發(fā),本示例實(shí)施方式對(duì)此不做特殊限制。其中,各預(yù)設(shè)參數(shù)可以根據(jù)各主發(fā)的長(zhǎng)短來進(jìn)行配置,也可以根據(jù)各主發(fā)的形狀(卷發(fā)或直發(fā))來進(jìn)行配置,本示例實(shí)施方式對(duì)此不作特殊限制。
在步驟s420中,根據(jù)預(yù)設(shè)參數(shù)對(duì)所述主發(fā)的位置進(jìn)行模擬,并根據(jù)所述毛發(fā)模型確定每個(gè)所述主副發(fā)結(jié)構(gòu)中副發(fā)與主發(fā)的相對(duì)位置。
在本示例實(shí)施方式中,繼續(xù)參考圖6所示,根據(jù)上述預(yù)設(shè)參數(shù)對(duì)各主發(fā)的位置進(jìn)行模擬,當(dāng)主發(fā)的位置移動(dòng)時(shí),根據(jù)各主副發(fā)結(jié)構(gòu)中主發(fā)與副發(fā)的相對(duì)位置確定各主副發(fā)結(jié)構(gòu)中副發(fā)與主發(fā)的相對(duì)位置。此外,在本公開的其他示例性實(shí)施方式中,也可以通過其他的方式確定副發(fā)的位置,例如可以建立主副發(fā)坐標(biāo)系,然后根據(jù)主副發(fā)坐標(biāo)關(guān)系確定副發(fā)的位置,本示例實(shí)施方式對(duì)此不做特殊限制。
在步驟s430中,根據(jù)每個(gè)所述主副發(fā)結(jié)構(gòu)中主發(fā)的位置以及每個(gè)所述主副發(fā)結(jié)構(gòu)中副發(fā)與主發(fā)的相對(duì)位置確定所述副發(fā)的位置。詳細(xì)而言:
當(dāng)各主副發(fā)結(jié)構(gòu)中副發(fā)與主發(fā)的相對(duì)位置確定完成后,根據(jù)各主副發(fā)結(jié)構(gòu)中主發(fā)的位置以及副發(fā)與主發(fā)的相對(duì)位置確定副發(fā)的位置,當(dāng)所有副發(fā)的位置確定完成后,對(duì)整體毛發(fā)進(jìn)行渲染。
在步驟s440中,當(dāng)所述主發(fā)以及所述副發(fā)的位置確定后,對(duì)所述虛擬對(duì)象毛發(fā)進(jìn)行渲染。其中,對(duì)虛擬對(duì)象的毛發(fā)進(jìn)行渲染可以包括將所述虛擬對(duì)象的毛發(fā)分為多個(gè)區(qū)域并分別利用多種顏色對(duì)各所述區(qū)域的毛發(fā)進(jìn)行渲染。
在本示例實(shí)施方式中,上述多個(gè)區(qū)域可以包括三個(gè)區(qū)域(例如第一區(qū)域、第二區(qū)域以及第三區(qū)域等等),可以包括其他多個(gè)區(qū)域(例如第一區(qū)域、第二區(qū)域、...、第n區(qū)域),本示例實(shí)施方式對(duì)此不做特殊限制;上述多個(gè)顏色可以包括三組顏色(例如第一顏色、第二顏色以及第三顏色等等),也可以包括其他多組顏色(例如第一顏色、第二顏色、...、第n顏色等等),本示例實(shí)施方式對(duì)此不做特殊限制;其中,各組顏色可以相同也可以不同,各組顏色中可以包括一種顏色,也可以包括多種顏色相近的顏色,本示例實(shí)施方式對(duì)此不做特殊限制。詳細(xì)而言:
當(dāng)上述f點(diǎn)的位置對(duì)應(yīng)位置計(jì)算完成以后,將f點(diǎn)由原來的位置移動(dòng)到計(jì)算以后的位置;以此類推,當(dāng)主發(fā)的位置移動(dòng)以后,對(duì)各副發(fā)的位置進(jìn)行相應(yīng)的調(diào)整,保證了主副發(fā)的局部位置保持不變,使得主副發(fā)的形狀總是保持一致,實(shí)現(xiàn)了當(dāng)虛擬對(duì)象的毛發(fā)是卷發(fā)時(shí),也可以達(dá)到自然卷發(fā)的效果;進(jìn)一步的,當(dāng)各副發(fā)的位置調(diào)整完成后,首先將毛發(fā)以8:1:1(也可以是6:2:2或者其他比例,本示例實(shí)施方式對(duì)此不做特殊限制)的比例分為三個(gè)區(qū)域(可以按照頭部的區(qū)域進(jìn)行劃分,也可以按照頭發(fā)的長(zhǎng)短比例進(jìn)行劃分,本示例實(shí)施方式對(duì)此不作特殊限制),當(dāng)毛發(fā)的區(qū)域劃分完成后,然后使用3組顏色分別對(duì)毛發(fā)的各區(qū)域進(jìn)行渲染:從所有毛發(fā)中隨機(jī)選擇則80%的頭發(fā)使用第一組顏色,10%使用第二組顏色,另外10%使用第三組顏色。參考圖12所示,其中(a)圖使用單一的顏色,整體看起來很平,(b)圖混合了稍微淡一點(diǎn)的顏色,出現(xiàn)了一定的層次差異,(c)圖是使用更淡的顏色,層次差異更加明顯,但是對(duì)比太強(qiáng)烈也顯得突兀了。因此,可以根據(jù)實(shí)際需求,合理設(shè)置毛發(fā)顏色,使得滿足層次感的同時(shí)又不顯突兀即可;圖13也展示了一些多顏色變化能夠帶來的效果。
本公開還提供了另一種虛擬對(duì)象毛發(fā)處理方法。參考圖7所示,該虛擬對(duì)象毛發(fā)處理方法還可以包括步驟s710以及步驟s720。其中:
在步驟s710中,建立各所述主發(fā)的局部坐標(biāo)系并根據(jù)各所述預(yù)設(shè)參數(shù)以及各所述主發(fā)的局部坐標(biāo)系建立各所述主發(fā)與各所述副發(fā)的局部坐標(biāo)關(guān)系。參考圖8所示,建立各所述主發(fā)的局部坐標(biāo)系可以包括步驟s810至步驟s810至步驟s860。其中:
在步驟s810中,根據(jù)各所述主發(fā)的長(zhǎng)度為各所述主發(fā)配置多個(gè)第一參考端點(diǎn)。
在本示例實(shí)施方式中,參考圖10所示,可以根據(jù)各主發(fā)的長(zhǎng)度為各主發(fā)配置多個(gè)參考端點(diǎn)并利用第一標(biāo)識(shí)(例如可以是“●”)進(jìn)行標(biāo)記。此外,在本示例的其他實(shí)施方式中,上述主發(fā)的參考端點(diǎn)也可以以其他標(biāo)識(shí)進(jìn)行標(biāo)記,例如可以是“△”,本示例對(duì)此不作特殊限制。
在步驟s820中,選取任一所述第一參考端點(diǎn)以及與任一所述參考端點(diǎn)相鄰的另一所述參考端點(diǎn)之間的線段作為x軸。
在本示例實(shí)施方式中,繼續(xù)參考圖10所示,選取參考端點(diǎn)a以及與參考端點(diǎn)a相鄰的參考端點(diǎn)b之間的線段作為x軸,例如可以是線段ab。此外,在本示例的其他實(shí)施方式中,也可以以其他的線段作為x軸,例如可以是線段cd,本示例對(duì)此不作特殊限制。
在步驟s830中,選取任一固定方向向量與所述x軸的方向向量進(jìn)行叉乘得到第一叉乘結(jié)果并判斷所述第一叉乘結(jié)果是否為零。
在本示例實(shí)施方式中,上述叉乘的計(jì)算方法例如可以為:假設(shè)向量a=(x1,y1,z1),向量b=(x2,y2,z2),則a×b=(y1z2-y2z1,z1x2-z2x1,x1y2-x2y1);上述任一固定方向向量例如可以是(0,1,0),也可以是(0,0,1),本示例實(shí)施方式對(duì)此不做特殊限制;上述x軸的方向向量例如可以是(1,0,0),也可以是(0,0,1),本示例實(shí)施方式對(duì)此不作特殊限制。在本示例中,利用方向向量(1,0,0)與方向向量(0,1,0)進(jìn)行叉乘,得到(1,0,0)×(0,1,0)=(0,0,1);因此,叉乘結(jié)果不為零。此外,在本示例的其他實(shí)施方式中,也可以選取其他的方向向量進(jìn)行叉乘,例如可以是(1,0,0)×(0,0,1),本示例對(duì)此不作特殊限制。
在步驟s840中,在判斷所述第一叉乘結(jié)果不為零時(shí),選取所述第一叉乘結(jié)果的方向向量為y軸。舉例而言:
由于上述叉乘結(jié)果(0,0,1)不為零,因此可以選取方向向量(0,0,1)作為y軸。
在步驟s850中,將所述x軸的方向向量與所述y軸的方向向量進(jìn)行叉乘得到第二叉乘結(jié)果并選取所述第二叉乘結(jié)果的方向向量為z軸。舉例而言:
利用方向向量(1,0,0)與方向向量(0,0,1)進(jìn)行叉乘,得到:(1,0,0)×(0,0,1)=(0,1,0);因此,選取方向向量(0,1,0)為z軸。
在步驟s860中,根據(jù)所述x軸、y軸以及z軸建立所述主發(fā)的局部坐標(biāo)系。舉例而言:
根據(jù)上述x軸、y軸以及z軸,得到如圖11所示的主發(fā)的局部坐標(biāo)系。此外,在本示例的其他實(shí)施方式中,根據(jù)實(shí)際情況對(duì)x軸、y軸以及z軸進(jìn)行其他的設(shè)置,本示例對(duì)此不作特殊限制。
進(jìn)一步的,參考圖9所示,根據(jù)主發(fā)的局部坐標(biāo)系建立主發(fā)與各副發(fā)的局部坐標(biāo)關(guān)系可以包括步驟s910至步驟s920。其中:
在步驟s910中,根據(jù)各所述副發(fā)的長(zhǎng)度為各所述副發(fā)配置多個(gè)第二參考端點(diǎn)。舉例而言:
參考圖10所示,可以根據(jù)副發(fā)的長(zhǎng)度為各副發(fā)配置多個(gè)第二參考端點(diǎn),并利用第二標(biāo)識(shí)(例如可以是
在步驟s920中,根據(jù)各所述預(yù)設(shè)參數(shù)以及各所述主發(fā)的局部坐標(biāo)系建立各所述第一參考端點(diǎn)與各所述第二參考端點(diǎn)的局部坐標(biāo)關(guān)系。舉例而言:
例如主發(fā)的參數(shù)可以包括c1、c2、c3以及c4,主發(fā)的局部坐標(biāo)為(x,y,z);則上述第一參考端點(diǎn)以及第二參考端點(diǎn)的局部坐標(biāo)關(guān)系可以是:c1x+c2y+c3z+c4=0。此外,在本示例的其他實(shí)施方式中,上述局部坐標(biāo)關(guān)系也可以以其他的方式進(jìn)行表達(dá),本示例對(duì)此不作特殊限制。
在步驟s720中,根據(jù)各所述主發(fā)與各所述副發(fā)的局部坐標(biāo)關(guān)系確定各所述主發(fā)與各所述副發(fā)的局部相對(duì)位置。舉例而言:
參考圖11所示,當(dāng)主發(fā)中的a點(diǎn)位置發(fā)生變化后,根據(jù)上述局部坐標(biāo)關(guān)系c1x+c2y+c3z+c4=0計(jì)算與a點(diǎn)對(duì)應(yīng)的f點(diǎn)的位置。此處需要說明的是,上述主發(fā)的位置可以處于各副發(fā)位置的中心并且主發(fā)的長(zhǎng)度與各副發(fā)的長(zhǎng)度基本一致;在本示例實(shí)施方式中,第一參考端點(diǎn)與第二參考端點(diǎn)可以是一一對(duì)應(yīng),也可以是一個(gè)第一參考端點(diǎn)對(duì)應(yīng)兩個(gè)或者多個(gè)第二參考端點(diǎn),本示例實(shí)施方式對(duì)此不作特殊限制。
本示例實(shí)施方式還提供了另一種虛擬對(duì)象毛發(fā)處理方法。該毛發(fā)處理方法還可以包括:將所述虛擬對(duì)象的毛發(fā)分為多個(gè)待處理組并為各所述待處理組配置約束參數(shù)。其中,各所述待處理組中包括多個(gè)所述主副發(fā)結(jié)構(gòu)。
在本示例實(shí)施方式中,首先可以根據(jù)虛擬對(duì)象毛發(fā)的不同部位對(duì)毛發(fā)進(jìn)行分組;舉例而言:根據(jù)虛擬對(duì)象頭部的不同部位(例如可以包括頭頂、后腦勺以及臉頰等等,也可以根據(jù)實(shí)際情況自行分配,本示例實(shí)施方式對(duì)此不做特殊限制)將毛發(fā)分為若干待處理組,其中,較為復(fù)雜的部位可以多做幾個(gè)分組來提高該部分的層次感(例如后腦勺的長(zhǎng)發(fā));然后,根據(jù)各分組與頭皮的距離為各分組配置不同的約束參數(shù);詳細(xì)而言:
根據(jù)后腦勺的長(zhǎng)發(fā)與后腦勺的頭皮的距離為各組長(zhǎng)發(fā)配置不同的約束參數(shù),貼近頭皮的配置強(qiáng)約束參數(shù),遠(yuǎn)離頭皮的配置弱約束參數(shù),通過該技術(shù)方案,使得在模擬虛擬對(duì)象的運(yùn)動(dòng)時(shí)能有不同的感覺,具有較好的層次感。此外,在本示例的其他實(shí)施方式中,也可以通過其他的方式增強(qiáng)虛擬對(duì)象毛發(fā)的層次感,本示例對(duì)此不作特殊限制。
在本示例的另一種實(shí)施方式中,上述虛擬對(duì)象毛發(fā)處理方法還包括:為各所述自由發(fā)配置自由發(fā)參數(shù)并根據(jù)各所述自由發(fā)參數(shù)對(duì)各所述自由發(fā)的位置進(jìn)行模擬。
在本示例實(shí)施方式中,上述根據(jù)虛擬對(duì)象毛發(fā)的不同部位對(duì)虛擬對(duì)象毛發(fā)毛發(fā)的分組中還包括多個(gè)可以獨(dú)立模擬的自由發(fā)。在本示例中,通過給上述可以獨(dú)立模擬的自由發(fā)配置自由發(fā)參數(shù),然后根據(jù)自由發(fā)參數(shù)對(duì)各自由發(fā)的位置進(jìn)行模擬,能夠很好的控制整個(gè)毛發(fā)的整齊性。參考圖15所示,(a)圖和(c)圖分別是使用tressfx模擬得到的結(jié)果,而(b)圖和(d)圖是本公開模擬的結(jié)果。其中,對(duì)于長(zhǎng)直發(fā),采用本公開的技術(shù)方案,有了明顯的層次感,整齊中帶有一些凌亂,更加貼近實(shí)際的頭發(fā),看起來更加流暢;并且,(c)圖中不能很好的保持原有的卷發(fā)發(fā)型;但是,(d)圖卻可以在運(yùn)動(dòng)模擬的過程中保留原有的發(fā)型,再配合一些自由模擬的散發(fā),使得整個(gè)卷發(fā)造型更加的貼合實(shí)際。
本示例實(shí)施方式還提供了另一種虛擬對(duì)象毛發(fā)處理方法。該毛發(fā)處理方法還可以包括:為所述虛擬對(duì)象的預(yù)設(shè)骨骼部位綁定碰撞體以使得當(dāng)所述虛擬對(duì)象的毛發(fā)與所述碰撞體接觸時(shí)實(shí)現(xiàn)所述虛擬對(duì)象的毛發(fā)與所述預(yù)設(shè)骨骼部位的交互。
在本示例實(shí)施方式中,上述預(yù)設(shè)骨骼部位可以包括手、胳膊或者肩膀;可以包括腰部、腿部等等,本示例實(shí)施方式對(duì)此不作特殊限制;上述碰撞體可以被定義為具有碰撞體積的碰撞體,例如可以包括球體、立方體,也可以包括網(wǎng)格、圓柱體或者膠囊等等,本示例實(shí)施方式對(duì)此不做特殊限制。在本示例中,為虛擬對(duì)象的手部綁定一球體(球體的碰撞體積可以是球體與手接觸的部位),參考圖14所示,當(dāng)虛擬對(duì)象的手接觸到頭發(fā)時(shí),使得頭發(fā)可以隨著手的動(dòng)作一起運(yùn)動(dòng),達(dá)到了利用手輕撫發(fā)絲的效果;另外,當(dāng)另一虛擬對(duì)象的手部也綁定了具有碰撞體積的碰撞體時(shí),可以使得另一虛擬對(duì)象的手與該虛擬對(duì)象的頭發(fā)產(chǎn)生互動(dòng),增加了游戲過程中的趣味性,提升了用戶體驗(yàn)。
此外,盡管在附圖中以特定順序描述了本公開中方法的各個(gè)步驟,但是,這并非要求或者暗示必須按照該特定順序來執(zhí)行這些步驟,或是必須執(zhí)行全部所示的步驟才能實(shí)現(xiàn)期望的結(jié)果。附加的或備選的,可以省略某些步驟,將多個(gè)步驟合并為一個(gè)步驟執(zhí)行,以及/或者將一個(gè)步驟分解為多個(gè)步驟執(zhí)行等。
本示例實(shí)施方式還提供了一種虛擬對(duì)象毛發(fā)處理裝置。參考圖16所示,該虛擬對(duì)象毛發(fā)處理裝置可以包括:主副發(fā)結(jié)構(gòu)模塊1610、模擬模塊1620、毛發(fā)位置確定模塊1630以及渲染模塊1730。其中:
主副發(fā)結(jié)構(gòu)模塊1610可以用于建立虛擬對(duì)象的毛發(fā)模型,所述毛發(fā)模型包含多個(gè)主副發(fā)結(jié)構(gòu),其中,每個(gè)所述主副發(fā)結(jié)構(gòu)包含一根主發(fā)和與所述主發(fā)關(guān)聯(lián)的多根副發(fā)。
模擬模塊1620可以用于根據(jù)預(yù)設(shè)參數(shù)對(duì)所述主發(fā)的位置進(jìn)行模擬,并根據(jù)所述毛發(fā)模型確定每個(gè)所述主副發(fā)結(jié)構(gòu)中副發(fā)與主發(fā)的相對(duì)位置;
副發(fā)位置確定模塊1630可以用于根據(jù)每個(gè)所述主副發(fā)結(jié)構(gòu)中主發(fā)的位置以及每個(gè)所述主副發(fā)結(jié)構(gòu)中副發(fā)與主發(fā)的相對(duì)位置確定所述副發(fā)的位置;
渲染模塊1640可以用于當(dāng)所述主發(fā)以及所述副發(fā)的位置確定后,對(duì)所述虛擬對(duì)象毛發(fā)進(jìn)行渲染。
上述虛擬對(duì)象毛發(fā)處理裝置中各模塊的具體細(xì)節(jié)已經(jīng)在對(duì)應(yīng)的虛擬對(duì)象毛發(fā)處理方法中進(jìn)行了詳細(xì)想描述,因此此處不再贅述。
應(yīng)當(dāng)注意,盡管在上文詳細(xì)描述中提及了用于動(dòng)作執(zhí)行的設(shè)備的若干模塊或者單元,但是這種劃分并非強(qiáng)制性的。實(shí)際上,根據(jù)本公開的實(shí)施方式,上文描述的兩個(gè)或更多模塊或者單元的特征和功能可以在一個(gè)模塊或者單元中具體化。反之,上文描述的一個(gè)模塊或者單元的特征和功能可以進(jìn)一步劃分為由多個(gè)模塊或者單元來具體化。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員易于理解,這里描述的示例實(shí)施方式可以通過軟件實(shí)現(xiàn),也可以通過軟件結(jié)合必要的硬件的方式來實(shí)現(xiàn)。因此,根據(jù)本公開實(shí)施方式的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲(chǔ)在一個(gè)非易失性存儲(chǔ)介質(zhì)(可以是cd-rom,u盤,移動(dòng)硬盤等)中或網(wǎng)絡(luò)上,包括若干指令以使得一臺(tái)計(jì)算設(shè)備(可以是個(gè)人計(jì)算機(jī)、服務(wù)器、移動(dòng)終端、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行根據(jù)本公開實(shí)施方式的方法。
在本公開的示例性實(shí)施例中,還提供了一種能夠?qū)崿F(xiàn)上述方法的電子設(shè)備。
所屬技術(shù)領(lǐng)域的技術(shù)人員能夠理解,本發(fā)明的各個(gè)方面可以實(shí)現(xiàn)為系統(tǒng)、方法或程序產(chǎn)品。因此,本發(fā)明的各個(gè)方面可以具體實(shí)現(xiàn)為以下形式,即:完全的硬件實(shí)施方式、完全的軟件實(shí)施方式(包括固件、微代碼等),或硬件和軟件方面結(jié)合的實(shí)施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。
下面參照?qǐng)D17來描述根據(jù)本發(fā)明的這種實(shí)施方式的電子設(shè)備600。圖6顯示的電子設(shè)備600僅僅是一個(gè)示例,不應(yīng)對(duì)本發(fā)明實(shí)施例的功能和使用范圍帶來任何限制。
如圖18所示,電子設(shè)備600以通用計(jì)算設(shè)備的形式表現(xiàn)。電子設(shè)備600的組件可以包括但不限于:上述至少一個(gè)處理單元610、上述至少一個(gè)存儲(chǔ)單元620、連接不同系統(tǒng)組件(包括存儲(chǔ)單元620和處理單元610)的總線630、顯示單元640。
其中,所述存儲(chǔ)單元存儲(chǔ)有程序代碼,所述程序代碼可以被所述處理單元610執(zhí)行,使得所述處理單元610執(zhí)行本說明書上述“示例性方法”部分中描述的根據(jù)本發(fā)明各種示例性實(shí)施方式的步驟。例如,所述處理單元610可以執(zhí)行如圖4中所示的步驟s410:建立虛擬對(duì)象的毛發(fā)模型,所述毛發(fā)模型包含多個(gè)主副發(fā)結(jié)構(gòu),其中,每個(gè)所述主副發(fā)結(jié)構(gòu)包含一根主發(fā)和與所述主發(fā)關(guān)聯(lián)的多根副發(fā);步驟s420:根據(jù)預(yù)設(shè)參數(shù)對(duì)所述主發(fā)的位置進(jìn)行模擬,并根據(jù)所述毛發(fā)模型確定每個(gè)所述主副發(fā)結(jié)構(gòu)中副發(fā)與主發(fā)的相對(duì)位置;步驟s430:根據(jù)每個(gè)所述主副發(fā)結(jié)構(gòu)中主發(fā)的位置以及每個(gè)所述主副發(fā)結(jié)構(gòu)中副發(fā)與主發(fā)的相對(duì)位置確定所述虛擬對(duì)象毛發(fā)的位置;步驟s430:當(dāng)所述主發(fā)以及所述副發(fā)的位置確定后,對(duì)所述虛擬對(duì)象毛發(fā)進(jìn)行渲染。
存儲(chǔ)單元620可以包括易失性存儲(chǔ)單元形式的可讀介質(zhì),例如隨機(jī)存取存儲(chǔ)單元(ram)6201和/或高速緩存存儲(chǔ)單元6202,還可以進(jìn)一步包括只讀存儲(chǔ)單元(rom)6203。
存儲(chǔ)單元620還可以包括具有一組(至少一個(gè))程序模塊6205的程序/實(shí)用工具6204,這樣的程序模塊6205包括但不限于:操作系統(tǒng)、一個(gè)或者多個(gè)應(yīng)用程序、其它程序模塊以及程序數(shù)據(jù),這些示例中的每一個(gè)或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實(shí)現(xiàn)。
總線630可以為表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲(chǔ)單元總線或者存儲(chǔ)單元控制器、外圍總線、圖形加速端口、處理單元或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。
電子設(shè)備600也可以與一個(gè)或多個(gè)外部設(shè)備700(例如鍵盤、指向設(shè)備、藍(lán)牙設(shè)備等)通信,還可與一個(gè)或者多個(gè)使得用戶能與該電子設(shè)備600交互的設(shè)備通信,和/或與使得該電子設(shè)備600能與一個(gè)或多個(gè)其它計(jì)算設(shè)備進(jìn)行通信的任何設(shè)備(例如路由器、調(diào)制解調(diào)器等等)通信。這種通信可以通過輸入/輸出(i/o)接口650進(jìn)行。并且,電子設(shè)備600還可以通過網(wǎng)絡(luò)適配器660與一個(gè)或者多個(gè)網(wǎng)絡(luò)(例如局域網(wǎng)(lan),廣域網(wǎng)(wan)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器660通過總線630與電子設(shè)備600的其它模塊通信。應(yīng)當(dāng)明白,盡管圖中未示出,可以結(jié)合電子設(shè)備600使用其它硬件和/或軟件模塊,包括但不限于:微代碼、設(shè)備驅(qū)動(dòng)器、冗余處理單元、外部磁盤驅(qū)動(dòng)陣列、raid系統(tǒng)、磁帶驅(qū)動(dòng)器以及數(shù)據(jù)備份存儲(chǔ)系統(tǒng)等。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員易于理解,這里描述的示例實(shí)施方式可以通過軟件實(shí)現(xiàn),也可以通過軟件結(jié)合必要的硬件的方式來實(shí)現(xiàn)。因此,根據(jù)本公開實(shí)施方式的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲(chǔ)在一個(gè)非易失性存儲(chǔ)介質(zhì)(可以是cd-rom,u盤,移動(dòng)硬盤等)中或網(wǎng)絡(luò)上,包括若干指令以使得一臺(tái)計(jì)算設(shè)備(可以是個(gè)人計(jì)算機(jī)、服務(wù)器、終端裝置、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行根據(jù)本公開實(shí)施方式的方法。
在本公開的示例性實(shí)施例中,還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有能夠?qū)崿F(xiàn)本說明書上述方法的程序產(chǎn)品。在一些可能的實(shí)施方式中,本發(fā)明的各個(gè)方面還可以實(shí)現(xiàn)為一種程序產(chǎn)品的形式,其包括程序代碼,當(dāng)所述程序產(chǎn)品在終端設(shè)備上運(yùn)行時(shí),所述程序代碼用于使所述終端設(shè)備執(zhí)行本說明書上述“示例性方法”部分中描述的根據(jù)本發(fā)明各種示例性實(shí)施方式的步驟。
參考圖18所示,描述了根據(jù)本發(fā)明的實(shí)施方式的用于實(shí)現(xiàn)上述方法的程序產(chǎn)品800,其可以采用便攜式緊湊盤只讀存儲(chǔ)器(cd-rom)并包括程序代碼,并可以在終端設(shè)備,例如個(gè)人電腦上運(yùn)行。然而,本發(fā)明的程序產(chǎn)品不限于此,在本文件中,可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
所述程序產(chǎn)品可以采用一個(gè)或多個(gè)可讀介質(zhì)的任意組合??勺x介質(zhì)可以是可讀信號(hào)介質(zhì)或者可讀存儲(chǔ)介質(zhì)??勺x存儲(chǔ)介質(zhì)例如可以為但不限于電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合??勺x存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式盤、硬盤、隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、可擦式可編程只讀存儲(chǔ)器(eprom或閃存)、光纖、便攜式緊湊盤只讀存儲(chǔ)器(cd-rom)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者上述的任意合適的組合。
計(jì)算機(jī)可讀信號(hào)介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號(hào),其中承載了可讀程序代碼。這種傳播的數(shù)據(jù)信號(hào)可以采用多種形式,包括但不限于電磁信號(hào)、光信號(hào)或上述的任意合適的組合。可讀信號(hào)介質(zhì)還可以是可讀存儲(chǔ)介質(zhì)以外的任何可讀介質(zhì),該可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括但不限于無線、有線、光纜、rf等等,或者上述的任意合適的組合。
可以以一種或多種程序設(shè)計(jì)語言的任意組合來編寫用于執(zhí)行本發(fā)明操作的程序代碼,所述程序設(shè)計(jì)語言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語言—諸如java、c++等,還包括常規(guī)的過程式程序設(shè)計(jì)語言—諸如“c”語言或類似的程序設(shè)計(jì)語言。程序代碼可以完全地在用戶計(jì)算設(shè)備上執(zhí)行、部分地在用戶設(shè)備上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算設(shè)備上部分在遠(yuǎn)程計(jì)算設(shè)備上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算設(shè)備或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算設(shè)備的情形中,遠(yuǎn)程計(jì)算設(shè)備可以通過任意種類的網(wǎng)絡(luò),包括局域網(wǎng)(lan)或廣域網(wǎng)(wan),連接到用戶計(jì)算設(shè)備,或者,可以連接到外部計(jì)算設(shè)備(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。
此外,上述附圖僅是根據(jù)本發(fā)明示例性實(shí)施例的方法所包括的處理的示意性說明,而不是限制目的。易于理解,上述附圖所示的處理并不表明或限制這些處理的時(shí)間順序。另外,也易于理解,這些處理可以是例如在多個(gè)模塊中同步或異步執(zhí)行的。
本領(lǐng)域技術(shù)人員在考慮說明書及實(shí)踐這里公開的發(fā)明后,將容易想到本公開的其他實(shí)施例。本申請(qǐng)旨在涵蓋本公開的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本公開的一般性原理并包括本公開未公開的本技術(shù)領(lǐng)域中的公知常識(shí)或慣用技術(shù)手段。說明書和實(shí)施例僅被視為示例性的,本公開的真正范圍和精神由權(quán)利要求指出。
應(yīng)當(dāng)理解的是,本公開并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進(jìn)行各種修改和改變。本公開的范圍僅由所附的權(quán)利要求來限。
本領(lǐng)域技術(shù)人員在考慮說明書及實(shí)踐這里公開的發(fā)明后,將容易想到本公開的其它實(shí)施方案。本申請(qǐng)旨在涵蓋本公開的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本公開的一般性原理并包括本公開未公開的本技術(shù)領(lǐng)域中的公知常識(shí)或慣用技術(shù)手段。說明書和實(shí)施例僅被視為示例性的,本公開的真正范圍和精神由所附的權(quán)利要求指出。