本發(fā)明涉及虛擬現(xiàn)實(shí)領(lǐng)域,具體而言,涉及一種虛擬現(xiàn)實(shí)中人體的模擬方法和裝置。
背景技術(shù):
隨著虛擬現(xiàn)實(shí)的技術(shù)被一點(diǎn)點(diǎn)的突破,民用家庭設(shè)備逐漸出現(xiàn),成為娛樂生活重要的組成部分,讓人們體驗(yàn)到前所未有的感覺。為了讓人們更加好的在場景里面更好的交互,已經(jīng)更加接近真實(shí)的感覺,在虛擬環(huán)境中的人與人的真實(shí)交互就顯得尤為重要,而真實(shí)交互的第一步就是要求形象動作與人類接近。
現(xiàn)有的虛擬現(xiàn)實(shí)交互游戲中,大多用非真實(shí)的人類來表示人物形象,但模擬出的人物形象要么是身體不能動,要么是通過播放動畫的形式以假亂真,還有一些直接取消掉胳膊和腿部,只有頭部、身體和手,無法真實(shí)的模擬出人物動作,影響用戶體驗(yàn)。
針對上述的問題,目前尚未提出有效的解決方案。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種虛擬現(xiàn)實(shí)中人體的模擬方法和裝置,以至少解決虛擬現(xiàn)實(shí)中無法對人體動作進(jìn)行真實(shí)模擬的技術(shù)問題。
根據(jù)本發(fā)明實(shí)施例的一個方面,提供了一種虛擬現(xiàn)實(shí)中人體的模擬方法,包括:獲取在虛擬現(xiàn)實(shí)中顯示的人體模型,其中,所述人體模型用于對真實(shí)環(huán)境中的目標(biāo)人體進(jìn)行模擬;獲取所述目標(biāo)人體的追蹤器集合中所有追蹤器的位置信息,其中,所述追蹤器集合包括至少一個設(shè)置在所述目標(biāo)人體的預(yù)定身體部分上的追蹤器;根據(jù)獲取到的位置信息控制虛擬現(xiàn)實(shí)中的所述人體模型進(jìn)行移動,以使所述人體模型模擬所述目標(biāo)人體的動作。
根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種虛擬現(xiàn)實(shí)中人體的模擬裝置,包括:第一獲取單元,用于獲取在虛擬現(xiàn)實(shí)中顯示的人體模型,其中,所述人體模型用于對真實(shí)環(huán)境中的目標(biāo)人體進(jìn)行模擬;第二獲取單元,用于獲取所述目標(biāo)人體的追蹤器集合中所有追蹤器的位置信息,其中,所述追蹤器集合包括至少一個設(shè)置在所述目標(biāo)人體的預(yù)定身體部分上的追蹤器;控制單元,用于根據(jù)獲取到的位置信息控制虛擬現(xiàn)實(shí)中的所述人體模型進(jìn)行移動,以使所述人體模型模擬所述目標(biāo)人體的動作。
在本發(fā)明實(shí)施例中,采用獲取在虛擬現(xiàn)實(shí)中顯示的人體模型,其中,所述人體模型用于對真實(shí)環(huán)境中的目標(biāo)人體進(jìn)行模擬;獲取所述目標(biāo)人體的追蹤器集合中所有追蹤器的位置信息,其中,所述追蹤器集合包括至少一個設(shè)置在所述目標(biāo)人體的預(yù)定身體部位上的追蹤器;根據(jù)獲取到的位置信息控制虛擬現(xiàn)實(shí)中的所述人體模型進(jìn)行移動,以使所述人體模型模擬所述目標(biāo)人體的動作,通過根據(jù)目標(biāo)人體的預(yù)定身體部位上的追蹤器的位置信息,控制虛擬現(xiàn)實(shí)中的人體模型進(jìn)行移動,達(dá)到了控制人體模型模擬目標(biāo)人體動作的目的,從而實(shí)現(xiàn)了根據(jù)目標(biāo)人體的預(yù)定身體部位的位置信息,控制人體模型對目標(biāo)人體的動作進(jìn)行模擬的技術(shù)效果,進(jìn)而解決了虛擬現(xiàn)實(shí)中無法對人體動作進(jìn)行真實(shí)模擬的技術(shù)問題。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
圖1是根據(jù)本發(fā)明實(shí)施例的一種可選的虛擬現(xiàn)實(shí)中人體的模擬方法的場景布局的示意圖;
圖2是根據(jù)本發(fā)明實(shí)施例的一種可選的虛擬現(xiàn)實(shí)中人體的模擬方法的流程圖;
圖3是標(biāo)準(zhǔn)人體骨架的示意圖;
圖4是根據(jù)本發(fā)明實(shí)施例的控制目標(biāo)節(jié)點(diǎn)與目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)進(jìn)行移動的過程示意圖;
圖5是包括頭部、身體和雙腿的部分骨架示意圖;
圖6是包括雙手和雙臂的部分骨架示意圖;
圖7是根據(jù)本發(fā)明實(shí)施例的對腿部骨架進(jìn)行簡化后的部分骨架示意圖;
圖8是根據(jù)本發(fā)明實(shí)施例的一種可選的虛擬現(xiàn)實(shí)中人體的模擬裝置的示意圖;
圖9是根據(jù)本發(fā)明實(shí)施例的終端的示意圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
實(shí)施例1
根據(jù)本發(fā)明實(shí)施例,提供了一種可以通過本申請裝置實(shí)施例執(zhí)行的方法實(shí)施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
根據(jù)本發(fā)明實(shí)施例,提供了一種虛擬現(xiàn)實(shí)中人體的模擬方法。
該方法可以應(yīng)用于各種虛擬現(xiàn)實(shí)設(shè)備上,通過在目標(biāo)人體上設(shè)置追蹤器,以獲取目標(biāo)人體的預(yù)定身體部位的位置信息,并根據(jù)獲取到的位置信息,控制虛擬現(xiàn)實(shí)中人體模型進(jìn)行移動,以使人體模型對目標(biāo)人體的各種動作進(jìn)行模擬。圖1是根據(jù)本發(fā)明實(shí)施例的一種可選的虛擬現(xiàn)實(shí)中人體的模擬方法的場景布局的示意圖,如圖1所示,目標(biāo)人體的預(yù)定身體部位上配置有追蹤器,其中,目標(biāo)人體的頭部佩帶有可視頭盔(相當(dāng)于頭部追蹤器),目標(biāo)人體的左手和右手分別持有一個手柄(相當(dāng)于手部追蹤器),當(dāng)目標(biāo)人體在預(yù)定的區(qū)域內(nèi)做出任意動作時,圖1中示出的虛擬現(xiàn)實(shí)設(shè)備通過位置信息接收裝置獲取可視頭盔和兩個手柄的位置信息,進(jìn)而獲取目標(biāo)人體頭部和手部的位置信息,并根據(jù)獲取到的位置信息,控制虛擬現(xiàn)實(shí)中的人體模型進(jìn)行相應(yīng)的移動,以對目標(biāo)人體做出的各種動作進(jìn)行模擬,從而實(shí)現(xiàn)了根據(jù)目標(biāo)人體的預(yù)定身體部位的位置信息,控制人體模型對目標(biāo)人體的動作進(jìn)行模擬的技術(shù)效果,進(jìn)而解決了虛擬現(xiàn)實(shí)中無法對人體動作進(jìn)行真實(shí)模擬的技術(shù)問題,使人們在虛擬現(xiàn)實(shí)中的交互更加接近真實(shí)的感覺。
需要說明的是,本發(fā)明實(shí)施例所提供的虛擬現(xiàn)實(shí)中人體的模擬方法在應(yīng)用于各種虛擬現(xiàn)實(shí)設(shè)備時,該虛擬現(xiàn)實(shí)設(shè)備應(yīng)當(dāng)包括有必要的追蹤器,以獲取目標(biāo)人體預(yù)定身體部位的位置信息,如:頭部追蹤器、手部追蹤器、腳部追蹤器等,其中,頭部追蹤器主要用于獲取目標(biāo)人體的頭部位置信息,進(jìn)而根據(jù)頭部位置信息,控制人體模型對目標(biāo)人體的頭部、頸部以及軀干的動作進(jìn)行模擬,手部追蹤器用于獲取目標(biāo)人體的雙手的位置信息,進(jìn)而根據(jù)雙手的位置信息,控制人體模型對目標(biāo)人體的雙手及手臂動作進(jìn)行模擬,腳部追蹤器用于獲了以目標(biāo)人體的雙腳的位置信息,進(jìn)而根據(jù)雙腳的位置信息,控制人體模型對目標(biāo)人體的雙腳及雙腿動作進(jìn)行模擬。虛擬現(xiàn)實(shí)設(shè)備所包括的追蹤器應(yīng)當(dāng)至少包括頭部追蹤器,以至少通過目標(biāo)人體的頭部位置信息控制人體模型對目標(biāo)人體的身體動作進(jìn)行模擬。如圖1示出的虛擬現(xiàn)實(shí)設(shè)備則包括頭部追蹤器和手部追蹤器,則該虛擬現(xiàn)實(shí)設(shè)備可以通過手部追蹤器對目標(biāo)人體的雙手及手臂動作進(jìn)行模擬,從而使人體模型對目標(biāo)人體的模擬更加接近真實(shí)。同樣的,虛擬現(xiàn)實(shí)設(shè)備可以同時包括頭部追蹤器、手部追蹤器和腳部追蹤器,以控制人體模型模擬目標(biāo)人體的身體動作,雙手和雙臂動作以及雙腳和雙腿動作。
圖2是根據(jù)本發(fā)明實(shí)施例的一種可選的虛擬現(xiàn)實(shí)中人體的模擬方法的流程圖,以下結(jié)合圖2對本發(fā)明實(shí)施例所提供的虛擬現(xiàn)實(shí)中人體的模擬方法做具體介紹,如圖2所示,該虛擬現(xiàn)實(shí)中人體的模擬方法主要包括如下步驟s202至步驟s206:
步驟s202,獲取在虛擬現(xiàn)實(shí)中顯示的人體模型,其中,人體模型用于對真實(shí)環(huán)境中的目標(biāo)人體進(jìn)行模擬。
虛擬現(xiàn)實(shí)技術(shù)是一種可以創(chuàng)建虛擬世界的計(jì)算機(jī)仿真系統(tǒng),它利用計(jì)算機(jī)生成一種多源信息融合的、交互式的三維動態(tài)視景的模擬環(huán)境,通過在該環(huán)境中對用戶的實(shí)體行為進(jìn)行仿真使用戶沉浸到該環(huán)境中。在虛擬現(xiàn)實(shí)中顯示的人體模型用于對用戶的實(shí)體行為進(jìn)行模擬,通過控制人體模型對用戶進(jìn)行的模擬,并使人體模型模擬出的動作更加接近用戶的實(shí)體行為,從而使用戶在虛擬現(xiàn)實(shí)中的交互更加真實(shí),提高用戶體驗(yàn)。
步驟s204,獲取目標(biāo)人體的追蹤器集合中所有追蹤器的位置信息,其中,追蹤器集合包括至少一個設(shè)置在目標(biāo)人體的預(yù)定身體部分上的追蹤器。
在本發(fā)明實(shí)施例中,追蹤器配置在目標(biāo)人體的預(yù)定身體部位上,在目標(biāo)人體的預(yù)定身體部位做出動作時,追蹤器的位置也相應(yīng)的發(fā)生變化,因此,追蹤器的位置信息即目標(biāo)人體的預(yù)定身體部位的位置信息。如圖1所示,當(dāng)目標(biāo)人體轉(zhuǎn)頭時,目標(biāo)人體所佩帶的頭盔(相當(dāng)于頭部追蹤器)的朝向也發(fā)生變化,而根據(jù)頭盔的朝向,即可獲取目標(biāo)人體的頭部朝向;當(dāng)目標(biāo)人體抬高手臂時,目標(biāo)人體所持的手柄(相當(dāng)于手部追蹤器)的位置也會發(fā)生變化,而根據(jù)目標(biāo)人體所持的手柄的位置,即可獲取目標(biāo)人體的手部及手臂的位置。
步驟s206,根據(jù)獲取到的位置信息控制虛擬現(xiàn)實(shí)中的人體模型進(jìn)行移動,以使人體模型模擬目標(biāo)人體的動作。
根據(jù)逆向動力學(xué)的原理,可以通過先確定子骨骼的位置,然后反求推導(dǎo)出其所在的骨骼鏈上n級父骨骼的位置,從而確定整條骨骼鏈的位置。在本發(fā)明實(shí)施例中,在控制人體模型對目標(biāo)人體進(jìn)行模擬時,根據(jù)獲取到的追蹤器的位置信息,確定人體模型各部位的位置信息,進(jìn)而根據(jù)逆向動力學(xué)反求推導(dǎo)出其他部位的位置信息,從而確定出整個人體模型的所有部位的位置信息,以使人體模型對目標(biāo)人體的動作進(jìn)行真實(shí)的模擬。
在本發(fā)明實(shí)施例中,采用獲取在虛擬現(xiàn)實(shí)中顯示的人體模型,其中,人體模型用于對真實(shí)環(huán)境中的目標(biāo)人體進(jìn)行模擬;獲取目標(biāo)人體的追蹤器集合中所有追蹤器的位置信息,其中,追蹤器集合包括至少一個設(shè)置在目標(biāo)人體的預(yù)定身體部位上的追蹤器;根據(jù)獲取到的位置信息控制虛擬現(xiàn)實(shí)中的人體模型進(jìn)行移動,以使人體模型模擬目標(biāo)人體的動作,通過根據(jù)目標(biāo)人體的預(yù)定身體部位上的追蹤器的位置信息,控制虛擬現(xiàn)實(shí)中的人體模型進(jìn)行移動,達(dá)到了控制人體模型模擬目標(biāo)人體動作的目的,從而實(shí)現(xiàn)了根據(jù)目標(biāo)人體的預(yù)定身體部位的位置信息,控制人體模型對目標(biāo)人體的動作進(jìn)行模擬的技術(shù)效果,進(jìn)而解決了虛擬現(xiàn)實(shí)中無法對人體動作進(jìn)行真實(shí)模擬的技術(shù)問題。
可選地,位置信息包括追蹤器的位置,根據(jù)獲取到的位置信息控制虛擬現(xiàn)實(shí)中的人體模型進(jìn)行移動包括:將獲取到的位置信息中的任意一個位置信息所表示的位置作為目標(biāo)位置;判斷人體模型的目標(biāo)節(jié)點(diǎn)的當(dāng)前位置與目標(biāo)位置之間的距離是否大于第一預(yù)設(shè)閾值,其中,目標(biāo)節(jié)點(diǎn)與目標(biāo)位置對應(yīng)的目標(biāo)人體的預(yù)定身體部位相關(guān)聯(lián);如果目標(biāo)節(jié)點(diǎn)的當(dāng)前位置與目標(biāo)位置之間的距離大于第一預(yù)設(shè)閾值,則控制目標(biāo)節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)的所有父節(jié)點(diǎn)進(jìn)行移動,其中,目標(biāo)節(jié)點(diǎn)與父節(jié)點(diǎn)用于模擬目標(biāo)人體中一個骨骼鏈的多個骨骼。
作為本發(fā)明實(shí)施例的一種可選的實(shí)施方式,追蹤器的位置信息包括追蹤器的位置,將追蹤器位置為作目標(biāo)位置,將用于對目標(biāo)人體進(jìn)行模擬的人體模型的相應(yīng)部位作為目標(biāo)節(jié)點(diǎn),則控制人體模型對目標(biāo)人體進(jìn)行模擬需要控制目標(biāo)節(jié)點(diǎn)移動到目標(biāo)位置。在本發(fā)明實(shí)施例中,設(shè)置一個預(yù)設(shè)閾值,如果目標(biāo)節(jié)點(diǎn)與目標(biāo)位置的距離大于該預(yù)設(shè)閾值,則需要控制目標(biāo)節(jié)點(diǎn)移動到目標(biāo)位置,在控制目標(biāo)節(jié)點(diǎn)移動到目標(biāo)位置是過程中,還要同時控制目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)隨目標(biāo)節(jié)點(diǎn)為的移動而移動,從而達(dá)到對目標(biāo)人體進(jìn)行真實(shí)模擬的目的。如果目標(biāo)節(jié)點(diǎn)與目標(biāo)位置的距離小于或者等于預(yù)設(shè)閾值,則認(rèn)為目標(biāo)節(jié)點(diǎn)近似位于目標(biāo)位置,無需再移動目標(biāo)節(jié)點(diǎn)。在本發(fā)明實(shí)施例中,目標(biāo)節(jié)點(diǎn)為處于目標(biāo)位置的目標(biāo)人體的預(yù)定身體部位所對應(yīng)的人體模型節(jié)點(diǎn)。目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)同樣對應(yīng)的目標(biāo)人體身體部位,該身體部位為與目標(biāo)人體的預(yù)定身體部位處于同一骨骼鏈上,且為目標(biāo)人體的預(yù)定身體部位的父骨骼。
圖3是標(biāo)準(zhǔn)人體骨架的示意圖,如圖3所示,圖3中每一個骨骼對應(yīng)于人體模型中的一個節(jié)點(diǎn),其中,頸骨和脊柱為頭骨的父骨骼,頸骨和脊柱在人體模型中對應(yīng)的節(jié)點(diǎn)為頭骨骼所對應(yīng)的節(jié)點(diǎn)的父節(jié)點(diǎn)。同樣地,胳膊和鎖骨為手的父骨骼,上腿骨和腿骨為腳的父骨骼,則胳膊和鎖骨在人體模型中對應(yīng)的節(jié)點(diǎn)為手對應(yīng)的節(jié)點(diǎn)的父節(jié)點(diǎn),上腿骨和腿骨在人體模型中對應(yīng)的節(jié)點(diǎn)為腳對應(yīng)的節(jié)點(diǎn)的父節(jié)點(diǎn)。
可選地,控制目標(biāo)節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)的所有父節(jié)點(diǎn)進(jìn)行移動包括:獲取目標(biāo)節(jié)點(diǎn)的所有父節(jié)點(diǎn)與目標(biāo)位置的位置關(guān)系;根據(jù)位置關(guān)系選擇與目標(biāo)節(jié)點(diǎn)相鄰的父節(jié)點(diǎn)作為旋轉(zhuǎn)節(jié)點(diǎn);保持旋轉(zhuǎn)節(jié)點(diǎn)與旋轉(zhuǎn)節(jié)點(diǎn)的所有子節(jié)點(diǎn)的距離不變,旋轉(zhuǎn)該旋轉(zhuǎn)節(jié)點(diǎn)的所有子節(jié)點(diǎn),以使目標(biāo)節(jié)點(diǎn)移動到旋轉(zhuǎn)節(jié)點(diǎn)與目標(biāo)位置的連線上;重新選擇與旋轉(zhuǎn)節(jié)點(diǎn)相鄰的父節(jié)點(diǎn)作為旋轉(zhuǎn)節(jié)點(diǎn),直到目標(biāo)節(jié)點(diǎn)的所有父節(jié)點(diǎn)全部選擇完畢。
作為本發(fā)明實(shí)施例的一種可選的實(shí)施方式,在目標(biāo)節(jié)點(diǎn)與目標(biāo)位置的距離大于預(yù)設(shè)閾值時,控制目標(biāo)節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)進(jìn)行移動,以使人體模型對目標(biāo)人體進(jìn)行模擬,具體的控制移動方式如圖4所示,在圖4中,n1,n2,n3,n4為人體模型中的4個節(jié)點(diǎn),n1,n2,n3,n4對應(yīng)的目標(biāo)人體的身體部位處于同一骨骼鏈上,且n1,n2,n3對應(yīng)的身體部位為n4對應(yīng)的身體部位的父骨骼,則n1,n2,n3為n4的父節(jié)點(diǎn)。在控制人體模型對目標(biāo)人體進(jìn)行模擬時,n4為目標(biāo)節(jié)點(diǎn),n4對應(yīng)的目標(biāo)人體的預(yù)定身體部位上配置有追蹤器,t為獲取到的追蹤器的位置,即目標(biāo)位置。在控制目標(biāo)節(jié)點(diǎn)n4和目標(biāo)節(jié)點(diǎn)n4的所有父節(jié)點(diǎn)移動之前,首先獲取目標(biāo)節(jié)點(diǎn)n4的所有父節(jié)點(diǎn)n1,n2,n3與目標(biāo)位置t的位置關(guān)系,可選的,可以通過將父節(jié)點(diǎn)n1,n2,n3與目標(biāo)位置t進(jìn)行連線以確定其位置關(guān)系。首次移動,首先選擇與目標(biāo)節(jié)點(diǎn)n4相鄰的父節(jié)點(diǎn)n3作為旋轉(zhuǎn)節(jié)點(diǎn),保持旋轉(zhuǎn)節(jié)點(diǎn)n3與其所有子節(jié)點(diǎn)(節(jié)點(diǎn)n4)的距離不變,即保持n3n4長度不變,旋轉(zhuǎn)移動節(jié)點(diǎn)n4,將n4移動至節(jié)點(diǎn)n3和目標(biāo)位置t的連線上??蛇x的,在旋轉(zhuǎn)移動過程中,節(jié)點(diǎn)n4所移動的角度為可能移動的最小角度,在上述首次移動過程中,節(jié)點(diǎn)n4移動的角度為a1。第二次移動,選擇當(dāng)前旋轉(zhuǎn)節(jié)點(diǎn)n3相鄰的父節(jié)點(diǎn)(n2)作為新的旋轉(zhuǎn)節(jié)點(diǎn),保持旋轉(zhuǎn)節(jié)點(diǎn)n2與其所有子節(jié)點(diǎn)(節(jié)點(diǎn)n3,n4)的距離不變,即保持n2n3、n2n4和n3n4的長度不變,旋轉(zhuǎn)移動節(jié)點(diǎn)n3和節(jié)點(diǎn)n4,將n4移動至節(jié)點(diǎn)n2和目標(biāo)位置t的連線上,在上述第二次移動過程中,節(jié)點(diǎn)n3和節(jié)點(diǎn)n4移動的角度為a2。按上述移動方法,直到目標(biāo)節(jié)點(diǎn)n4的所有父節(jié)點(diǎn)全部被選擇完畢。在圖4中,第三次移動過程選擇目標(biāo)節(jié)點(diǎn)n4的父節(jié)點(diǎn)n1作為旋轉(zhuǎn)節(jié)點(diǎn),并保持節(jié)點(diǎn)n1,n2,n3,n4之間的距離不變,旋轉(zhuǎn)移動節(jié)點(diǎn)n2,n3,n4,使節(jié)點(diǎn)n4移動到節(jié)點(diǎn)n1與目標(biāo)位置的連線上。至此,完成一次人體模型對目標(biāo)人體動作的模擬。需要說明的是,如果在完成上述移動之后,目標(biāo)節(jié)點(diǎn)n4與目標(biāo)位置t之間的距離小于等于預(yù)設(shè)閾值,則人體模型對目標(biāo)人體的模擬完畢,如果目標(biāo)節(jié)點(diǎn)n4與目標(biāo)位置t之前的距離大于預(yù)設(shè)閾值,則需要再一次控制人體模型按上述移動過程進(jìn)行移動,直到目標(biāo)節(jié)點(diǎn)n4與目標(biāo)位置t之間的距離小于等于預(yù)設(shè)閾值。
可選地,位置信息包括追蹤器的朝向,根據(jù)獲取到的位置信息控制虛擬現(xiàn)實(shí)中的人體模型進(jìn)行移動包括:將獲取到的位置信息中的任意一個位置信息所表示的朝向作為目標(biāo)朝向;判斷人體模型的目標(biāo)節(jié)點(diǎn)的當(dāng)前朝向與目標(biāo)朝向之間的目標(biāo)角度是否大于第二預(yù)設(shè)閾值;如果目標(biāo)角度大于第二預(yù)設(shè)閾值,則控制目標(biāo)節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)的所有父節(jié)點(diǎn)按照第一預(yù)設(shè)角度進(jìn)行旋轉(zhuǎn),其中,目標(biāo)節(jié)點(diǎn)旋轉(zhuǎn)的角度等于第二預(yù)設(shè)閾值,目標(biāo)節(jié)點(diǎn)的所有父節(jié)點(diǎn)的旋轉(zhuǎn)角度小于或者等于目標(biāo)節(jié)點(diǎn)的旋轉(zhuǎn)角度;如果目標(biāo)角度小于或者等于第二預(yù)設(shè)閾值,則控制目標(biāo)節(jié)點(diǎn)按照目標(biāo)角度進(jìn)行旋轉(zhuǎn),并控制目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)按照第二預(yù)設(shè)角度進(jìn)行旋轉(zhuǎn),其中,第二預(yù)設(shè)角度小于或者等于目標(biāo)角度。
作為本發(fā)明實(shí)施例的一種可選的實(shí)施方式,根據(jù)獲取到的追蹤器的角度,控制人體模型的身體部位進(jìn)行轉(zhuǎn)動,以對目標(biāo)人體進(jìn)行模擬。由于目標(biāo)人體身體部位的轉(zhuǎn)動角度是有限制的,在控制人體模型模擬目標(biāo)人體進(jìn)行轉(zhuǎn)動時,設(shè)置第二閾值,在根據(jù)獲取到的追蹤器的角度信息確定的需要轉(zhuǎn)動的目標(biāo)角度大于第二閾值時,控制目標(biāo)節(jié)點(diǎn)與目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)按照第一預(yù)設(shè)角度進(jìn)行旋轉(zhuǎn),可選地,控制目標(biāo)節(jié)點(diǎn)與目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)按照第一預(yù)設(shè)角度進(jìn)行旋轉(zhuǎn)時,控制目標(biāo)節(jié)點(diǎn)按照第二閾值進(jìn)行轉(zhuǎn)動,同時控制目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)按照小于等于第二閾值的角度進(jìn)行旋轉(zhuǎn),如果根據(jù)獲取到的追蹤器的角度信息確定的需要轉(zhuǎn)動的目標(biāo)角度小于或者等于第二閾值時,控制目標(biāo)節(jié)點(diǎn)與目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)按照第二預(yù)設(shè)角度進(jìn)行旋轉(zhuǎn),具體地,控制目標(biāo)節(jié)點(diǎn)按照目標(biāo)角度進(jìn)行旋轉(zhuǎn),控制目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)按照小于等于目標(biāo)角度的旋轉(zhuǎn)角度進(jìn)行旋轉(zhuǎn)??蛇x地,在目標(biāo)節(jié)點(diǎn)有多個父節(jié)點(diǎn)時,目標(biāo)節(jié)點(diǎn)的多個父節(jié)點(diǎn)轉(zhuǎn)動的角度均小于等于目標(biāo)節(jié)點(diǎn)的轉(zhuǎn)動角度,并且所有節(jié)點(diǎn)中,父節(jié)點(diǎn)的轉(zhuǎn)動角度小于等于其子節(jié)點(diǎn)的轉(zhuǎn)動角度。
例如:目標(biāo)節(jié)點(diǎn)為頭部節(jié)點(diǎn),第二預(yù)設(shè)閾值為90度,則在人體模型對目標(biāo)人體進(jìn)行模擬時,當(dāng)根據(jù)追蹤器的角度信息確定的需要轉(zhuǎn)動的目標(biāo)角度大于90度時,控制人體模型按照90度轉(zhuǎn)動頭部,可選地,可以控制頸部按同一方向轉(zhuǎn)動70度,控制脊柱按同一方向轉(zhuǎn)動50度。如果根據(jù)追蹤器的角度信息確定的需要轉(zhuǎn)動的目標(biāo)角度為60度時,控制人體模型按照60度轉(zhuǎn)動頭部,可選地,可以控制頸部按同一方向轉(zhuǎn)動30度,控制脊柱按同一方向轉(zhuǎn)動15度。
可選地,追蹤器集合至少包括頭部追蹤器,獲取目標(biāo)人體的追蹤器集合中所有追蹤器的位置信息包括:獲取頭部追蹤器的頭部位置信息;根據(jù)獲取到的位置信息控制虛擬現(xiàn)實(shí)中的人體模型進(jìn)行移動包括:根據(jù)頭部位置信息控制人體模型進(jìn)行以下至少一個動作:頭部轉(zhuǎn)動、身體彎曲和身體移動。
在本發(fā)明實(shí)施例中,追蹤器集合中至少包括頭部追蹤器,根據(jù)頭部追蹤器的位置信息,控制人體模型對目標(biāo)人體的動作進(jìn)行模擬,其中,人體模型可以對目標(biāo)人體的頭部轉(zhuǎn)動、身體彎曲和身體移動進(jìn)行模擬。
可選地,在根據(jù)獲取到的位置信息控制虛擬現(xiàn)實(shí)中的人體模型進(jìn)行移動之前,方法包括:將人體模型的左手節(jié)點(diǎn)和右手節(jié)點(diǎn)合并為手部節(jié)點(diǎn);和/或?qū)⑷梭w模型的左腿節(jié)點(diǎn)和右腿節(jié)點(diǎn)合并為腿部節(jié)點(diǎn),其中,合并得到的手部節(jié)點(diǎn)和腿部節(jié)點(diǎn)為人體模型頭部節(jié)點(diǎn)的父節(jié)點(diǎn)。
作為本發(fā)明實(shí)施例的一種可選的實(shí)施方式,獲取頭部追蹤器的位置信息,并根據(jù)該位置信息控制人體模型對目標(biāo)人體的動作進(jìn)行模擬之前,可以將人體模型的節(jié)點(diǎn)進(jìn)行簡化,并以頭部節(jié)點(diǎn)作為目標(biāo)節(jié)點(diǎn),控制頭部節(jié)點(diǎn)和頭部節(jié)點(diǎn)的父節(jié)點(diǎn)進(jìn)行移動,以使人體模型對目標(biāo)人體的動作進(jìn)行模擬。具體地,可以將左手節(jié)點(diǎn)和右手節(jié)點(diǎn)合并為手部節(jié)點(diǎn),將左腿節(jié)點(diǎn)和右腿節(jié)點(diǎn)合并為腿部節(jié)點(diǎn),將合并得到的手部節(jié)點(diǎn)和/或腿部節(jié)點(diǎn)作為頭部節(jié)點(diǎn)的父節(jié)點(diǎn),在頭部節(jié)點(diǎn)移動時,控制手部節(jié)點(diǎn)和/或腿部節(jié)點(diǎn)進(jìn)行相應(yīng)的移動。
以追蹤器集合包括頭部追蹤器和手部追蹤器為例,控制人體模型模擬目標(biāo)人體時,通過頭部節(jié)點(diǎn)模擬目標(biāo)人體的頭部及身體動作,通過手部節(jié)點(diǎn)模擬目標(biāo)人體的雙手和雙臂動作,圖3所示的人體骨架可以拆分為圖5和圖6所示的兩個部分,其中,圖5示出了頭部、身體、雙腿的骨架部分,圖6示出了雙手和雙臂的骨架部分,如圖7所示,可以對圖6所示的骨架部分進(jìn)行簡化。將左腿骨與右腿骨進(jìn)行合并,以左腿骨和右腿骨的中點(diǎn)作為合并后腿骨,將左腳與右腳進(jìn)行合并,以左腳和右腳的中點(diǎn)作為合并后的腳,合并得到的腿骨與腳作為頭部的父節(jié)點(diǎn)。
可選地,追蹤器集合至少包括頭部追蹤器和手部追蹤器,獲取目標(biāo)人體的追蹤器集合中所有追蹤器的位置信息包括:獲取頭部追蹤器的頭部位置信息和手部追蹤器的手部位置信息;根據(jù)獲取到的位置信息控制虛擬現(xiàn)實(shí)中的人體模型進(jìn)行移動包括:根據(jù)頭部位置信息和手部位置信息控制人體模型進(jìn)行以下至少一個動作:頭部轉(zhuǎn)動、身體彎曲、身體移動、手臂移動、手臂彎曲和手臂旋轉(zhuǎn)。
作為本發(fā)明實(shí)施例的一種可選的實(shí)施方式,追蹤器集合包括頭部追蹤器和手部追蹤器時,通過頭部追蹤器獲取目標(biāo)人體的頭部位置信息,通過手部追蹤器獲取目標(biāo)人體的手部位置信息,根據(jù)頭部位置信息對目標(biāo)人體的頭部及身體動作進(jìn)行模擬,根據(jù)手部位置信息對目標(biāo)人體的手部及手臂動作進(jìn)行模擬。
可選地,追蹤器集合至少包括頭部追蹤器、手部追蹤器和腳部追蹤器,獲取目標(biāo)人體的追蹤器集合中所有追蹤器的位置信息包括:獲取頭部追蹤器的頭部位置信息、手部追蹤器的手部位置信息和腳部追蹤器的腳部位置信息;根據(jù)獲取到的位置信息控制虛擬現(xiàn)實(shí)中的人體模型進(jìn)行移動包括:根據(jù)頭部位置信息、手部位置信息和腳部位置信息控制人體模型進(jìn)行以下至少一個動作:頭部轉(zhuǎn)動、身體彎曲、身體移動、手臂移動、手臂彎曲、手臂旋轉(zhuǎn)、腿部移動、腿部彎曲和腿部旋轉(zhuǎn)。
作為本發(fā)明實(shí)施例的一種可選的實(shí)施方式,追蹤器集合包括頭部追蹤器、手部追蹤器和腳部追蹤器時,通過頭部追蹤器獲取目標(biāo)人體的頭部位置信息,通過手部追蹤器獲取目標(biāo)人體的手部位置信息,通過腳部追蹤器獲取目標(biāo)人體的腳部位置信息,根據(jù)頭部位置信息對目標(biāo)人體的頭部及身體動作進(jìn)行模擬,根據(jù)手部位置信息對目標(biāo)人體的手部及手臂動作進(jìn)行模擬,根據(jù)腳部位置信息對目標(biāo)人體的雙腳及雙腿動作進(jìn)行模擬。
可選地,在獲取在虛擬現(xiàn)實(shí)中顯示的人體模型之前,方法還包括:建立具有預(yù)設(shè)身體比例的人體模型;根據(jù)追蹤器的位置信息獲取目標(biāo)人體的實(shí)際身體比例;根據(jù)實(shí)際身體比例縮放人體模型,以使人體模型的身體比例與目標(biāo)人體的身體比例一致。
作為本發(fā)明實(shí)施例的一種可選的實(shí)施方式,為了提高人體模型與目標(biāo)人體的相似度,建立一個與目標(biāo)人體的實(shí)際身體比例一致的人體模型。具體地,先建立一個具有標(biāo)準(zhǔn)身體比例的人體模型,然后根據(jù)配置在目標(biāo)人體上的追蹤器的位置信息,獲取目標(biāo)人體的實(shí)際身體比例關(guān)系,如:根據(jù)目標(biāo)人體頭部追蹤器的位置信息可以得知目標(biāo)人體的身高,再根據(jù)目標(biāo)人體的手部的位置信息,得知目標(biāo)人體的手臂長度。最后,按照目標(biāo)人體的實(shí)際身體比例關(guān)系,對上述具有標(biāo)準(zhǔn)身體比例的人體模型進(jìn)行縮放,以使人體模型的身體比例關(guān)系與目標(biāo)人體的實(shí)際身體比例一致。
需要說明的是,對于前述的各方法實(shí)施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到根據(jù)上述實(shí)施例的方法可借助軟件加必需的通用硬件平臺的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例所述的方法。
實(shí)施例2
根據(jù)本發(fā)明實(shí)施例,還提供了一種用于實(shí)施上述虛擬現(xiàn)實(shí)中人體的模擬方法的虛擬現(xiàn)實(shí)中人體的模擬裝置,該虛擬現(xiàn)實(shí)中人體的模擬裝置主要用于執(zhí)行本發(fā)明實(shí)施例上述內(nèi)容所提供的虛擬現(xiàn)實(shí)中人體的模擬方法,以下對本發(fā)明實(shí)施例所提供的虛擬現(xiàn)實(shí)中人體的模擬裝置做具體介紹:
圖8是根據(jù)本發(fā)明實(shí)施例的一種可選的虛擬現(xiàn)實(shí)中人體的模擬裝置的示意圖,如圖8所示,該虛擬現(xiàn)實(shí)中人體的模擬裝置主要包括:
第一獲取單元810,用于獲取在虛擬現(xiàn)實(shí)中顯示的人體模型,其中,人體模型用于對真實(shí)環(huán)境中的目標(biāo)人體進(jìn)行模擬。
虛擬現(xiàn)實(shí)技術(shù)是一種可以創(chuàng)建虛擬世界的計(jì)算機(jī)仿真系統(tǒng),它利用計(jì)算機(jī)生成一種多源信息融合的、交互式的三維動態(tài)視景的模擬環(huán)境,通過在該環(huán)境中對用戶的實(shí)體行為進(jìn)行仿真使用戶沉浸到該環(huán)境中。在虛擬現(xiàn)實(shí)中顯示的人體模型用于對用戶的實(shí)體行為進(jìn)行模擬,通過控制人體模型對用戶進(jìn)行的模擬,并使人體模型模擬出的動作更加接近用戶的實(shí)體行為,從而使用戶在虛擬現(xiàn)實(shí)中的交互更加真實(shí),提高用戶體驗(yàn)。
第二獲取單元820,用于獲取目標(biāo)人體的追蹤器集合中所有追蹤器的位置信息,其中,追蹤器集合包括至少一個設(shè)置在目標(biāo)人體的預(yù)定身體部分上的追蹤器。
在本發(fā)明實(shí)施例中,追蹤器配置在目標(biāo)人體的預(yù)定身體部位上,在目標(biāo)人體的預(yù)定身體部位做出動作時,追蹤器的位置也相應(yīng)的發(fā)生變化,因此,追蹤器的位置信息即目標(biāo)人體的預(yù)定身體部位的位置信息。如圖1所示,當(dāng)目標(biāo)人體轉(zhuǎn)頭時,目標(biāo)人體所佩帶的頭盔(相當(dāng)于頭部追蹤器)的朝向也發(fā)生變化,而根據(jù)頭盔的朝向,即可獲取目標(biāo)人體的頭部朝向;當(dāng)目標(biāo)人體抬高手臂時,目標(biāo)人體所持的手柄(相當(dāng)于手部追蹤器)的位置也會發(fā)生變化,而根據(jù)目標(biāo)人體所持的手柄的位置,即可獲取目標(biāo)人體的手部及手臂的位置。
控制單元830,用于根據(jù)獲取到的位置信息控制虛擬現(xiàn)實(shí)中的人體模型進(jìn)行移動,以使人體模型模擬目標(biāo)人體的動作。
根據(jù)逆向動力學(xué)的原理,可以通過先確定子骨骼的位置,然后反求推導(dǎo)出其所在的骨骼鏈上n級父骨骼的位置,從而確定整條骨骼鏈的位置。在本發(fā)明實(shí)施例中,在控制人體模型對目標(biāo)人體進(jìn)行模擬時,根據(jù)獲取到的追蹤器的位置信息,確定人體模型各部位的位置信息,進(jìn)而根據(jù)逆向動力學(xué)反求推導(dǎo)出其他部位的位置信息,從而確定出整個人體模型的所有部位的位置信息,以使人體模型對目標(biāo)人體的動作進(jìn)行真實(shí)的模擬。
在本發(fā)明實(shí)施例中,采用獲取在虛擬現(xiàn)實(shí)中顯示的人體模型,其中,人體模型用于對真實(shí)環(huán)境中的目標(biāo)人體進(jìn)行模擬;獲取目標(biāo)人體的追蹤器集合中所有追蹤器的位置信息,其中,追蹤器集合包括至少一個設(shè)置在目標(biāo)人體的預(yù)定身體部位上的追蹤器;根據(jù)獲取到的位置信息控制虛擬現(xiàn)實(shí)中的人體模型進(jìn)行移動,以使人體模型模擬目標(biāo)人體的動作,通過根據(jù)目標(biāo)人體的預(yù)定身體部位上的追蹤器的位置信息,控制虛擬現(xiàn)實(shí)中的人體模型進(jìn)行移動,達(dá)到了控制人體模型模擬目標(biāo)人體動作的目的,從而實(shí)現(xiàn)了根據(jù)目標(biāo)人體的預(yù)定身體部位的位置信息,控制人體模型對目標(biāo)人體的動作進(jìn)行模擬的技術(shù)效果,進(jìn)而解決了虛擬現(xiàn)實(shí)中無法對人體動作進(jìn)行真實(shí)模擬的技術(shù)問題。
可選地,位置信息包括追蹤器的位置,控制單元包括:位置模塊,用于將獲取到的位置信息中的任意一個位置信息所表示的位置作為目標(biāo)位置;第一判斷模塊,用于判斷人體模型的目標(biāo)節(jié)點(diǎn)的當(dāng)前位置與目標(biāo)位置之間的距離是否大于第一預(yù)設(shè)閾值,其中,目標(biāo)節(jié)點(diǎn)與目標(biāo)位置對應(yīng)的目標(biāo)人體的預(yù)定身體部位相關(guān)聯(lián);第一控制模塊,用于在如果目標(biāo)節(jié)點(diǎn)的當(dāng)前位置與目標(biāo)位置之間的距離大于第一預(yù)設(shè)閾值時,控制目標(biāo)節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)的所有父節(jié)點(diǎn)進(jìn)行移動,其中,目標(biāo)節(jié)點(diǎn)與父節(jié)點(diǎn)用于模擬目標(biāo)人體中一個骨骼鏈的多個骨骼。
作為本發(fā)明實(shí)施例的一種可選的實(shí)施方式,追蹤器的位置信息包括追蹤器的位置,將追蹤器位置為作目標(biāo)位置,將用于對目標(biāo)人體進(jìn)行模擬的人體模型的相應(yīng)部位作為目標(biāo)節(jié)點(diǎn),則控制人體模型對目標(biāo)人體進(jìn)行模擬需要控制目標(biāo)節(jié)點(diǎn)移動到目標(biāo)位置。在本發(fā)明實(shí)施例中,設(shè)置一個預(yù)設(shè)閾值,如果目標(biāo)節(jié)點(diǎn)與目標(biāo)位置的距離大于該預(yù)設(shè)閾值,則需要控制目標(biāo)節(jié)點(diǎn)移動到目標(biāo)位置,在控制目標(biāo)節(jié)點(diǎn)移動到目標(biāo)位置是過程中,還要同時控制目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)隨目標(biāo)節(jié)點(diǎn)為的移動而移動,從而達(dá)到對目標(biāo)人體進(jìn)行真實(shí)模擬的目的。如果目標(biāo)節(jié)點(diǎn)與目標(biāo)位置的距離小于或者等于預(yù)設(shè)閾值,則認(rèn)為目標(biāo)節(jié)點(diǎn)近似位于目標(biāo)位置,無需再移動目標(biāo)節(jié)點(diǎn)。在本發(fā)明實(shí)施例中,目標(biāo)節(jié)點(diǎn)為處于目標(biāo)位置的目標(biāo)人體的預(yù)定身體部位所對應(yīng)的人體模型節(jié)點(diǎn)。目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)同樣對應(yīng)的目標(biāo)人體身體部位,該身體部位為與目標(biāo)人體的預(yù)定身體部位處于同一骨骼鏈上,且為目標(biāo)人體的預(yù)定身體部位的父骨骼。
圖3是標(biāo)準(zhǔn)人體骨架的示意圖,如圖3所示,圖3中每一個骨骼對應(yīng)于人體模型中的一個節(jié)點(diǎn),其中,頸骨和脊柱為頭骨的父骨骼,頸骨和脊柱在人體模型中對應(yīng)的節(jié)點(diǎn)為頭骨骼所對應(yīng)的節(jié)點(diǎn)的父節(jié)點(diǎn)。同樣地,胳膊和鎖骨為手的父骨骼,上腿骨和腿骨為腳的父骨骼,則胳膊和鎖骨在人體模型中對應(yīng)的節(jié)點(diǎn)為手對應(yīng)的節(jié)點(diǎn)的父節(jié)點(diǎn),上腿骨和腿骨在人體模型中對應(yīng)的節(jié)點(diǎn)為腳對應(yīng)的節(jié)點(diǎn)的父節(jié)點(diǎn)。
可選地,第一控制模塊包括:獲取子模塊,用于獲取目標(biāo)節(jié)點(diǎn)的所有父節(jié)點(diǎn)與目標(biāo)位置的位置關(guān)系;旋轉(zhuǎn)節(jié)點(diǎn)子模塊,用于根據(jù)位置關(guān)系選擇與目標(biāo)節(jié)點(diǎn)相鄰的父節(jié)點(diǎn)作為旋轉(zhuǎn)節(jié)點(diǎn);旋轉(zhuǎn)子模塊,用于保持旋轉(zhuǎn)節(jié)點(diǎn)與旋轉(zhuǎn)節(jié)點(diǎn)的所有子節(jié)點(diǎn)的距離不變,旋轉(zhuǎn)該旋轉(zhuǎn)節(jié)點(diǎn)的所有子節(jié)點(diǎn),以使目標(biāo)節(jié)點(diǎn)移動到旋轉(zhuǎn)節(jié)點(diǎn)與目標(biāo)位置的連線上;重復(fù)子模塊,用于重新選擇與旋轉(zhuǎn)節(jié)點(diǎn)相鄰的父節(jié)點(diǎn)作為旋轉(zhuǎn)節(jié)點(diǎn),直到目標(biāo)節(jié)點(diǎn)的所有父節(jié)點(diǎn)全部選擇完畢。
作為本發(fā)明實(shí)施例的一種可選的實(shí)施方式,在目標(biāo)節(jié)點(diǎn)與目標(biāo)位置的距離大于預(yù)設(shè)閾值時,控制目標(biāo)節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)進(jìn)行移動,以使人體模型對目標(biāo)人體進(jìn)行模擬,具體的控制移動方式如圖4所示,在圖4中,n1,n2,n3,n4為人體模型中的4個節(jié)點(diǎn),n1,n2,n3,n4對應(yīng)的目標(biāo)人體的身體部位處于同一骨骼鏈上,且n1,n2,n3對應(yīng)的身體部位為n4對應(yīng)的身體部位的父骨骼,則n1,n2,n3為n4的父節(jié)點(diǎn)。在控制人體模型對目標(biāo)人體進(jìn)行模擬時,n4為目標(biāo)節(jié)點(diǎn),n4對應(yīng)的目標(biāo)人體的預(yù)定身體部位上配置有追蹤器,t為獲取到的追蹤器的位置,即目標(biāo)位置。在控制目標(biāo)節(jié)點(diǎn)n4和目標(biāo)節(jié)點(diǎn)n4的所有父節(jié)點(diǎn)移動之前,首先獲取目標(biāo)節(jié)點(diǎn)n4的所有父節(jié)點(diǎn)n1,n2,n3與目標(biāo)位置t的位置關(guān)系,可選的,可以通過將父節(jié)點(diǎn)n1,n2,n3與目標(biāo)位置t進(jìn)行連線以確定其位置關(guān)系。首次移動,首先選擇與目標(biāo)節(jié)點(diǎn)n4相鄰的父節(jié)點(diǎn)n3作為旋轉(zhuǎn)節(jié)點(diǎn),保持旋轉(zhuǎn)節(jié)點(diǎn)n3與其所有子節(jié)點(diǎn)(節(jié)點(diǎn)n4)的距離不變,即保持n3n4長度不變,旋轉(zhuǎn)移動節(jié)點(diǎn)n4,將n4移動至節(jié)點(diǎn)n3和目標(biāo)位置t的連線上。可選的,在旋轉(zhuǎn)移動過程中,節(jié)點(diǎn)n4所移動的角度為可能移動的最小角度,在上述首次移動過程中,節(jié)點(diǎn)n4移動的角度為a1。第二次移動,選擇當(dāng)前旋轉(zhuǎn)節(jié)點(diǎn)n3相鄰的父節(jié)點(diǎn)(n2)作為新的旋轉(zhuǎn)節(jié)點(diǎn),保持旋轉(zhuǎn)節(jié)點(diǎn)n2與其所有子節(jié)點(diǎn)(節(jié)點(diǎn)n3,n4)的距離不變,即保持n2n3、n2n4和n3n4的長度不變,旋轉(zhuǎn)移動節(jié)點(diǎn)n3和節(jié)點(diǎn)n4,將n4移動至節(jié)點(diǎn)n2和目標(biāo)位置t的連線上,在上述第二次移動過程中,節(jié)點(diǎn)n3和節(jié)點(diǎn)n4移動的角度為a2。按上述移動方法,直到目標(biāo)節(jié)點(diǎn)n4的所有父節(jié)點(diǎn)全部被選擇完畢。在圖4中,第三次移動過程選擇目標(biāo)節(jié)點(diǎn)n4的父節(jié)點(diǎn)n1作為旋轉(zhuǎn)節(jié)點(diǎn),并保持節(jié)點(diǎn)n1,n2,n3,n4之間的距離不變,旋轉(zhuǎn)移動節(jié)點(diǎn)n2,n3,n4,使節(jié)點(diǎn)n4移動到節(jié)點(diǎn)n1與目標(biāo)位置的連線上。至此,完成一次人體模型對目標(biāo)人體動作的模擬。需要說明的是,如果在完成上述移動之后,目標(biāo)節(jié)點(diǎn)n4與目標(biāo)位置t之間的距離小于等于預(yù)設(shè)閾值,則人體模型對目標(biāo)人體的模擬完畢,如果目標(biāo)節(jié)點(diǎn)n4與目標(biāo)位置t之前的距離大于預(yù)設(shè)閾值,則需要再一次控制人體模型按上述移動過程進(jìn)行移動,直到目標(biāo)節(jié)點(diǎn)n4與目標(biāo)位置t之間的距離小于等于預(yù)設(shè)閾值。
可選地,位置信息包括追蹤器的朝向,控制單元包括:朝向模塊,用于將獲取到的位置信息中的任意一個位置信息所表示的朝向作為目標(biāo)朝向;第二判斷模塊,用于判斷人體模型的目標(biāo)節(jié)點(diǎn)的當(dāng)前朝向與目標(biāo)朝向之間的目標(biāo)角度是否大于第二預(yù)設(shè)閾值;第二控制模塊,用于在目標(biāo)角度大于第二預(yù)設(shè)閾值時,控制目標(biāo)節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)的所有父節(jié)點(diǎn)按照第一預(yù)設(shè)角度進(jìn)行旋轉(zhuǎn),其中,目標(biāo)節(jié)點(diǎn)旋轉(zhuǎn)的角度等于第二預(yù)設(shè)閾值,目標(biāo)節(jié)點(diǎn)的所有父節(jié)點(diǎn)的旋轉(zhuǎn)角度小于或者等于目標(biāo)節(jié)點(diǎn)的旋轉(zhuǎn)角度;第三控制模塊,用于在目標(biāo)角度小于或者等于第二預(yù)設(shè)閾值時,控制目標(biāo)節(jié)點(diǎn)按照目標(biāo)角度進(jìn)行旋轉(zhuǎn),并控制目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)按照第二預(yù)設(shè)角度進(jìn)行旋轉(zhuǎn),其中,第二預(yù)設(shè)角度小于或者等于目標(biāo)角度。
作為本發(fā)明實(shí)施例的一種可選的實(shí)施方式,根據(jù)獲取到的追蹤器的角度,控制人體模型的身體部位進(jìn)行轉(zhuǎn)動,以對目標(biāo)人體進(jìn)行模擬。由于目標(biāo)人體身體部位的轉(zhuǎn)動角度是有限制的,在控制人體模型模擬目標(biāo)人體進(jìn)行轉(zhuǎn)動時,設(shè)置第二閾值,在根據(jù)獲取到的追蹤器的角度信息確定的需要轉(zhuǎn)動的目標(biāo)角度大于第二閾值時,控制目標(biāo)節(jié)點(diǎn)與目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)按照第一預(yù)設(shè)角度進(jìn)行旋轉(zhuǎn),可選地,控制目標(biāo)節(jié)點(diǎn)與目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)按照第一預(yù)設(shè)角度進(jìn)行旋轉(zhuǎn)時,控制目標(biāo)節(jié)點(diǎn)按照第二閾值進(jìn)行轉(zhuǎn)動,同時控制目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)按照小于等于第二閾值的角度進(jìn)行旋轉(zhuǎn),如果根據(jù)獲取到的追蹤器的角度信息確定的需要轉(zhuǎn)動的目標(biāo)角度小于或者等于第二閾值時,控制目標(biāo)節(jié)點(diǎn)與目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)按照第二預(yù)設(shè)角度進(jìn)行旋轉(zhuǎn),具體地,控制目標(biāo)節(jié)點(diǎn)按照目標(biāo)角度進(jìn)行旋轉(zhuǎn),控制目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)按照小于等于目標(biāo)角度的旋轉(zhuǎn)角度進(jìn)行旋轉(zhuǎn)??蛇x地,在目標(biāo)節(jié)點(diǎn)有多個父節(jié)點(diǎn)時,目標(biāo)節(jié)點(diǎn)的多個父節(jié)點(diǎn)轉(zhuǎn)動的角度均小于等于目標(biāo)節(jié)點(diǎn)的轉(zhuǎn)動角度,并且所有節(jié)點(diǎn)中,父節(jié)點(diǎn)的轉(zhuǎn)動角度小于等于其子節(jié)點(diǎn)的轉(zhuǎn)動角度。
例如:目標(biāo)節(jié)點(diǎn)為頭部節(jié)點(diǎn),第二預(yù)設(shè)閾值為90度,則在人體模型對目標(biāo)人體進(jìn)行模擬時,當(dāng)根據(jù)追蹤器的角度信息確定的需要轉(zhuǎn)動的目標(biāo)角度大于90度時,控制人體模型按照90度轉(zhuǎn)動頭部,可選地,可以控制頸部按同一方向轉(zhuǎn)動70度,控制脊柱按同一方向轉(zhuǎn)動50度。如果根據(jù)追蹤器的角度信息確定的需要轉(zhuǎn)動的目標(biāo)角度為60度時,控制人體模型按照60度轉(zhuǎn)動頭部,可選地,可以控制頸部按同一方向轉(zhuǎn)動30度,控制脊柱按同一方向轉(zhuǎn)動15度。
可選地,追蹤器集合至少包括頭部追蹤器,第二獲取單元包括:第一獲取模塊,用于獲取頭部追蹤器的頭部位置信息;控制單元包括:第四控制模塊,用于根據(jù)頭部位置信息控制人體模型進(jìn)行以下至少一個動作:頭部轉(zhuǎn)動、身體彎曲和身體移動。
在本發(fā)明實(shí)施例中,追蹤器集合中至少包括頭部追蹤器,根據(jù)頭部追蹤器的位置信息,控制人體模型對目標(biāo)人體的動作進(jìn)行模擬,其中,人體模型可以對目標(biāo)人體的頭部轉(zhuǎn)動、身體彎曲和身體移動進(jìn)行模擬。
可選地,裝置包括:第一合并單元,用于在根據(jù)獲取到的位置信息控制虛擬現(xiàn)實(shí)中的人體模型進(jìn)行移動之前,將人體模型的左手節(jié)點(diǎn)和右手節(jié)點(diǎn)合并為手部節(jié)點(diǎn);和/或第二合并單元,用于在根據(jù)獲取到的位置信息控制虛擬現(xiàn)實(shí)中的人體模型進(jìn)行移動之前,將人體模型的左腿節(jié)點(diǎn)和右腿節(jié)點(diǎn)合并為腿部節(jié)點(diǎn),其中,合并得到的手部節(jié)點(diǎn)和腿部節(jié)點(diǎn)為人體模型頭部節(jié)點(diǎn)的父節(jié)點(diǎn)。
作為本發(fā)明實(shí)施例的一種可選的實(shí)施方式,獲取頭部追蹤器的位置信息,并根據(jù)該位置信息控制人體模型對目標(biāo)人體的動作進(jìn)行模擬之前,可以將人體模型的節(jié)點(diǎn)進(jìn)行簡化,并以頭部節(jié)點(diǎn)作為目標(biāo)節(jié)點(diǎn),控制頭部節(jié)點(diǎn)和頭部節(jié)點(diǎn)的父節(jié)點(diǎn)進(jìn)行移動,以使人體模型對目標(biāo)人體的動作進(jìn)行模擬。具體地,可以將左手節(jié)點(diǎn)和右手節(jié)點(diǎn)合并為手部節(jié)點(diǎn),將左腿節(jié)點(diǎn)和右腿節(jié)點(diǎn)合并為腿部節(jié)點(diǎn),將合并得到的手部節(jié)點(diǎn)和/或腿部節(jié)點(diǎn)作為頭部節(jié)點(diǎn)的父節(jié)點(diǎn),在頭部節(jié)點(diǎn)移動時,控制手部節(jié)點(diǎn)和/或腿部節(jié)點(diǎn)進(jìn)行相應(yīng)的移動。
以追蹤器集合包括頭部追蹤器和手部追蹤器為例,控制人體模型模擬目標(biāo)人體時,通過頭部節(jié)點(diǎn)模擬目標(biāo)人體的頭部及身體動作,通過手部節(jié)點(diǎn)模擬目標(biāo)人體的雙手和雙臂動作,圖3所示的人體骨架可以拆分為圖5和圖6所示的兩個部分,其中,圖5示出了頭部、身體、雙腿的骨架部分,圖6示出了雙手和雙臂的骨架部分,如圖7所示,可以對圖6所示的骨架部分進(jìn)行簡化。將左腿骨與右腿骨進(jìn)行合并,以左腿骨和右腿骨的中點(diǎn)作為合并后腿骨,將左腳與右腳進(jìn)行合并,以左腳和右腳的中點(diǎn)作為合并后的腳,合并得到的腿骨與腳作為頭部的父節(jié)點(diǎn)。
可選地,追蹤器集合至少包括頭部追蹤器和手部追蹤器,第二獲取單元包括:第二獲取模塊,用于獲取頭部追蹤器的頭部位置信息和手部追蹤器的手部位置信息;控制單元包括:第五控制模塊,用于根據(jù)頭部位置信息和手部位置信息控制人體模型進(jìn)行以下至少一個動作:頭部轉(zhuǎn)動、身體彎曲、身體移動、手臂移動、手臂彎曲和手臂旋轉(zhuǎn)。
作為本發(fā)明實(shí)施例的一種可選的實(shí)施方式,追蹤器集合包括頭部追蹤器和手部追蹤器時,通過頭部追蹤器獲取目標(biāo)人體的頭部位置信息,通過手部追蹤器獲取目標(biāo)人體的手部位置信息,根據(jù)頭部位置信息對目標(biāo)人體的頭部及身體動作進(jìn)行模擬,根據(jù)手部位置信息對目標(biāo)人體的手部及手臂動作進(jìn)行模擬。
可選地,追蹤器集合至少包括頭部追蹤器、手部追蹤器和腳部追蹤器,第二獲取單元包括:第三獲取模塊,用于獲取頭部追蹤器的頭部位置信息、手部追蹤器的手部位置信息和腳部追蹤器的腳部位置信息;控制單元包括:第六控制模塊,用于根據(jù)頭部位置信息、手部位置信息和腳部位置信息控制人體模型進(jìn)行以下至少一個動作:頭部轉(zhuǎn)動、身體彎曲、身體移動、手臂移動、手臂彎曲、手臂旋轉(zhuǎn)、腿部移動、腿部彎曲和腿部旋轉(zhuǎn)。
作為本發(fā)明實(shí)施例的一種可選的實(shí)施方式,追蹤器集合包括頭部追蹤器、手部追蹤器和腳部追蹤器時,通過頭部追蹤器獲取目標(biāo)人體的頭部位置信息,通過手部追蹤器獲取目標(biāo)人體的手部位置信息,通過腳部追蹤器獲取目標(biāo)人體的腳部位置信息,根據(jù)頭部位置信息對目標(biāo)人體的頭部及身體動作進(jìn)行模擬,根據(jù)手部位置信息對目標(biāo)人體的手部及手臂動作進(jìn)行模擬,根據(jù)腳部位置信息對目標(biāo)人體的雙腳及雙腿動作進(jìn)行模擬。
可選地,裝置還包括:建立單元,用于在獲取在虛擬現(xiàn)實(shí)中顯示的人體模型之前,建立具有預(yù)設(shè)身體比例的人體模型;第三獲取單元,用于根據(jù)追蹤器的位置信息獲取目標(biāo)人體的實(shí)際身體比例;縮放單元,用于根據(jù)實(shí)際身體比例縮放人體模型,以使人體模型的身體比例與目標(biāo)人體的身體比例一致。
作為本發(fā)明實(shí)施例的一種可選的實(shí)施方式,為了提高人體模型與目標(biāo)人體的相似度,建立一個與目標(biāo)人體的實(shí)際身體比例一致的人體模型。具體地,先建立一個具有標(biāo)準(zhǔn)身體比例的人體模型,然后根據(jù)配置在目標(biāo)人體上的追蹤器的位置信息,獲取目標(biāo)人體的實(shí)際身體比例關(guān)系,如:根據(jù)目標(biāo)人體頭部追蹤器的位置信息可以得知目標(biāo)人體的身高,再根據(jù)目標(biāo)人體的手部的位置信息,得知目標(biāo)人體的手臂長度。最后,按照目標(biāo)人體的實(shí)際身體比例關(guān)系,對上述具有標(biāo)準(zhǔn)身體比例的人體模型進(jìn)行縮放,以使人體模型的身體比例關(guān)系與目標(biāo)人體的實(shí)際身體比例一致。
實(shí)施例3
根據(jù)本發(fā)明實(shí)施例,還提供了一種用于實(shí)施上述虛擬現(xiàn)實(shí)中人體的模擬方法的終端,如圖9所示,該終端主要包括處理器901、顯示器902和網(wǎng)絡(luò)接口903,其中:
網(wǎng)絡(luò)接口903主要用于與追蹤器進(jìn)行網(wǎng)絡(luò)通信,以獲取追蹤器的位置信息。
顯示器902主要用于顯示用于模擬目標(biāo)人體的人體模型。
處理器901主要用于執(zhí)行如下操作:
獲取在虛擬現(xiàn)實(shí)中顯示的人體模型,其中,人體模型用于對真實(shí)環(huán)境中的目標(biāo)人體進(jìn)行模擬;獲取目標(biāo)人體的追蹤器集合中所有追蹤器的位置信息,其中,追蹤器集合包括至少一個設(shè)置在目標(biāo)人體的預(yù)定身體部分上的追蹤器;根據(jù)獲取到的位置信息控制虛擬現(xiàn)實(shí)中的人體模型進(jìn)行移動,以使人體模型模擬目標(biāo)人體的動作。
處理器901還用于將獲取到的位置信息中的任意一個位置信息所表示的位置作為目標(biāo)位置;判斷人體模型的目標(biāo)節(jié)點(diǎn)的當(dāng)前位置與目標(biāo)位置之間的距離是否大于第一預(yù)設(shè)閾值,其中,目標(biāo)節(jié)點(diǎn)與目標(biāo)位置對應(yīng)的目標(biāo)人體的預(yù)定身體部位相關(guān)聯(lián);如果目標(biāo)節(jié)點(diǎn)的當(dāng)前位置與目標(biāo)位置之間的距離大于第一預(yù)設(shè)閾值,則控制目標(biāo)節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)的所有父節(jié)點(diǎn)進(jìn)行移動,其中,目標(biāo)節(jié)點(diǎn)與父節(jié)點(diǎn)用于模擬目標(biāo)人體中一個骨骼鏈的多個骨骼。
處理器901還用于獲取目標(biāo)節(jié)點(diǎn)的所有父節(jié)點(diǎn)與目標(biāo)位置的位置關(guān)系;根據(jù)位置關(guān)系選擇與目標(biāo)節(jié)點(diǎn)相鄰的父節(jié)點(diǎn)作為旋轉(zhuǎn)節(jié)點(diǎn);保持旋轉(zhuǎn)節(jié)點(diǎn)與旋轉(zhuǎn)節(jié)點(diǎn)的所有子節(jié)點(diǎn)的距離不變,旋轉(zhuǎn)該旋轉(zhuǎn)節(jié)點(diǎn)的所有子節(jié)點(diǎn),以使目標(biāo)節(jié)點(diǎn)移動到旋轉(zhuǎn)節(jié)點(diǎn)與目標(biāo)位置的連線上;重新選擇與旋轉(zhuǎn)節(jié)點(diǎn)相鄰的父節(jié)點(diǎn)作為旋轉(zhuǎn)節(jié)點(diǎn),直到目標(biāo)節(jié)點(diǎn)的所有父節(jié)點(diǎn)全部選擇完畢。
處理器901還用于將獲取到的位置信息中的任意一個位置信息所表示的朝向作為目標(biāo)朝向;判斷人體模型的目標(biāo)節(jié)點(diǎn)的當(dāng)前朝向與目標(biāo)朝向之間的目標(biāo)角度是否大于第二預(yù)設(shè)閾值;如果目標(biāo)角度大于第二預(yù)設(shè)閾值,則控制目標(biāo)節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)的所有父節(jié)點(diǎn)按照第一預(yù)設(shè)角度進(jìn)行旋轉(zhuǎn),其中,目標(biāo)節(jié)點(diǎn)旋轉(zhuǎn)的角度等于第二預(yù)設(shè)閾值,目標(biāo)節(jié)點(diǎn)的所有父節(jié)點(diǎn)的旋轉(zhuǎn)角度小于或者等于目標(biāo)節(jié)點(diǎn)的旋轉(zhuǎn)角度;如果目標(biāo)角度小于或者等于第二預(yù)設(shè)閾值,則控制目標(biāo)節(jié)點(diǎn)按照目標(biāo)角度進(jìn)行旋轉(zhuǎn),并控制目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)按照第二預(yù)設(shè)角度進(jìn)行旋轉(zhuǎn),其中,第二預(yù)設(shè)角度小于或者等于目標(biāo)角度。
處理器901還用于獲取頭部追蹤器的頭部位置信息;根據(jù)頭部位置信息控制人體模型進(jìn)行以下至少一個動作:頭部轉(zhuǎn)動、身體彎曲和身體移動。
處理器901還用于將人體模型的左手節(jié)點(diǎn)和右手節(jié)點(diǎn)合并為手部節(jié)點(diǎn);和/或?qū)⑷梭w模型的左腿節(jié)點(diǎn)和右腿節(jié)點(diǎn)合并為腿部節(jié)點(diǎn),其中,合并得到的手部節(jié)點(diǎn)和腿部節(jié)點(diǎn)為人體模型頭部節(jié)點(diǎn)的父節(jié)點(diǎn)。
處理器901還用于獲取頭部追蹤器的頭部位置信息和手部追蹤器的手部位置信息;根據(jù)頭部位置信息和手部位置信息控制人體模型進(jìn)行以下至少一個動作:頭部轉(zhuǎn)動、身體彎曲、身體移動、手臂移動、手臂彎曲和手臂旋轉(zhuǎn)。
處理器901還用于獲取頭部追蹤器的頭部位置信息、手部追蹤器的手部位置信息和腳部追蹤器的腳部位置信息;根據(jù)頭部位置信息、手部位置信息和腳部位置信息控制人體模型進(jìn)行以下至少一個動作:頭部轉(zhuǎn)動、身體彎曲、身體移動、手臂移動、手臂彎曲、手臂旋轉(zhuǎn)、腿部移動、腿部彎曲和腿部旋轉(zhuǎn)。
處理器901還用于建立具有預(yù)設(shè)身體比例的人體模型;根據(jù)追蹤器的位置信息獲取目標(biāo)人體的實(shí)際身體比例;根據(jù)實(shí)際身體比例縮放人體模型,以使人體模型的身體比例與目標(biāo)人體的身體比例一致。
可選地,本實(shí)施例中的具體示例可以參考上述實(shí)施例1和實(shí)施例2中所描述的示例,本實(shí)施例在此不再贅述。
實(shí)施例4
本發(fā)明的實(shí)施例還提供了一種存儲介質(zhì)??蛇x地,在本實(shí)施例中,上述存儲介質(zhì)可以用于存儲本發(fā)明實(shí)施例的虛擬現(xiàn)實(shí)中人體的模擬方法的程序代碼。
可選地,在本實(shí)施例中,上述存儲介質(zhì)可以位于移動通信網(wǎng)絡(luò)、廣域網(wǎng)、城域網(wǎng)或局域網(wǎng)的網(wǎng)絡(luò)中的多個網(wǎng)絡(luò)設(shè)備中的至少一個網(wǎng)絡(luò)設(shè)備。
可選地,在本實(shí)施例中,存儲介質(zhì)被設(shè)置為存儲用于執(zhí)行以下步驟的程序代碼:
s1,獲取在虛擬現(xiàn)實(shí)中顯示的人體模型,其中,人體模型用于對真實(shí)環(huán)境中的目標(biāo)人體進(jìn)行模擬;
s2,獲取目標(biāo)人體的追蹤器集合中所有追蹤器的位置信息,其中,追蹤器集合包括至少一個設(shè)置在目標(biāo)人體的預(yù)定身體部分上的追蹤器;
s3,根據(jù)獲取到的位置信息控制虛擬現(xiàn)實(shí)中的人體模型進(jìn)行移動,以使人體模型模擬目標(biāo)人體的動作。
可選地,在本實(shí)施例中,上述存儲介質(zhì)可以包括但不限于:u盤、只讀存儲器(rom,read-onlymemory)、隨機(jī)存取存儲器(ram,randomaccessmemory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
可選地,在本實(shí)施例中,處理器根據(jù)存儲介質(zhì)中已存儲的程序代碼執(zhí)行將獲取到的位置信息中的任意一個位置信息所表示的位置作為目標(biāo)位置;判斷人體模型的目標(biāo)節(jié)點(diǎn)的當(dāng)前位置與目標(biāo)位置之間的距離是否大于第一預(yù)設(shè)閾值,其中,目標(biāo)節(jié)點(diǎn)與目標(biāo)位置對應(yīng)的目標(biāo)人體的預(yù)定身體部位相關(guān)聯(lián);如果目標(biāo)節(jié)點(diǎn)的當(dāng)前位置與目標(biāo)位置之間的距離大于第一預(yù)設(shè)閾值,則控制目標(biāo)節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)的所有父節(jié)點(diǎn)進(jìn)行移動,其中,目標(biāo)節(jié)點(diǎn)與父節(jié)點(diǎn)用于模擬目標(biāo)人體中一個骨骼鏈的多個骨骼。
可選地,在本實(shí)施例中,處理器根據(jù)存儲介質(zhì)中已存儲的程序代碼執(zhí)行獲取目標(biāo)節(jié)點(diǎn)的所有父節(jié)點(diǎn)與目標(biāo)位置的位置關(guān)系;根據(jù)位置關(guān)系選擇與目標(biāo)節(jié)點(diǎn)相鄰的父節(jié)點(diǎn)作為旋轉(zhuǎn)節(jié)點(diǎn);保持旋轉(zhuǎn)節(jié)點(diǎn)與旋轉(zhuǎn)節(jié)點(diǎn)的所有子節(jié)點(diǎn)的距離不變,旋轉(zhuǎn)節(jié)點(diǎn)的所有子節(jié)點(diǎn),以使目標(biāo)節(jié)點(diǎn)移動到旋轉(zhuǎn)節(jié)點(diǎn)與目標(biāo)位置的連線上;重新選擇與旋轉(zhuǎn)節(jié)點(diǎn)相鄰的父節(jié)點(diǎn)作為旋轉(zhuǎn)節(jié)點(diǎn),直到目標(biāo)節(jié)點(diǎn)的所有父節(jié)點(diǎn)全部選擇完畢。
可選地,在本實(shí)施例中,處理器根據(jù)存儲介質(zhì)中已存儲的程序代碼執(zhí)行將獲取到的位置信息中的任意一個位置信息所表示的朝向作為目標(biāo)朝向;判斷人體模型的目標(biāo)節(jié)點(diǎn)的當(dāng)前朝向與目標(biāo)朝向之間的目標(biāo)角度是否大于第二預(yù)設(shè)閾值;如果目標(biāo)角度大于第二預(yù)設(shè)閾值,則控制目標(biāo)節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)的所有父節(jié)點(diǎn)按照第一預(yù)設(shè)角度進(jìn)行旋轉(zhuǎn),其中,目標(biāo)節(jié)點(diǎn)旋轉(zhuǎn)的角度等于第二預(yù)設(shè)閾值,目標(biāo)節(jié)點(diǎn)的所有父節(jié)點(diǎn)的旋轉(zhuǎn)角度小于或者等于目標(biāo)節(jié)點(diǎn)的旋轉(zhuǎn)角度;如果目標(biāo)角度小于或者等于第二預(yù)設(shè)閾值,則控制目標(biāo)節(jié)點(diǎn)按照目標(biāo)角度進(jìn)行旋轉(zhuǎn),并控制目標(biāo)節(jié)點(diǎn)的父節(jié)點(diǎn)按照第二預(yù)設(shè)角度進(jìn)行旋轉(zhuǎn),其中,第二預(yù)設(shè)角度小于或者等于目標(biāo)角度。
可選地,在本實(shí)施例中,處理器根據(jù)存儲介質(zhì)中已存儲的程序代碼執(zhí)行獲取頭部追蹤器的頭部位置信息;根據(jù)頭部位置信息控制人體模型進(jìn)行以下至少一個動作:頭部轉(zhuǎn)動、身體彎曲和身體移動。
可選地,在本實(shí)施例中,處理器根據(jù)存儲介質(zhì)中已存儲的程序代碼執(zhí)行將人體模型的左手節(jié)點(diǎn)和右手節(jié)點(diǎn)合并為手部節(jié)點(diǎn);和/或?qū)⑷梭w模型的左腿節(jié)點(diǎn)和右腿節(jié)點(diǎn)合并為腿部節(jié)點(diǎn),其中,合并得到的手部節(jié)點(diǎn)和腿部節(jié)點(diǎn)為人體模型頭部節(jié)點(diǎn)的父節(jié)點(diǎn)。
可選地,在本實(shí)施例中,處理器根據(jù)存儲介質(zhì)中已存儲的程序代碼執(zhí)行獲取頭部追蹤器的頭部位置信息和手部追蹤器的手部位置信息;根據(jù)頭部位置信息和手部位置信息控制人體模型進(jìn)行以下至少一個動作:頭部轉(zhuǎn)動、身體彎曲、身體移動、手臂移動、手臂彎曲和手臂旋轉(zhuǎn)。
可選地,在本實(shí)施例中,處理器根據(jù)存儲介質(zhì)中已存儲的程序代碼執(zhí)行獲取頭部追蹤器的頭部位置信息、手部追蹤器的手部位置信息和腳部追蹤器的腳部位置信息;根據(jù)頭部位置信息、手部位置信息和腳部位置信息控制人體模型進(jìn)行以下至少一個動作:頭部轉(zhuǎn)動、身體彎曲、身體移動、手臂移動、手臂彎曲、手臂旋轉(zhuǎn)、腿部移動、腿部彎曲和腿部旋轉(zhuǎn)。
可選地,在本實(shí)施例中,處理器根據(jù)存儲介質(zhì)中已存儲的程序代碼執(zhí)行建立具有預(yù)設(shè)身體比例的人體模型;根據(jù)追蹤器的位置信息獲取目標(biāo)人體的實(shí)際身體比例;根據(jù)實(shí)際身體比例縮放人體模型,以使人體模型的身體比例與目標(biāo)人體的身體比例一致。
可選地,本實(shí)施例中的具體示例可以參考上述實(shí)施例1和實(shí)施例2中所描述的示例,本實(shí)施例在此不再贅述。
上述本發(fā)明實(shí)施例序號僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
上述實(shí)施例中的集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時,可以存儲在上述計(jì)算機(jī)可讀取的存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在存儲介質(zhì)中,包括若干指令用以使得一臺或多臺計(jì)算機(jī)設(shè)備(可為個人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例所述方法的全部或部分步驟。
在本發(fā)明的上述實(shí)施例中,對各個實(shí)施例的描述都各有側(cè)重,某個實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
在本申請所提供的幾個實(shí)施例中,應(yīng)該理解到,所揭露的客戶端,可通過其它的方式實(shí)現(xiàn)。其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個實(shí)施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。