本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,具體而言,涉及一種虛擬現(xiàn)實(shí)場(chǎng)景的交互方法及裝置。
背景技術(shù):
如今,為了使用戶體驗(yàn)身臨其境,真正感受三維空間內(nèi)的事物。越來(lái)越多的應(yīng)用開(kāi)發(fā)商開(kāi)始關(guān)注在虛擬現(xiàn)實(shí)場(chǎng)景下的應(yīng)用。其中,虛擬現(xiàn)實(shí)(virtualreality,簡(jiǎn)稱vr)技術(shù),是利用計(jì)算機(jī)模擬產(chǎn)生一個(gè)三維空間的虛擬世界,提供用戶各種感官模擬體驗(yàn),在用戶執(zhí)行移動(dòng)時(shí),計(jì)算機(jī)通過(guò)復(fù)雜的三維運(yùn)算,以增強(qiáng)用戶在三維世界的真實(shí)臨場(chǎng)感。
目前,現(xiàn)有技術(shù)中常用的交互方式包括:鼠標(biāo)交互。其中,鼠標(biāo)交互對(duì)于任何一個(gè)程序的選擇方式包括:
1)對(duì)于二維世界,所顯示的對(duì)象在二維(簡(jiǎn)稱2d)屏幕上均具有對(duì)應(yīng)的位置,通過(guò)鼠標(biāo)在2d屏幕上點(diǎn)擊上述對(duì)象所在位置,就可以實(shí)現(xiàn)與該對(duì)象的交互過(guò)程。
2)對(duì)于平面顯示器顯示的三維世界,先在二維(簡(jiǎn)稱2d)屏幕上選定一個(gè)點(diǎn)a,再在與2d屏幕對(duì)應(yīng)的三維(簡(jiǎn)稱3d)空間中,獲得所選定的點(diǎn)a對(duì)應(yīng)到3d的虛擬空間中的位置b,通過(guò)點(diǎn)a和位置b,就可以確定所要交互的對(duì)象,以實(shí)現(xiàn)通過(guò)鼠標(biāo)交互完成在平面顯示器中顯示的三維世界的交互過(guò)程。也就是說(shuō),平面顯示器顯示的三維世界中參與交互的仍然是體現(xiàn)二維平面空間中的對(duì)象,在交互過(guò)程中,鼠標(biāo)仍然是與二維平面空間中的對(duì)象實(shí)現(xiàn)交互。
然而,目前現(xiàn)有技術(shù)中提供的鼠標(biāo)交互方式,主要應(yīng)用于與二維平面空間所顯示的對(duì)象進(jìn)行交互,而對(duì)于虛擬現(xiàn)實(shí)vr場(chǎng)景中的三維對(duì)象,還并未提供一種操作簡(jiǎn)化的交互方式。
針對(duì)上述的問(wèn)題,目前尚未提出有效的解決方案。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種虛擬現(xiàn)實(shí)場(chǎng)景的交互方法及裝置,以至少解決現(xiàn)有技術(shù)中還無(wú)法實(shí)現(xiàn)與虛擬現(xiàn)實(shí)場(chǎng)景中的對(duì)象進(jìn)行交互的技術(shù)問(wèn)題。
根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了一種虛擬現(xiàn)實(shí)場(chǎng)景的交互方法,包括:在虛擬現(xiàn)實(shí)場(chǎng)景中顯示的對(duì)象中確定出允許與射線發(fā)生碰撞的初始目標(biāo)對(duì)象,其中,上述虛擬現(xiàn)實(shí)場(chǎng)景中顯示有上述射線;在上述初始目標(biāo)對(duì)象中檢測(cè)出與上述射線發(fā)生碰撞的最終目標(biāo)對(duì)象;對(duì)上述最終目標(biāo)對(duì)象中上述射線所選中的控件進(jìn)行操作。
根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種虛擬現(xiàn)實(shí)場(chǎng)景的交互裝置,包括:確定單元,用于在虛擬現(xiàn)實(shí)場(chǎng)景中顯示的對(duì)象中確定出允許與射線發(fā)生碰撞的初始目標(biāo)對(duì)象,其中,上述虛擬現(xiàn)實(shí)場(chǎng)景中顯示有上述射線;檢測(cè)單元,用于在上述初始目標(biāo)對(duì)象中檢測(cè)出與上述射線發(fā)生碰撞的最終目標(biāo)對(duì)象;操作單元,用于對(duì)上述最終目標(biāo)對(duì)象中上述射線所選中的控件進(jìn)行操作。
在本發(fā)明實(shí)施例中,在虛擬現(xiàn)實(shí)場(chǎng)景中顯示的對(duì)象中確定出允許與射線發(fā)生碰撞的初始目標(biāo)對(duì)象后,其中,虛擬現(xiàn)實(shí)場(chǎng)景中顯示有射線,再在上述初始目標(biāo)對(duì)象中檢測(cè)出與射線發(fā)生碰撞的最終目標(biāo)對(duì)象,對(duì)最終目標(biāo)對(duì)象中射線所選中的控件進(jìn)行操作。從而實(shí)現(xiàn)通過(guò)射線碰撞檢測(cè)從初始目標(biāo)對(duì)象中,獲取在虛擬現(xiàn)實(shí)場(chǎng)景中所要交互的最終目標(biāo)對(duì)象,以達(dá)到對(duì)射線所選中的最終目標(biāo)對(duì)象中的控件進(jìn)行操作的目的,進(jìn)而克服相關(guān)技術(shù)中無(wú)法對(duì)虛擬現(xiàn)實(shí)場(chǎng)景中的對(duì)象進(jìn)行精準(zhǔn)交互的問(wèn)題。進(jìn)一步,通過(guò)射線碰撞檢測(cè)實(shí)現(xiàn)與虛擬現(xiàn)實(shí)場(chǎng)景中的對(duì)象進(jìn)行交互,還簡(jiǎn)化了交互操作,而無(wú)需使用鼠標(biāo)等硬件設(shè)備進(jìn)行復(fù)雜的交互運(yùn)算,進(jìn)而達(dá)到在保證交互準(zhǔn)確性的情況下,提高交互效率的效果。
附圖說(shuō)明
此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說(shuō)明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
圖1是根據(jù)本發(fā)明實(shí)施例的虛擬現(xiàn)實(shí)場(chǎng)景的交互方法的硬件環(huán)境的示意圖;
圖2是根據(jù)本發(fā)明實(shí)施例的一種可選的虛擬現(xiàn)實(shí)場(chǎng)景的交互方法的流程圖;
圖3是根據(jù)本發(fā)明實(shí)施例的一種可選的虛擬現(xiàn)實(shí)場(chǎng)景的交互方法的示意圖;
圖4是根據(jù)本發(fā)明實(shí)施例的另一種可選的虛擬現(xiàn)實(shí)場(chǎng)景的交互方法的示意圖;
圖5是根據(jù)本發(fā)明實(shí)施例的又一種可選的虛擬現(xiàn)實(shí)場(chǎng)景的交互方法的示意圖;
圖6是根據(jù)本發(fā)明實(shí)施例的又一種可選的虛擬現(xiàn)實(shí)場(chǎng)景的交互方法的示意圖;
圖7是根據(jù)本發(fā)明實(shí)施例的又一種可選的虛擬現(xiàn)實(shí)場(chǎng)景的交互方法的示意圖;
圖8是根據(jù)本發(fā)明實(shí)施例的一種可選的虛擬現(xiàn)實(shí)場(chǎng)景的交互裝置的示意圖;
圖9是根據(jù)本發(fā)明實(shí)施例的一種虛擬現(xiàn)實(shí)場(chǎng)景的交互終端的結(jié)構(gòu)框圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
需要說(shuō)明的是,本發(fā)明的說(shuō)明書(shū)和權(quán)利要求書(shū)及上述附圖中的術(shù)語(yǔ)“第一”、“第二”等是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語(yǔ)“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過(guò)程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒(méi)有清楚地列出的或?qū)τ谶@些過(guò)程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
實(shí)施例1
在本發(fā)明實(shí)施例中,提供了一種上述虛擬現(xiàn)實(shí)場(chǎng)景的交互方法的實(shí)施例。作為一種可選的實(shí)施方式,該虛擬現(xiàn)實(shí)場(chǎng)景的交互方法可以但不限于應(yīng)用于如圖1所示的應(yīng)用環(huán)境中,用于實(shí)現(xiàn)虛擬現(xiàn)實(shí)(virtualreality,簡(jiǎn)稱vr)場(chǎng)景交互的設(shè)備102中顯示有待交互的對(duì)象,在虛擬現(xiàn)實(shí)場(chǎng)景中顯示的對(duì)象中確定出允許與射線發(fā)生碰撞的初始目標(biāo)對(duì)象,其中,虛擬現(xiàn)實(shí)場(chǎng)景中顯示有射線;在初始目標(biāo)對(duì)象中檢測(cè)出與射線發(fā)生碰撞的最終目標(biāo)對(duì)象;然后對(duì)最終目標(biāo)對(duì)象中射線所選中的控件進(jìn)行操作。
在本實(shí)施例中,在虛擬現(xiàn)實(shí)場(chǎng)景中顯示的對(duì)象中確定出允許與射線發(fā)生碰撞的初始目標(biāo)對(duì)象后,其中,虛擬現(xiàn)實(shí)場(chǎng)景中顯示有射線,再在上述初始目標(biāo)對(duì)象中檢測(cè)出與射線發(fā)生碰撞的最終目標(biāo)對(duì)象,對(duì)最終目標(biāo)對(duì)象中射線所選中的控件進(jìn)行操作。從而實(shí)現(xiàn)通過(guò)射線碰撞檢測(cè)獲取在虛擬現(xiàn)實(shí)場(chǎng)景中所要交互的最終目標(biāo)對(duì)象,以達(dá)到對(duì)射線所選中的最終目標(biāo)對(duì)象中的控件進(jìn)行操作的目的,進(jìn)而克服相關(guān)技術(shù)中無(wú)法對(duì)虛擬現(xiàn)實(shí)場(chǎng)景中的對(duì)象進(jìn)行精準(zhǔn)交互的問(wèn)題。
可選地,在本實(shí)施例中,上述用于實(shí)現(xiàn)虛擬現(xiàn)實(shí)場(chǎng)景交互的設(shè)備可以包括但不限于以下至少之一:vr眼鏡,及其他用于實(shí)現(xiàn)虛擬現(xiàn)實(shí)場(chǎng)景交互的硬件設(shè)備。上述只是一種示例,本實(shí)施例對(duì)此不做任何限定。
根據(jù)本發(fā)明實(shí)施例,提供了一種虛擬現(xiàn)實(shí)場(chǎng)景的交互方法,如圖2所示,該方法包括:
s202,在虛擬現(xiàn)實(shí)場(chǎng)景中顯示的對(duì)象中確定出允許與射線發(fā)生碰撞的初始目標(biāo)對(duì)象,其中,虛擬現(xiàn)實(shí)場(chǎng)景中顯示有射線;
s204,在初始目標(biāo)對(duì)象中檢測(cè)出與射線發(fā)生碰撞的最終目標(biāo)對(duì)象;
s206,對(duì)最終目標(biāo)對(duì)象中射線所選中的控件進(jìn)行操作。
可選地,在本實(shí)施例中,上述虛擬現(xiàn)實(shí)場(chǎng)景的交互方法可以但不限于應(yīng)用于使用虛擬現(xiàn)實(shí)設(shè)備進(jìn)行虛擬現(xiàn)實(shí)交互應(yīng)用的過(guò)程中,例如,上述虛擬現(xiàn)實(shí)交互應(yīng)用可以包括但不限于虛擬現(xiàn)實(shí)游戲、虛擬現(xiàn)實(shí)影視播放、虛擬現(xiàn)實(shí)購(gòu)物等等。上述僅是一種示例,本實(shí)施例中對(duì)此不做任何限定。其中,該虛擬現(xiàn)實(shí)設(shè)備可以包括但不限于vr眼鏡。進(jìn)一步,上述交互過(guò)程可以但不限于與虛擬現(xiàn)實(shí)場(chǎng)景中的平面中的對(duì)象進(jìn)行交互,例如,如圖3所示,虛線方框內(nèi)所示為vr眼鏡(虛擬現(xiàn)實(shí)場(chǎng)景交互的設(shè)備102)中所顯示的虛擬現(xiàn)實(shí)場(chǎng)景內(nèi)容:在二維平面內(nèi)顯示有待交互的對(duì)象a至對(duì)象e,其中,與射線發(fā)生碰撞的最終目標(biāo)對(duì)象為對(duì)象e;此外,在本實(shí)施例中,上述交互過(guò)程也可以但不限于與虛擬現(xiàn)實(shí)場(chǎng)景中的三維角色對(duì)象進(jìn)行交互,例如,如圖4所示,虛線方框內(nèi)所示為vr眼鏡(虛擬現(xiàn)實(shí)場(chǎng)景交互的設(shè)備102)中所顯示的虛擬現(xiàn)實(shí)場(chǎng)景內(nèi)容:在三維空間內(nèi)顯示有待交互的對(duì)象p、對(duì)象x、對(duì)象y及對(duì)象z,其中,與射線發(fā)生碰撞的最終目標(biāo)對(duì)象為對(duì)象y。上述僅是一種示例,本實(shí)施例中對(duì)此不做任何限定。
需要說(shuō)明的是,在本實(shí)施例中,在虛擬現(xiàn)實(shí)場(chǎng)景中顯示的對(duì)象中確定出允許與射線發(fā)生碰撞的初始目標(biāo)對(duì)象后,其中,虛擬現(xiàn)實(shí)場(chǎng)景中顯示有射線,再在上述初始目標(biāo)對(duì)象中檢測(cè)出與射線發(fā)生碰撞的最終目標(biāo)對(duì)象,對(duì)最終目標(biāo)對(duì)象中射線所選中的控件進(jìn)行操作。從而實(shí)現(xiàn)通過(guò)射線碰撞檢測(cè)從初始目標(biāo)對(duì)象中,獲取在虛擬現(xiàn)實(shí)場(chǎng)景中所要交互的最終目標(biāo)對(duì)象,以達(dá)到對(duì)射線所選中的最終目標(biāo)對(duì)象中的控件進(jìn)行操作的目的,進(jìn)而克服相關(guān)技術(shù)中無(wú)法對(duì)虛擬現(xiàn)實(shí)場(chǎng)景中的對(duì)象進(jìn)行精準(zhǔn)交互的問(wèn)題。進(jìn)一步,通過(guò)射線碰撞檢測(cè)實(shí)現(xiàn)與虛擬現(xiàn)實(shí)場(chǎng)景中的對(duì)象進(jìn)行交互,還簡(jiǎn)化了交互操作,而無(wú)需使用鼠標(biāo)等硬件設(shè)備進(jìn)行復(fù)雜的交互運(yùn)算,進(jìn)而達(dá)到在保證交互準(zhǔn)確性的情況下,提高交互效率的效果。
此外,在本實(shí)施例中,上述碰撞檢測(cè)(也稱作碰撞偵測(cè)(collisiondetection)),通常是指一種判斷兩個(gè)或多個(gè)對(duì)象是否產(chǎn)生交集的方法??梢詰?yīng)用于電子游戲和其他計(jì)算物理學(xué)中,也可以應(yīng)用于人工智能中。除了可以用于確定兩個(gè)對(duì)象是否已經(jīng)碰撞,還可以用于計(jì)算沖擊的時(shí)間(toi),以及獲取對(duì)象交叉碰撞的位置。
可選地,在本實(shí)施例中,在虛擬現(xiàn)實(shí)場(chǎng)景中顯示的對(duì)象中確定出允許與射線發(fā)生碰撞的初始目標(biāo)對(duì)象包括:根據(jù)對(duì)象的對(duì)象類型確定出與射線的射線類型具有對(duì)應(yīng)關(guān)系的目標(biāo)對(duì)象類型,以將目標(biāo)對(duì)象類型的對(duì)象確定為允許與射線發(fā)生碰撞的初始目標(biāo)對(duì)象。從而實(shí)現(xiàn)利用射線類型及對(duì)象類型之間的映射關(guān)系,確定出允許與射線發(fā)生碰撞的初始目標(biāo)對(duì)象,以避免虛擬現(xiàn)實(shí)場(chǎng)景中與射線無(wú)關(guān)的對(duì)象參與交互判斷過(guò)程,減少判斷時(shí)間,進(jìn)而達(dá)到簡(jiǎn)化交互判斷步驟的效果。
可選地,在本實(shí)施例中,在初始目標(biāo)對(duì)象中檢測(cè)出與射線發(fā)生碰撞的最終目標(biāo)對(duì)象包括:遍歷每個(gè)初始目標(biāo)對(duì)象,檢測(cè)每個(gè)初始目標(biāo)對(duì)象在虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間是否存在與射線重合的部分;將存在與射線重合的部分的初始目標(biāo)對(duì)象確定為最終目標(biāo)對(duì)象。
需要說(shuō)明的是,在本實(shí)施例中,上述射線可以但不限于為具有起始點(diǎn)和終點(diǎn)的向量,上述檢測(cè)當(dāng)前目標(biāo)對(duì)象在虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間是否存在與射線重合的部分可以但不限于:檢測(cè)上述空間中是否包含上述射線構(gòu)成的向量中的點(diǎn)。也就是說(shuō),將虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間與射線上的每個(gè)點(diǎn)位置分別進(jìn)行碰撞檢測(cè),以達(dá)到準(zhǔn)確判斷出與射線碰撞的最終目標(biāo)對(duì)象的效果。此外,若虛擬現(xiàn)實(shí)場(chǎng)景所顯示的多幀畫(huà)面,則在本實(shí)施例中,可以但不限于對(duì)每一幀都做碰撞檢測(cè),以確定虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間中是否包含上述射線構(gòu)成的向量中的點(diǎn),從而保證碰撞檢測(cè)的精確度。
可選地,在本實(shí)施例中,利用射線所進(jìn)行的操作可以包括但不限于:點(diǎn)擊操作、移動(dòng)操作、選中操作等等。與上述操作對(duì)應(yīng)的執(zhí)行事件可以包括但不限于以下至少之一:
1)進(jìn)入事件(enter):射線開(kāi)始指向某一個(gè)對(duì)象,通過(guò)比較這一幀和上一幀的射線的擊中對(duì)象列表的變化,看是否存在新添加的對(duì)象,觸發(fā)新添加對(duì)象的事件;
2)離開(kāi)事件(leave):射線離開(kāi)指向某一個(gè)對(duì)象,通過(guò)比較這一幀和上一幀的射線的擊中對(duì)象列表的變化,看是否存在新刪除的對(duì)象,觸發(fā)新刪除對(duì)象的事件;
3)按下事件(touchdown):射線指向控件,按下交互按鍵的時(shí)候,觸發(fā)交互列表中所有對(duì)象的事件;
4)抬起事件(touchup):射線指向控件,抬起交互按鍵的時(shí)候,觸發(fā)交互列表中所有對(duì)象的事件;
5)移動(dòng)事件(move):射線在最終目標(biāo)對(duì)象中的各個(gè)控件上移動(dòng),觸發(fā)交互列表中所有對(duì)象的事件。
6)其他:對(duì)于一些特殊的事件,比如拖動(dòng)操作觸發(fā)的拖動(dòng)事件等等。
需要說(shuō)明的是,上述控件可以但不限于為用于構(gòu)成界面的一系列預(yù)先制作的功能控件,例如,按鈕,復(fù)選框,滑塊,進(jìn)度條等。上述僅是一種示例,本實(shí)施例中對(duì)此不做任何限定。
通過(guò)本申請(qǐng)?zhí)峁┑膶?shí)施例,在虛擬現(xiàn)實(shí)場(chǎng)景中顯示的對(duì)象中確定出允許與射線發(fā)生碰撞的初始目標(biāo)對(duì)象后,其中,虛擬現(xiàn)實(shí)場(chǎng)景中顯示有射線,再在上述初始目標(biāo)對(duì)象中檢測(cè)出與射線發(fā)生碰撞的最終目標(biāo)對(duì)象,對(duì)最終目標(biāo)對(duì)象中射線所選中的控件進(jìn)行操作。從而實(shí)現(xiàn)通過(guò)射線碰撞檢測(cè)從初始目標(biāo)對(duì)象中,獲取在虛擬現(xiàn)實(shí)場(chǎng)景中所要交互的最終目標(biāo)對(duì)象,以達(dá)到對(duì)射線所選中的最終目標(biāo)對(duì)象中的控件進(jìn)行操作的目的,進(jìn)而克服相關(guān)技術(shù)中無(wú)法對(duì)虛擬現(xiàn)實(shí)場(chǎng)景中的對(duì)象進(jìn)行精準(zhǔn)交互的問(wèn)題。
作為一種可選的方案,在虛擬現(xiàn)實(shí)場(chǎng)景中顯示的對(duì)象中確定出允許與射線發(fā)生碰撞的初始目標(biāo)對(duì)象包括:
s1,獲取對(duì)象的對(duì)象類型;
s2,在對(duì)象類型中確定出與射線的射線類型具有對(duì)應(yīng)關(guān)系的目標(biāo)對(duì)象類型;
s3,在對(duì)象中將類型為目標(biāo)對(duì)象類型的對(duì)象確定為初始目標(biāo)對(duì)象。
可選地,在本實(shí)施例中,對(duì)允許與射線發(fā)生碰撞的對(duì)象的類型設(shè)置為目標(biāo)對(duì)象類型,用objectcollision對(duì)象表示,將用于碰撞檢測(cè)的射線類型用lasercollision對(duì)象表示。上述僅是一種示例,本實(shí)施例中對(duì)此不做任何限定。
需要說(shuō)明的是,在本實(shí)施例中,上述用于進(jìn)行射線碰撞檢測(cè)的碰撞方式可以但不限于使用相關(guān)技術(shù)中的碰撞包圍盒,通過(guò)將被檢測(cè)的個(gè)體用碰撞包圍盒包圍,檢測(cè)各個(gè)碰撞包圍盒是否有交叉,對(duì)于產(chǎn)生交叉的情況,檢測(cè)出為產(chǎn)生碰撞。上述僅是一種示例,本實(shí)施例中對(duì)碰撞檢測(cè)的方式不做限定,還可以采用其他碰撞檢測(cè)方式。
通過(guò)本申請(qǐng)?zhí)峁┑膶?shí)施例,通過(guò)對(duì)虛擬現(xiàn)實(shí)場(chǎng)景中的對(duì)象按類型進(jìn)行分類,以實(shí)現(xiàn)對(duì)與射線類型具有對(duì)應(yīng)關(guān)系的目標(biāo)對(duì)象類型進(jìn)行碰撞檢測(cè),從而實(shí)現(xiàn)對(duì)于不是目標(biāo)對(duì)象類型的對(duì)象直接略過(guò)檢測(cè),達(dá)到射線減少碰撞檢測(cè)的對(duì)象的數(shù)量,實(shí)現(xiàn)大大節(jié)約碰撞檢測(cè)的時(shí)間消耗的效果,進(jìn)而達(dá)到簡(jiǎn)化交互判斷步驟的效果。
作為一種可選的方案,在初始目標(biāo)對(duì)象中檢測(cè)出與射線發(fā)生碰撞的最終目標(biāo)對(duì)象包括:
s1,對(duì)初始目標(biāo)對(duì)象中的每個(gè)對(duì)象執(zhí)行以下步驟,其中,初始目標(biāo)對(duì)象在執(zhí)行以下步驟時(shí)被視為當(dāng)前目標(biāo)對(duì)象:
s11,檢測(cè)當(dāng)前目標(biāo)對(duì)象在虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間是否存在與射線重合的部分;
s12,若空間存在與射線重合的部分,則將當(dāng)前目標(biāo)對(duì)象確定為最終目標(biāo)對(duì)象。
可選地,在本實(shí)施例中,可以但不限于對(duì)確定為目標(biāo)對(duì)象類型的初始目標(biāo)對(duì)象執(zhí)行遍歷判斷過(guò)程,其中,分別將每個(gè)初始目標(biāo)對(duì)象作為當(dāng)前目標(biāo)對(duì)象:檢測(cè)當(dāng)前目標(biāo)對(duì)象在虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間是否存在與射線重合的部分;將存在與射線重合的部分的初始目標(biāo)對(duì)象確定為最終目標(biāo)對(duì)象。
需要說(shuō)明的是,在本實(shí)施例中,上述射線可以但不限于為具有起始點(diǎn)和終點(diǎn)的向量。在本實(shí)施例中,上述檢測(cè)當(dāng)前目標(biāo)對(duì)象在虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間是否存在與射線重合的部分可以但不限于:檢測(cè)上述空間中是否包含上述射線構(gòu)成的向量中的點(diǎn)。也就是說(shuō),將虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間與射線上的每個(gè)點(diǎn)位置分別進(jìn)行碰撞檢測(cè),以達(dá)到準(zhǔn)確判斷出與射線碰撞的最終目標(biāo)對(duì)象的效果。其中,上述當(dāng)前目標(biāo)對(duì)象在虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間可以但不限于如圖3所示,以對(duì)象e為例,對(duì)象e在虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間為一個(gè)矩形平面區(qū)域;如圖4所示,以對(duì)象y為例,對(duì)象y在虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間為一個(gè)人物角色y在三維空間中所占用的立體空間。
具體結(jié)合以下示例進(jìn)行說(shuō)明,例如,以圖3所示對(duì)象e為例,若檢測(cè)出射線與對(duì)象e對(duì)應(yīng)的矩形平面區(qū)域存在交叉,則可檢測(cè)出對(duì)象e存在與射線重合的部分,可將對(duì)象e確定為最終目標(biāo)對(duì)象。又例如,以圖4所示對(duì)象y為例,若檢測(cè)出射線與對(duì)象y對(duì)應(yīng)的人物角色y所占的立體空間存在交叉,則可檢測(cè)出對(duì)象y存在與射線重合的部分,可將對(duì)象y確定為最終目標(biāo)對(duì)象。
通過(guò)本申請(qǐng)?zhí)峁┑膶?shí)施例,通過(guò)遍歷各個(gè)初始目標(biāo)對(duì)象,分別依次判斷各個(gè)初始目標(biāo)對(duì)象在虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間是否存在與射線重合的部分,以實(shí)現(xiàn)根據(jù)判斷結(jié)果準(zhǔn)確檢測(cè)出用于交互的最終目標(biāo)對(duì)象,保證交互的準(zhǔn)確性。
作為一種可選的方案,檢測(cè)當(dāng)前目標(biāo)對(duì)象在虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間是否存在與射線重合的部分包括:
s1,檢測(cè)空間是否包含射線上的點(diǎn),其中,射線包括:起始點(diǎn)和終點(diǎn),射線的方向由起始點(diǎn)指向終點(diǎn);
s2,若檢測(cè)出空間包含射線上的點(diǎn),則確定出空間存在與射線重合的部分。
可選地,在本實(shí)施例中,上述射線可以但不限于為包括起始點(diǎn)和終點(diǎn)的有向向量。其中,上述起始點(diǎn)可以但不限于為在虛擬現(xiàn)實(shí)場(chǎng)景中發(fā)出射線的位置,終點(diǎn)是按照射線所指方向延伸一定距離后到達(dá)的位置,在這條射線上的每一個(gè)位置都需要進(jìn)行碰撞檢測(cè)。
例如,如圖5所示,假設(shè)起始點(diǎn)以手指在虛擬現(xiàn)實(shí)場(chǎng)景中的位置(如用handposition表示)為例,根據(jù)提前設(shè)置好的射線的延伸距離(如用maxdistance表示),獲取對(duì)應(yīng)的終點(diǎn)(如用maxrangeposition表示),按照手指方向檢測(cè)對(duì)象y所占空間是否包括上述射線上的點(diǎn)。例如,如圖6所示,碰撞檢測(cè)結(jié)果表示:對(duì)象y對(duì)應(yīng)的人物角色y所占的立體空間與上述射線(起始點(diǎn)為handposition,終點(diǎn)為maxrangeposition)存在交叉,交叉點(diǎn)為圖6菱形所示位置,則可檢測(cè)出對(duì)象y存在與射線重合的部分,可將對(duì)象y確定為最終目標(biāo)對(duì)象。
可選地,在本實(shí)施例中,通過(guò)以下步驟確定終點(diǎn):根據(jù)起始點(diǎn)在虛擬現(xiàn)實(shí)場(chǎng)景中的位置、用于指示方向的方向矢量、預(yù)定確定的距離范圍值,確定出終點(diǎn)在虛擬現(xiàn)實(shí)場(chǎng)景中的位置。
例如,如圖7所示,用于確定上述射線的終點(diǎn)的公式如下:
maxrangeposition=handposition+handforwardvector*maxdistance
其中,上述handforwardvector用于表示射線方向的單位向量。也就是說(shuō)在起始點(diǎn)的三維坐標(biāo)上,疊加沿射線方向上的延伸距離的三維坐標(biāo),從而得到終點(diǎn)的三維坐標(biāo)。
通過(guò)本申請(qǐng)?zhí)峁┑膶?shí)施例,通過(guò)檢測(cè)空間是否包含射線上的點(diǎn),以實(shí)現(xiàn)檢測(cè)當(dāng)前目標(biāo)對(duì)象在虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間是否存在與射線重合的部分,也就是說(shuō),將虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間與射線上的每個(gè)點(diǎn)位置分別進(jìn)行碰撞檢測(cè),以達(dá)到準(zhǔn)確判斷出與射線碰撞的最終目標(biāo)對(duì)象的效果,從而保證碰撞檢測(cè)的精確度,進(jìn)而實(shí)現(xiàn)提高交互準(zhǔn)確性的效果。
作為一種可選的方案,對(duì)最終目標(biāo)對(duì)象中射線所選中的控件進(jìn)行操作包括:
s1,在最終目標(biāo)對(duì)象中選中射線與最終目標(biāo)對(duì)象重合的位置上的控件;
s2,對(duì)控件進(jìn)行操作。
可選地,在本實(shí)施例中,對(duì)控件進(jìn)行操作包括:
s21,在檢測(cè)到與虛擬現(xiàn)實(shí)場(chǎng)景對(duì)應(yīng)的交互按鍵被按下時(shí),確定出檢測(cè)到開(kāi)始點(diǎn)擊事件;
s22,在檢測(cè)到與虛擬現(xiàn)實(shí)場(chǎng)景對(duì)應(yīng)的交互按鍵被抬起時(shí),確定出檢測(cè)到結(jié)束點(diǎn)擊事件;
s23,在檢測(cè)到開(kāi)始點(diǎn)擊事件和結(jié)束點(diǎn)擊事件時(shí),對(duì)控件進(jìn)行點(diǎn)擊操作。
可選地,在本實(shí)施例中,上述虛擬現(xiàn)實(shí)場(chǎng)景中對(duì)象可以包括但不限于:虛幻動(dòng)態(tài)圖形(unrealmobile)ui設(shè)計(jì)器所設(shè)計(jì)的對(duì)象(稱作umg對(duì)象),目標(biāo)對(duì)象類型中的對(duì)象。
需要說(shuō)明的是,在本實(shí)施例中,如果與射線發(fā)生碰撞的是umg對(duì)象,則需調(diào)用umg相關(guān)的控制邏輯,例如,在ue4環(huán)境中,對(duì)于umg對(duì)象,通過(guò)調(diào)用widget的on系列函數(shù)來(lái)觸發(fā)widget的事件響應(yīng),從而達(dá)到兼容一般的游戲引擎對(duì)于umg的支持的目的。也就是說(shuō),虛擬現(xiàn)實(shí)內(nèi)容開(kāi)發(fā)者可以采用一般ui的制作方法來(lái)為虛擬現(xiàn)實(shí)場(chǎng)景制作用戶界面(userinterface,簡(jiǎn)稱ui)菜單,該菜單可以直接應(yīng)用于虛擬現(xiàn)實(shí)場(chǎng)景進(jìn)行交互。此外,在本實(shí)施例中,如果與射線發(fā)生碰撞的不是umg對(duì)象,而是目標(biāo)對(duì)象類型中的對(duì)象,則可參照本實(shí)施例中記載的交互方式進(jìn)行交互。
可選地,在本實(shí)施例中,利用射線所進(jìn)行的操作可以包括但不限于:點(diǎn)擊操作、移動(dòng)操作、選中操作等等。上述僅是一種示例,本實(shí)施例中對(duì)此不做任何限定。例如,以點(diǎn)擊操作為例,可以但不限于通過(guò)以下事件確定:
1)按下事件(touchdown):射線指向控件,按下交互按鍵的時(shí)候,觸發(fā)交互列表中所有對(duì)象的事件。對(duì)于umg直接調(diào)用widget已經(jīng)存在的on系列函數(shù)觸發(fā)已經(jīng)存在的回調(diào)機(jī)制,對(duì)于其他則自定義該事件的回調(diào)函數(shù);
2)抬起事件(touchup):射線指向控件,抬起交互按鍵的時(shí)候,觸發(fā)交互列表中所有對(duì)象的事件。對(duì)于umg直接調(diào)用widget已經(jīng)存在的on系列函數(shù)觸發(fā)已經(jīng)存在的回調(diào)機(jī)制,對(duì)于其他則自定義該事件的回調(diào)函數(shù)。
也就是說(shuō),在檢測(cè)到與虛擬現(xiàn)實(shí)場(chǎng)景對(duì)應(yīng)的交互按鍵被按下時(shí),確定出檢測(cè)到開(kāi)始點(diǎn)擊事件;在檢測(cè)到與虛擬現(xiàn)實(shí)場(chǎng)景對(duì)應(yīng)的交互按鍵被抬起時(shí),確定出檢測(cè)到結(jié)束點(diǎn)擊事件;然后在檢測(cè)到開(kāi)始點(diǎn)擊事件和結(jié)束點(diǎn)擊事件時(shí),確認(rèn)對(duì)控件進(jìn)行點(diǎn)擊操作。
例如,以圖5為例,在選中對(duì)象y為最終目標(biāo)對(duì)象時(shí),選中射線與最終目標(biāo)對(duì)象重合的位置(如對(duì)象y的右腳),然后對(duì)重合的位置(如對(duì)象y的右腳)上的控件執(zhí)行點(diǎn)擊操作,例如檢測(cè)到交互按鍵被按下的開(kāi)始點(diǎn)擊事件及交互按鍵被抬起時(shí)的結(jié)束點(diǎn)擊事件,則可確認(rèn)對(duì)上述控件執(zhí)行點(diǎn)擊操作。從而實(shí)現(xiàn)對(duì)對(duì)象y對(duì)應(yīng)的人物角色y的右腳的交互控制,例如通過(guò)點(diǎn)擊右腳實(shí)現(xiàn)控制抬起右腳執(zhí)行踢球動(dòng)作。上述僅是一種示例,本實(shí)施例中對(duì)此不做任何限定。
通過(guò)本申請(qǐng)?zhí)峁┑膶?shí)施例,在最終目標(biāo)對(duì)象中選中射線與最終目標(biāo)對(duì)象重合的位置上的控件,對(duì)該控件進(jìn)行操作。從而實(shí)現(xiàn)在虛擬現(xiàn)實(shí)場(chǎng)景中通過(guò)射線完成與對(duì)象之間的交互,以保證交互準(zhǔn)確性。
需要說(shuō)明的是,對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說(shuō)明書(shū)中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到根據(jù)上述實(shí)施例的方法可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
實(shí)施例2
根據(jù)本發(fā)明實(shí)施例,還提供了一種用于實(shí)施上述虛擬現(xiàn)實(shí)場(chǎng)景的交互方法的虛擬現(xiàn)實(shí)場(chǎng)景的交互裝置。如圖8所示,該裝置可以包括:
1)確定單元802,用于在虛擬現(xiàn)實(shí)場(chǎng)景中顯示的對(duì)象中確定出允許與射線發(fā)生碰撞的初始目標(biāo)對(duì)象,其中,虛擬現(xiàn)實(shí)場(chǎng)景中顯示有射線;
2)檢測(cè)單元804,用于在初始目標(biāo)對(duì)象中檢測(cè)出與射線發(fā)生碰撞的最終目標(biāo)對(duì)象;
3)操作單元806,用于對(duì)最終目標(biāo)對(duì)象中射線所選中的控件進(jìn)行操作。
可選地,在本實(shí)施例中,上述虛擬現(xiàn)實(shí)場(chǎng)景的交互裝置可以但不限于應(yīng)用于使用虛擬現(xiàn)實(shí)設(shè)備進(jìn)行虛擬現(xiàn)實(shí)交互應(yīng)用的過(guò)程中,例如,上述虛擬現(xiàn)實(shí)交互應(yīng)用可以包括但不限于虛擬現(xiàn)實(shí)游戲、虛擬現(xiàn)實(shí)影視播放、虛擬現(xiàn)實(shí)購(gòu)物等等。上述僅是一種示例,本實(shí)施例中對(duì)此不做任何限定。其中,該虛擬現(xiàn)實(shí)設(shè)備可以包括但不限于vr眼鏡。進(jìn)一步,上述交互過(guò)程可以但不限于與虛擬現(xiàn)實(shí)場(chǎng)景中的平面中的對(duì)象進(jìn)行交互,例如,如圖3所示,虛線方框內(nèi)所示為vr眼鏡(虛擬現(xiàn)實(shí)場(chǎng)景交互的設(shè)備102)中所顯示的虛擬現(xiàn)實(shí)場(chǎng)景內(nèi)容:在二維平面內(nèi)顯示有待交互的對(duì)象a至對(duì)象e,其中,與射線發(fā)生碰撞的最終目標(biāo)對(duì)象為對(duì)象e;此外,在本實(shí)施例中,上述交互過(guò)程也可以但不限于與虛擬現(xiàn)實(shí)場(chǎng)景中的三維角色對(duì)象進(jìn)行交互,例如,如圖4所示,虛線方框內(nèi)所示為vr眼鏡(虛擬現(xiàn)實(shí)場(chǎng)景交互的設(shè)備102)中所顯示的虛擬現(xiàn)實(shí)場(chǎng)景內(nèi)容:在三維空間內(nèi)顯示有待交互的對(duì)象p、對(duì)象x、對(duì)象y及對(duì)象z,其中,與射線發(fā)生碰撞的最終目標(biāo)對(duì)象為對(duì)象y。上述僅是一種示例,本實(shí)施例中對(duì)此不做任何限定。
需要說(shuō)明的是,在本實(shí)施例中,在虛擬現(xiàn)實(shí)場(chǎng)景中顯示的對(duì)象中確定出允許與射線發(fā)生碰撞的初始目標(biāo)對(duì)象后,其中,虛擬現(xiàn)實(shí)場(chǎng)景中顯示有射線,再在上述初始目標(biāo)對(duì)象中檢測(cè)出與射線發(fā)生碰撞的最終目標(biāo)對(duì)象,對(duì)最終目標(biāo)對(duì)象中射線所選中的控件進(jìn)行操作。從而實(shí)現(xiàn)通過(guò)射線碰撞檢測(cè)從初始目標(biāo)對(duì)象中,獲取在虛擬現(xiàn)實(shí)場(chǎng)景中所要交互的最終目標(biāo)對(duì)象,以達(dá)到對(duì)射線所選中的最終目標(biāo)對(duì)象中的控件進(jìn)行操作的目的,進(jìn)而克服相關(guān)技術(shù)中無(wú)法對(duì)虛擬現(xiàn)實(shí)場(chǎng)景中的對(duì)象進(jìn)行精準(zhǔn)交互的問(wèn)題。進(jìn)一步,通過(guò)射線碰撞檢測(cè)實(shí)現(xiàn)與虛擬現(xiàn)實(shí)場(chǎng)景中的對(duì)象進(jìn)行交互,還簡(jiǎn)化了交互操作,而無(wú)需使用鼠標(biāo)等硬件設(shè)備進(jìn)行復(fù)雜的交互運(yùn)算,進(jìn)而達(dá)到在保證交互準(zhǔn)確性的情況下,提高交互效率的效果。
此外,在本實(shí)施例中,上述碰撞檢測(cè)(也稱作碰撞偵測(cè)(collisiondetection)),通常是指一種判斷兩個(gè)或多個(gè)對(duì)象是否產(chǎn)生交集的方法。可以應(yīng)用于電子游戲和其他計(jì)算物理學(xué)中,也可以應(yīng)用于人工智能中。除了可以用于確定兩個(gè)對(duì)象是否已經(jīng)碰撞,還可以用于計(jì)算沖擊的時(shí)間(toi),以及獲取對(duì)象交叉碰撞的位置。
可選地,在本實(shí)施例中,在虛擬現(xiàn)實(shí)場(chǎng)景中顯示的對(duì)象中確定出允許與射線發(fā)生碰撞的初始目標(biāo)對(duì)象包括:根據(jù)對(duì)象的對(duì)象類型確定出與射線的射線類型具有對(duì)應(yīng)關(guān)系的目標(biāo)對(duì)象類型,以將目標(biāo)對(duì)象類型的對(duì)象確定為允許與射線發(fā)生碰撞的初始目標(biāo)對(duì)象。從而實(shí)現(xiàn)利用射線類型及對(duì)象類型之間的映射關(guān)系,確定出允許與射線發(fā)生碰撞的初始目標(biāo)對(duì)象,以避免虛擬現(xiàn)實(shí)場(chǎng)景中與射線無(wú)關(guān)的對(duì)象參與交互判斷過(guò)程,減少判斷時(shí)間,進(jìn)而達(dá)到簡(jiǎn)化交互判斷步驟的效果。
可選地,在本實(shí)施例中,在初始目標(biāo)對(duì)象中檢測(cè)出與射線發(fā)生碰撞的最終目標(biāo)對(duì)象包括:遍歷每個(gè)初始目標(biāo)對(duì)象,檢測(cè)每個(gè)初始目標(biāo)對(duì)象在虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間是否存在與射線重合的部分;將存在與射線重合的部分的初始目標(biāo)對(duì)象確定為最終目標(biāo)對(duì)象。
需要說(shuō)明的是,在本實(shí)施例中,上述射線可以但不限于為具有起始點(diǎn)和終點(diǎn)的向量,上述檢測(cè)當(dāng)前目標(biāo)對(duì)象在虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間是否存在與射線重合的部分可以但不限于:檢測(cè)上述空間中是否包含上述射線構(gòu)成的向量中的點(diǎn)。也就是說(shuō),將虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間與射線上的每個(gè)點(diǎn)位置分別進(jìn)行碰撞檢測(cè),以達(dá)到準(zhǔn)確判斷出與射線碰撞的最終目標(biāo)對(duì)象的效果。此外,若虛擬現(xiàn)實(shí)場(chǎng)景所顯示的多幀畫(huà)面,則在本實(shí)施例中,可以但不限于對(duì)每一幀都做碰撞檢測(cè),以確定虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間中是否包含上述射線構(gòu)成的向量中的點(diǎn),從而保證碰撞檢測(cè)的精確度。
可選地,在本實(shí)施例中,利用射線所進(jìn)行的操作可以包括但不限于:點(diǎn)擊操作、移動(dòng)操作、選中操作等等。與上述操作對(duì)應(yīng)的執(zhí)行事件可以包括但不限于以下至少之一:
1)進(jìn)入事件(enter):射線開(kāi)始指向某一個(gè)對(duì)象,通過(guò)比較這一幀和上一幀的射線的擊中對(duì)象列表的變化,看是否存在新添加的對(duì)象,觸發(fā)新添加對(duì)象的事件;
2)離開(kāi)事件(leave):射線離開(kāi)指向某一個(gè)對(duì)象,通過(guò)比較這一幀和上一幀的射線的擊中對(duì)象列表的變化,看是否存在新刪除的對(duì)象,觸發(fā)新刪除對(duì)象的事件;
3)按下事件(touchdown):射線指向控件,按下交互按鍵的時(shí)候,觸發(fā)交互列表中所有對(duì)象的事件;
4)抬起事件(touchup):射線指向控件,抬起交互按鍵的時(shí)候,觸發(fā)交互列表中所有對(duì)象的事件;
5)移動(dòng)事件(move):射線在最終目標(biāo)對(duì)象中的各個(gè)控件上移動(dòng),觸發(fā)交互列表中所有對(duì)象的事件。
6)其他:對(duì)于一些特殊的事件,比如拖動(dòng)操作觸發(fā)的拖動(dòng)事件等等。
需要說(shuō)明的是,上述控件可以但不限于為用于構(gòu)成界面的一系列預(yù)先制作的功能控件,例如,按鈕,復(fù)選框,滑塊,進(jìn)度條等。上述僅是一種示例,本實(shí)施例中對(duì)此不做任何限定。
通過(guò)本申請(qǐng)?zhí)峁┑膶?shí)施例,在虛擬現(xiàn)實(shí)場(chǎng)景中顯示的對(duì)象中確定出允許與射線發(fā)生碰撞的初始目標(biāo)對(duì)象后,其中,虛擬現(xiàn)實(shí)場(chǎng)景中顯示有射線,再在上述初始目標(biāo)對(duì)象中檢測(cè)出與射線發(fā)生碰撞的最終目標(biāo)對(duì)象,對(duì)最終目標(biāo)對(duì)象中射線所選中的控件進(jìn)行操作。從而實(shí)現(xiàn)通過(guò)射線碰撞檢測(cè)從初始目標(biāo)對(duì)象中,獲取在虛擬現(xiàn)實(shí)場(chǎng)景中所要交互的最終目標(biāo)對(duì)象,以達(dá)到對(duì)射線所選中的最終目標(biāo)對(duì)象中的控件進(jìn)行操作的目的,進(jìn)而克服相關(guān)技術(shù)中無(wú)法對(duì)虛擬現(xiàn)實(shí)場(chǎng)景中的對(duì)象進(jìn)行精準(zhǔn)交互的問(wèn)題。
作為一種可選的方案,確定單元802包括:
1)獲取模塊,用于獲取對(duì)象的對(duì)象類型;
2)第一確定模塊,用于在對(duì)象類型中確定出與射線的射線類型具有對(duì)應(yīng)關(guān)系的目標(biāo)對(duì)象類型;
3)第二確定模塊,在對(duì)象中將類型為目標(biāo)對(duì)象類型的對(duì)象確定為初始目標(biāo)對(duì)象。
可選地,在本實(shí)施例中,對(duì)允許與射線發(fā)生碰撞的對(duì)象的類型設(shè)置為目標(biāo)對(duì)象類型,用objectcollision對(duì)象表示,將用于碰撞檢測(cè)的射線類型用lasercollision對(duì)象表示。上述僅是一種示例,本實(shí)施例中對(duì)此不做任何限定。
需要說(shuō)明的是,在本實(shí)施例中,上述用于進(jìn)行射線碰撞檢測(cè)的碰撞方式可以但不限于使用相關(guān)技術(shù)中的碰撞包圍盒,通過(guò)將被檢測(cè)的個(gè)體用碰撞包圍盒包圍,檢測(cè)各個(gè)碰撞包圍盒是否有交叉,對(duì)于產(chǎn)生交叉的情況,檢測(cè)出為產(chǎn)生碰撞。上述僅是一種示例,本實(shí)施例中對(duì)碰撞檢測(cè)的方式不做限定,還可以采用其他碰撞檢測(cè)方式。
通過(guò)本申請(qǐng)?zhí)峁┑膶?shí)施例,通過(guò)對(duì)虛擬現(xiàn)實(shí)場(chǎng)景中的對(duì)象按類型進(jìn)行分類,以實(shí)現(xiàn)對(duì)與射線類型具有對(duì)應(yīng)關(guān)系的目標(biāo)對(duì)象類型進(jìn)行碰撞檢測(cè),從而實(shí)現(xiàn)對(duì)于不是目標(biāo)對(duì)象類型的對(duì)象直接略過(guò)檢測(cè),達(dá)到射線減少碰撞檢測(cè)的對(duì)象的數(shù)量,實(shí)現(xiàn)大大節(jié)約碰撞檢測(cè)的時(shí)間消耗的效果,進(jìn)而達(dá)到簡(jiǎn)化交互判斷步驟的效果。
作為一種可選的方案,檢測(cè)單元804包括:
1)處理模塊,用于對(duì)初始目標(biāo)對(duì)象中的每個(gè)對(duì)象執(zhí)行以下步驟,其中,初始目標(biāo)對(duì)象在執(zhí)行以下步驟時(shí)被視為當(dāng)前目標(biāo)對(duì)象:
s1,檢測(cè)當(dāng)前目標(biāo)對(duì)象在虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間是否存在與射線重合的部分;
s2,若空間存在與射線重合的部分,則將當(dāng)前目標(biāo)對(duì)象確定為最終目標(biāo)對(duì)象。
可選地,在本實(shí)施例中,可以但不限于對(duì)確定為目標(biāo)對(duì)象類型的初始目標(biāo)對(duì)象執(zhí)行遍歷判斷過(guò)程,其中,分別將每個(gè)初始目標(biāo)對(duì)象作為當(dāng)前目標(biāo)對(duì)象:檢測(cè)當(dāng)前目標(biāo)對(duì)象在虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間是否存在與射線重合的部分;將存在與射線重合的部分的初始目標(biāo)對(duì)象確定為最終目標(biāo)對(duì)象。
需要說(shuō)明的是,在本實(shí)施例中,上述射線可以但不限于為具有起始點(diǎn)和終點(diǎn)的向量。在本實(shí)施例中,上述檢測(cè)當(dāng)前目標(biāo)對(duì)象在虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間是否存在與射線重合的部分可以但不限于:檢測(cè)上述空間中是否包含上述射線構(gòu)成的向量中的點(diǎn)。也就是說(shuō),將虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間與射線上的每個(gè)點(diǎn)位置分別進(jìn)行碰撞檢測(cè),以達(dá)到準(zhǔn)確判斷出與射線碰撞的最終目標(biāo)對(duì)象的效果。其中,上述當(dāng)前目標(biāo)對(duì)象在虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間可以但不限于如圖3所示,以對(duì)象e為例,對(duì)象e在虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間為一個(gè)矩形平面區(qū)域;如圖4所示,以對(duì)象y為例,對(duì)象y在虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間為一個(gè)人物角色y在三維空間中所占用的立體空間。
具體結(jié)合以下示例進(jìn)行說(shuō)明,例如,以圖3所示對(duì)象e為例,若檢測(cè)出射線與對(duì)象e對(duì)應(yīng)的矩形平面區(qū)域存在交叉,則可檢測(cè)出對(duì)象e存在與射線重合的部分,可將對(duì)象e確定為最終目標(biāo)對(duì)象。又例如,以圖4所示對(duì)象y為例,若檢測(cè)出射線與對(duì)象y對(duì)應(yīng)的人物角色y所占的立體空間存在交叉,則可檢測(cè)出對(duì)象y存在與射線重合的部分,可將對(duì)象y確定為最終目標(biāo)對(duì)象。
通過(guò)本申請(qǐng)?zhí)峁┑膶?shí)施例,通過(guò)遍歷各個(gè)初始目標(biāo)對(duì)象,分別依次判斷各個(gè)初始目標(biāo)對(duì)象在虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間是否存在與射線重合的部分,以實(shí)現(xiàn)根據(jù)判斷結(jié)果準(zhǔn)確檢測(cè)出用于交互的最終目標(biāo)對(duì)象,保證交互的準(zhǔn)確性。
作為一種可選的方案,處理模塊通過(guò)以下步驟實(shí)現(xiàn)檢測(cè)當(dāng)前目標(biāo)對(duì)象在虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間是否存在與射線重合的部分:
s1,檢測(cè)空間是否包含射線上的點(diǎn),其中,射線包括:起始點(diǎn)和終點(diǎn),射線的方向由起始點(diǎn)指向終點(diǎn);
s2,若檢測(cè)出空間包含射線上的點(diǎn),則確定出空間存在與射線重合的部分。
可選地,在本實(shí)施例中,上述射線可以但不限于為包括起始點(diǎn)和終點(diǎn)的有向向量。其中,上述起始點(diǎn)可以但不限于為在虛擬現(xiàn)實(shí)場(chǎng)景中發(fā)出射線的位置,終點(diǎn)是按照射線所指方向延伸一定距離后到達(dá)的位置,在這條射線上的每一個(gè)位置都需要進(jìn)行碰撞檢測(cè)。
例如,如圖5所示,假設(shè)起始點(diǎn)以手指在虛擬現(xiàn)實(shí)場(chǎng)景中的位置(如用handposition表示)為例,根據(jù)提前設(shè)置好的射線的延伸距離(如用maxdistance表示),獲取對(duì)應(yīng)的終點(diǎn)(如用maxrangeposition表示),按照手指方向檢測(cè)對(duì)象y所占空間是否包括上述射線上的點(diǎn)。例如,如圖6所示,碰撞檢測(cè)結(jié)果表示:對(duì)象y對(duì)應(yīng)的人物角色y所占的立體空間與上述射線(起始點(diǎn)為handposition,終點(diǎn)為maxrangeposition)存在交叉,交叉點(diǎn)為圖6菱形所示位置,則可檢測(cè)出對(duì)象y存在與射線重合的部分,可將對(duì)象y確定為最終目標(biāo)對(duì)象。
可選地,在本實(shí)施例中,處理模塊通過(guò)以下步驟通過(guò)以下步驟確定終點(diǎn):根據(jù)起始點(diǎn)在虛擬現(xiàn)實(shí)場(chǎng)景中的位置、用于指示方向的方向矢量、預(yù)定確定的距離范圍值,確定出終點(diǎn)在虛擬現(xiàn)實(shí)場(chǎng)景中的位置。
例如,如圖7所示,用于確定上述射線的終點(diǎn)的公式如下:
maxrangeposition=handposition+handforwardvector*maxdistance
其中,上述handforwardvector用于表示射線方向的單位向量。也就是說(shuō)在起始點(diǎn)的三維坐標(biāo)上,疊加沿射線方向上的延伸距離的三維坐標(biāo),從而得到終點(diǎn)的三維坐標(biāo)。
通過(guò)本申請(qǐng)?zhí)峁┑膶?shí)施例,通過(guò)檢測(cè)空間是否包含射線上的點(diǎn),以實(shí)現(xiàn)檢測(cè)當(dāng)前目標(biāo)對(duì)象在虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間是否存在與射線重合的部分,也就是說(shuō),將虛擬現(xiàn)實(shí)場(chǎng)景中所占的空間與射線上的每個(gè)點(diǎn)位置分別進(jìn)行碰撞檢測(cè),以達(dá)到準(zhǔn)確判斷出與射線碰撞的最終目標(biāo)對(duì)象的效果,從而保證碰撞檢測(cè)的精確度,進(jìn)而實(shí)現(xiàn)提高交互準(zhǔn)確性的效果。
作為一種可選的方案,操作單元806包括:
1)選中模塊,用于在最終目標(biāo)對(duì)象中選中射線與最終目標(biāo)對(duì)象重合的位置上的控件;
2)操作模塊,用于對(duì)控件進(jìn)行操作。
可選地,在本實(shí)施例中,操作模塊包括:
(1)第一確定子模塊,用于在檢測(cè)到與虛擬現(xiàn)實(shí)場(chǎng)景對(duì)應(yīng)的交互按鍵被按下時(shí),確定出檢測(cè)到開(kāi)始點(diǎn)擊事件;
(2)第二確定子模塊,用于在檢測(cè)到與虛擬現(xiàn)實(shí)場(chǎng)景對(duì)應(yīng)的交互按鍵被抬起時(shí),確定出檢測(cè)到結(jié)束點(diǎn)擊事件;
(3)第三確定子模塊,用于在檢測(cè)到開(kāi)始點(diǎn)擊事件和結(jié)束點(diǎn)擊事件時(shí),對(duì)控件進(jìn)行點(diǎn)擊操作。
可選地,在本實(shí)施例中,上述虛擬現(xiàn)實(shí)場(chǎng)景中對(duì)象可以包括但不限于:虛幻動(dòng)態(tài)圖形(unrealmobile)ui設(shè)計(jì)器所設(shè)計(jì)的對(duì)象(稱作umg對(duì)象),目標(biāo)對(duì)象類型中的對(duì)象。
需要說(shuō)明的是,在本實(shí)施例中,如果與射線發(fā)生碰撞的是umg對(duì)象,則需調(diào)用umg相關(guān)的控制邏輯,例如,在ue4環(huán)境中,對(duì)于umg對(duì)象,通過(guò)調(diào)用widget的on系列函數(shù)來(lái)觸發(fā)widget的事件響應(yīng),從而達(dá)到兼容一般的游戲引擎對(duì)于umg的支持的目的。也就是說(shuō),虛擬現(xiàn)實(shí)內(nèi)容開(kāi)發(fā)者可以采用一般ui的制作方法來(lái)為虛擬現(xiàn)實(shí)場(chǎng)景制作用戶界面(userinterface,簡(jiǎn)稱ui)菜單,該菜單可以直接應(yīng)用于虛擬現(xiàn)實(shí)場(chǎng)景進(jìn)行交互。此外,在本實(shí)施例中,如果與射線發(fā)生碰撞的不是umg對(duì)象,而是目標(biāo)對(duì)象類型中的對(duì)象,則可參照本實(shí)施例中記載的交互方式進(jìn)行交互。
可選地,在本實(shí)施例中,利用射線所進(jìn)行的操作可以包括但不限于:點(diǎn)擊操作、移動(dòng)操作、選中操作等等。上述僅是一種示例,本實(shí)施例中對(duì)此不做任何限定。例如,以點(diǎn)擊操作為例,可以但不限于通過(guò)以下事件確定:
1)按下事件(touchdown):射線指向控件,按下交互按鍵的時(shí)候,觸發(fā)交互列表中所有對(duì)象的事件。對(duì)于umg直接調(diào)用widget已經(jīng)存在的on系列函數(shù)觸發(fā)已經(jīng)存在的回調(diào)機(jī)制,對(duì)于其他則自定義該事件的回調(diào)函數(shù);
2)抬起事件(touchup):射線指向控件,抬起交互按鍵的時(shí)候,觸發(fā)交互列表中所有對(duì)象的事件。對(duì)于umg直接調(diào)用widget已經(jīng)存在的on系列函數(shù)觸發(fā)已經(jīng)存在的回調(diào)機(jī)制,對(duì)于其他則自定義該事件的回調(diào)函數(shù)。
也就是說(shuō),在檢測(cè)到與虛擬現(xiàn)實(shí)場(chǎng)景對(duì)應(yīng)的交互按鍵被按下時(shí),確定出檢測(cè)到開(kāi)始點(diǎn)擊事件;在檢測(cè)到與虛擬現(xiàn)實(shí)場(chǎng)景對(duì)應(yīng)的交互按鍵被抬起時(shí),確定出檢測(cè)到結(jié)束點(diǎn)擊事件;然后在檢測(cè)到開(kāi)始點(diǎn)擊事件和結(jié)束點(diǎn)擊事件時(shí),確認(rèn)對(duì)控件進(jìn)行點(diǎn)擊操作。
例如,以圖5為例,在選中對(duì)象y為最終目標(biāo)對(duì)象時(shí),選中射線與最終目標(biāo)對(duì)象重合的位置(如對(duì)象y的右腳),然后對(duì)重合的位置(如對(duì)象y的右腳)上的控件執(zhí)行點(diǎn)擊操作,例如檢測(cè)到交互按鍵被按下的開(kāi)始點(diǎn)擊事件及交互按鍵被抬起時(shí)的結(jié)束點(diǎn)擊事件,則可確認(rèn)對(duì)上述控件執(zhí)行點(diǎn)擊操作。從而實(shí)現(xiàn)對(duì)對(duì)象y對(duì)應(yīng)的人物角色y的右腳的交互控制,例如通過(guò)點(diǎn)擊右腳實(shí)現(xiàn)控制抬起右腳執(zhí)行踢球動(dòng)作。上述僅是一種示例,本實(shí)施例中對(duì)此不做任何限定。
通過(guò)本申請(qǐng)?zhí)峁┑膶?shí)施例,在最終目標(biāo)對(duì)象中選中射線與最終目標(biāo)對(duì)象重合的位置上的控件,對(duì)該控件進(jìn)行操作。從而實(shí)現(xiàn)在虛擬現(xiàn)實(shí)場(chǎng)景中通過(guò)射線完成與對(duì)象之間的交互,以保證交互準(zhǔn)確性。
此處需要說(shuō)明的是,上述模塊與對(duì)應(yīng)的步驟所實(shí)現(xiàn)的示例和應(yīng)用場(chǎng)景相同,但不限于上述實(shí)施例1所公開(kāi)的內(nèi)容。需要說(shuō)明的是,上述模塊作為裝置的一部分可以運(yùn)行在如圖1所示的硬件環(huán)境中,可以通過(guò)軟件實(shí)現(xiàn),也可以通過(guò)硬件實(shí)現(xiàn),其中,硬件環(huán)境包括網(wǎng)絡(luò)環(huán)境。
實(shí)施例3
根據(jù)本發(fā)明實(shí)施例,還提供了一種用于實(shí)施上述虛擬現(xiàn)實(shí)場(chǎng)景的交互方法的虛擬現(xiàn)實(shí)場(chǎng)景的交互終端,如圖9所示,該終端包括:
1)通訊接口902,設(shè)置為獲取虛擬現(xiàn)實(shí)場(chǎng)景中所顯示的射線;
2)處理器904,與通訊接口902連接,設(shè)置為在虛擬現(xiàn)實(shí)場(chǎng)景中顯示的對(duì)象中確定出允許與射線發(fā)生碰撞的初始目標(biāo)對(duì)象,其中,虛擬現(xiàn)實(shí)場(chǎng)景中顯示有射線;還設(shè)置為在初始目標(biāo)對(duì)象中檢測(cè)出與射線發(fā)生碰撞的最終目標(biāo)對(duì)象;還設(shè)置為對(duì)最終目標(biāo)對(duì)象中射線所選中的控件進(jìn)行操作;
3)顯示器906,與處理器904連接,設(shè)置為現(xiàn)實(shí)射線、初始目標(biāo)對(duì)象及最終目標(biāo)對(duì)象;
4)存儲(chǔ)器908,與通訊接口902、處理器904及顯示器906連接,設(shè)置為存儲(chǔ)上述初始目標(biāo)對(duì)象、最終目標(biāo)對(duì)象,及射線位置信息。
可選地,本實(shí)施例中的具體示例可以參考上述實(shí)施例1和實(shí)施例2中所描述的示例,本實(shí)施例在此不再贅述。
本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的各種方法中的全部或部分步驟是可以通過(guò)程序來(lái)指令終端設(shè)備相關(guān)的硬件來(lái)完成,該程序可以存儲(chǔ)于一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,存儲(chǔ)介質(zhì)可以包括:閃存盤、只讀存儲(chǔ)器(read-onlymemory,rom)、隨機(jī)存取器(randomaccessmemory,ram)、磁盤或光盤等。
實(shí)施例4
本發(fā)明的實(shí)施例還提供了一種存儲(chǔ)介質(zhì)??蛇x地,在本實(shí)施例中,上述存儲(chǔ)介質(zhì)可以位于上述實(shí)施例所示的網(wǎng)絡(luò)中的多個(gè)網(wǎng)絡(luò)設(shè)備中的至少一個(gè)網(wǎng)絡(luò)設(shè)備上。
可選地,在本實(shí)施例中,存儲(chǔ)介質(zhì)被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:
s1,在虛擬現(xiàn)實(shí)場(chǎng)景中顯示的對(duì)象中確定出允許與射線發(fā)生碰撞的初始目標(biāo)對(duì)象,其中,虛擬現(xiàn)實(shí)場(chǎng)景中顯示有射線;
s2,在初始目標(biāo)對(duì)象中檢測(cè)出與射線發(fā)生碰撞的最終目標(biāo)對(duì)象;
s3,對(duì)最終目標(biāo)對(duì)象中射線所選中的控件進(jìn)行操作。
可選地,本實(shí)施例中的具體示例可以參考上述實(shí)施例1和實(shí)施例2中所描述的示例,本實(shí)施例在此不再贅述。
可選地,在本實(shí)施例中,上述存儲(chǔ)介質(zhì)可以包括但不限于:u盤、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、移動(dòng)硬盤、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
上述實(shí)施例中的集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在上述計(jì)算機(jī)可讀取的存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)或多臺(tái)計(jì)算機(jī)設(shè)備(可為個(gè)人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。
在本發(fā)明的上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒(méi)有詳述的部分,可以參見(jiàn)其他實(shí)施例的相關(guān)描述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的客戶端,可通過(guò)其它的方式實(shí)現(xiàn)。其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。