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