一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法
【專利摘要】一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法,它有五大步驟:一、啟動計(jì)算機(jī)、數(shù)據(jù)手套和位置跟蹤器;二、戴上數(shù)據(jù)手套,運(yùn)行計(jì)算機(jī)獲取數(shù)據(jù)手套和位置跟蹤器發(fā)來的數(shù)據(jù);三、佩戴數(shù)據(jù)手套做手指彎曲、手掌平移旋轉(zhuǎn),數(shù)據(jù)手套和位置跟蹤器將手指和手掌的位置及變化數(shù)據(jù)發(fā)送給程序,程序通過接收數(shù)據(jù)驅(qū)動虛擬手的手指和手掌的運(yùn)動;四、使用數(shù)據(jù)手套的手在現(xiàn)實(shí)中模擬抓取動作控制計(jì)算機(jī)中的虛擬手去抓取物體,程序會判斷虛擬物體是否處于被抓取狀態(tài);若未滿足被抓取,返回三,繼續(xù)執(zhí)行三、四,直到程序退出;若滿足被抓取,執(zhí)行五;五、通過計(jì)算虛擬手的位置和姿態(tài)的變化來控制虛擬物體的位置和姿態(tài)的變化,從而控制虛擬物體的移動和旋轉(zhuǎn)。
【專利說明】一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法,具體涉及一種虛擬現(xiàn)實(shí)領(lǐng)域的基于數(shù)據(jù)手套的實(shí)時虛擬手的驅(qū)動以及基于數(shù)據(jù)手套、位置跟蹤器以及物理引擎的虛擬手和虛擬物體的實(shí)時抓取方法,屬于虛擬現(xiàn)實(shí)【技術(shù)領(lǐng)域】。
【背景技術(shù)】
[0002]虛擬現(xiàn)實(shí)技術(shù)是一種可以創(chuàng)建和體驗(yàn)虛擬世界的計(jì)算機(jī)技術(shù),它利用計(jì)算機(jī)生成一種模擬環(huán)境,在模擬環(huán)境中來逼真現(xiàn)實(shí)世界。虛擬現(xiàn)實(shí)技術(shù)是一種多源信息融合交互式的三維動態(tài)視景和實(shí)體行為的系統(tǒng)仿真,可借助傳感頭盔、數(shù)據(jù)手套等專業(yè)設(shè)備,讓用戶進(jìn)入虛擬空間,實(shí)時感知和操作虛擬世界中的各種對象,從而通過視覺、觸覺和聽覺等獲得身臨其境的真實(shí)感受。
[0003]人手是人體中最具靈活的器官,人們在日常生活及工作中無時無刻都在使用手,而人手抓取物體的運(yùn)動又是所有手部運(yùn)動中最為復(fù)雜的運(yùn)動,所以研究虛擬世界中如何模擬人手的抓取運(yùn)動是十分有意義的。
[0004]數(shù)據(jù)手套是虛擬現(xiàn)實(shí)領(lǐng)域的重要交互設(shè)備,是一種通用的人機(jī)接口,其直接目的在于實(shí)時獲取人手的動作姿態(tài),以便在虛擬環(huán)境中再現(xiàn)人手動作,達(dá)到理想的人機(jī)交互目的。
[0005]現(xiàn)有的虛擬手抓取虛擬物體的方法中存在一些問題:第一,虛擬手抓取虛擬物體的方法準(zhǔn)確性較差,不能很真實(shí)準(zhǔn)確地模擬物體被抓取的過程;第二,由于一些判斷虛擬物體是否被虛擬手所抓取的判定條件較為復(fù)雜,從而導(dǎo)致虛擬手與虛擬物體的抓取方法實(shí)時性較差,使得程序在一般計(jì)算機(jī)中不能流暢地運(yùn)行?;谝陨显?,有必要開發(fā)一套準(zhǔn)確性較高并且實(shí)時性較好的虛擬手抓取虛擬物體的方法。本發(fā)明提出一種基于數(shù)據(jù)手套和物理引擎的實(shí)時虛擬手抓取方法,可以準(zhǔn)確地模擬虛擬手抓取虛擬物體的過程并且流暢地在一般計(jì)算機(jī)上運(yùn)行。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于提供一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法,它是一種基于普通計(jì)算機(jī)的實(shí)時準(zhǔn)確的虛擬手抓取虛擬物體的方法,以解決現(xiàn)有方法中虛擬手抓取虛擬物體時存在的抓取過程不準(zhǔn)確,運(yùn)行不流暢滿足不了實(shí)時性的問題。
[0007]本發(fā)明提供的技術(shù)方案是:一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法,具體是通過數(shù)據(jù)手套內(nèi)的傳感器獲取的數(shù)據(jù),實(shí)時驅(qū)動虛擬手的手指關(guān)節(jié)的轉(zhuǎn)動。通過位置跟蹤器獲取的6自由度的位置信息,實(shí)時驅(qū)動虛擬手在虛擬空間的位置及姿態(tài)。通過物理引擎中的碰撞檢測模塊以及程序中設(shè)定的判斷虛擬物體是否處于抓取狀態(tài)的條件,實(shí)現(xiàn)虛擬手實(shí)時準(zhǔn)確地抓取虛擬物體。
[0008]本發(fā)明一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法,它包括如下步驟:[0009]步驟一:將數(shù)據(jù)手套和位置跟蹤器通過USB接口和串口接入計(jì)算機(jī),啟動系統(tǒng)中的所有設(shè)備,包括計(jì)算機(jī)、數(shù)據(jù)手套和位置跟蹤器。
[0010]步驟二:用戶戴上數(shù)據(jù)手套,運(yùn)行計(jì)算機(jī)上的一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法的程序,程序會自動連接數(shù)據(jù)手套和位置跟蹤器,并實(shí)時獲取數(shù)據(jù)手套和位置跟蹤器發(fā)送來的數(shù)據(jù)。
[0011]步驟三:用戶佩戴數(shù)據(jù)手套做一系列動作,包括:手指彎曲,整個手掌的平移旋轉(zhuǎn)運(yùn)動,數(shù)據(jù)手套和位置跟蹤器會將手指的彎曲和手的位置及姿態(tài)的變化的數(shù)據(jù)發(fā)送給程序,程序通過接收到的數(shù)據(jù)驅(qū)動虛擬手的手指運(yùn)動和手掌的運(yùn)動。
[0012]步驟四:用戶通過使用佩戴數(shù)據(jù)手套的手在現(xiàn)實(shí)世界中模擬抓取物體的動作控制計(jì)算機(jī)中的虛擬手去抓取物體。程序會調(diào)用物理引擎中的碰撞檢測算法以及執(zhí)行程序中的抓取條件的判定來判斷虛擬物體是否處于被抓取的狀態(tài)。如果虛擬物體沒有滿足被抓取的條件時,程序返回步驟三,繼續(xù)從步驟三開始執(zhí)行步驟三、四,直到程序退出。如果虛擬物體滿足被抓取條件,執(zhí)行步驟五。
[0013]步驟五:通過計(jì)算虛擬手的位置變化和朝向的變化來控制虛擬物體的位置和姿態(tài)的變化,從而控制虛擬物體的移動和旋轉(zhuǎn)。
[0014]其中,步驟一中所述的數(shù)據(jù)手套為Immersion公司的具有18個傳感器的CyberGlove II (虛擬現(xiàn)實(shí)數(shù)據(jù)手套)。
[0015]其中,步驟一所述的位置跟蹤器為Ascension公司的Flock of Birds位置追蹤器,可以提供空間中6自由度的位置信息。
[0016]其中,步驟三中數(shù)據(jù)手套發(fā)送給程序的傳感器數(shù)值和虛擬手模型的手指彎曲的角度之間需要進(jìn)行轉(zhuǎn)換,具體的轉(zhuǎn)換公式為:
[0017]angle=M(Scur—Smin) / (Smax—Smin)
[0018]其中,angle為某一手指的一個關(guān)節(jié)的當(dāng)前彎曲角度,Scur是數(shù)據(jù)手套的對應(yīng)的這個關(guān)節(jié)的傳感器的當(dāng)前數(shù)值,Smax和Smin是對應(yīng)的那個傳感器發(fā)送的最大值和最小值,M是對應(yīng)的這個關(guān)節(jié)能夠彎曲的最大角度。
[0019]其中,步驟四中所述的物理引擎采用的是Bullet開源物理模擬計(jì)算引擎,能夠進(jìn)行碰撞檢測功能的實(shí)現(xiàn)。
[0020]其中,計(jì)算機(jī)中的一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法的軟件功能包括加載場景模型,實(shí)時接收數(shù)據(jù)手套和位置跟蹤器發(fā)來的數(shù)據(jù),實(shí)時進(jìn)行虛擬手和虛擬物體的碰撞檢測,實(shí)時進(jìn)行場景的更改和繪制。
[0021]其中,步驟四中所指的調(diào)用物理引擎中的碰撞檢測算法以及執(zhí)行程序中的抓取條件的判定具體過程包括:
[0022](I)程序生成虛擬物體和虛擬手的手指以及手掌的包圍盒。
[0023](2)判斷各手指以及手掌的包圍盒是否與虛擬物體有重疊,如果有重疊則繼續(xù)執(zhí)行后面的步驟,否則判定虛擬物體沒有處于被抓取的狀態(tài)。
[0024](3)包圍盒有重疊的部分調(diào)用物理引擎bullet中面片級的碰撞檢測方法生成碰撞物體對。
[0025](4)判斷碰撞對中是否包含手掌或者大拇指,如果包含其中之一,則繼續(xù)執(zhí)行后面的步驟,否則判定虛擬物體沒有處于被抓取的狀態(tài)。[0026](5)判斷碰撞對中除大拇指外的手指的數(shù)量是否大于1,如果滿足條件,則認(rèn)為虛擬物體處于被抓取的狀態(tài),否則,判定虛擬物體沒有處于被抓取的狀態(tài)。
[0027]其中,包圍盒是指平行于坐標(biāo)軸的能夠?qū)⑻摂M物體以及虛擬手包裹在里面的最小立方體。
[0028]本發(fā)明一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法,其優(yōu)點(diǎn)及功效在于:通過利用物體包圍盒進(jìn)行初探,判斷物體是否有可能發(fā)生碰撞,從而只在有可能發(fā)生碰撞的部分進(jìn)一步調(diào)用更加精確的碰撞檢測算法,提高了碰撞檢測的效率,從而解決了實(shí)時性不好,運(yùn)行不流暢的問題。在完成碰撞檢測的基礎(chǔ)上,通過特定抓取策略的設(shè)定,使得虛擬手能夠精確地對虛擬物體進(jìn)行抓取操作。
【專利附圖】
【附圖說明】
[0029]圖1是本發(fā)明所提出的一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法的系統(tǒng)組成示意圖。
[0030]圖2是本發(fā)明所提出的一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法的流程圖。
[0031]圖3是本發(fā)明中判斷虛擬物體是否處于抓取狀態(tài)的具體過程的流程圖。
[0032]圖4是本發(fā)明中一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法的軟件流程框圖。
[0033]圖1中具體標(biāo)號如下:
[0034]I普通顯示器;2位置跟蹤器;3數(shù)據(jù)手套;4普通計(jì)算機(jī)主機(jī);
[0035]5、6、7是連接線。
【具體實(shí)施方式】
[0036]下面結(jié)合附圖,對本發(fā)明的技術(shù)方案做進(jìn)一步的說明。
[0037]見圖2,本發(fā)明方法中,系統(tǒng)運(yùn)行的操作方法具體步驟如下:
[0038]步驟一:將數(shù)據(jù)手套3和位置跟蹤器2通過USB接口和串口接入計(jì)算機(jī),啟動系統(tǒng)中的所有設(shè)備,包括計(jì)算機(jī)、數(shù)據(jù)手套3和位置跟蹤器2。
[0039]步驟二:用戶戴上數(shù)據(jù)手套3,運(yùn)行計(jì)算機(jī)上的一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法的程序,程序會自動連接數(shù)據(jù)手套3和位置跟蹤器2,并實(shí)時獲取數(shù)據(jù)手套3和位置跟蹤器2發(fā)送來的數(shù)據(jù)。
[0040]步驟三:用戶佩戴數(shù)據(jù)手套3做一系列動作,包括:手指彎曲,整個手掌的平移旋轉(zhuǎn)運(yùn)動,數(shù)據(jù)手套3和位置跟蹤器2會將手指的彎曲和手的位置及姿態(tài)的變化的數(shù)據(jù)發(fā)送給程序,程序通過接收到的數(shù)據(jù)驅(qū)動虛擬手的手指運(yùn)動和手掌的運(yùn)動。
[0041]步驟四:用戶通過使用佩戴數(shù)據(jù)手套3的手在現(xiàn)實(shí)世界中模擬抓取物體的動作控制計(jì)算機(jī)中的虛擬手去抓取物體。程序會調(diào)用物理引擎中的碰撞檢測算法以及執(zhí)行程序中的抓取條件的判定來判斷虛擬物體是否處于被抓取的狀態(tài)。如果虛擬物體沒有滿足被抓取的條件時,程序返回步驟三,繼續(xù)從步驟三開始執(zhí)行步驟三、四,直到程序退出。如果虛擬物體滿足被抓取條件,執(zhí)行步驟五。
[0042]步驟五:通過計(jì)算虛擬手的位置變化和朝向的變化來控制虛擬物體的位置和姿態(tài)的變化,從而控制虛擬物體的移動和旋轉(zhuǎn)。
[0043]其中,步驟一中所述的數(shù)據(jù)手套3為Immersion公司的具有18個傳感器的CyberGlove II (虛擬現(xiàn)實(shí)數(shù)據(jù)手套)。
[0044]其中,步驟一所述的位置跟蹤器2為Ascension公司的Flock of Birds位置追蹤器,可以提供空間中6自由度的位置信息。
[0045]其中,步驟三中數(shù)據(jù)手套發(fā)送給程序的傳感器數(shù)值和虛擬手模型的手指彎曲的角度之間需要進(jìn)行轉(zhuǎn)換,具體的轉(zhuǎn)換公式為:
[0046]angle=M(Scur—Smin) / (Smax—Smin)
[0047]其中,angle為某一手指的一個關(guān)節(jié)的當(dāng)前彎曲角度,Scur是數(shù)據(jù)手套3的對應(yīng)的這個關(guān)節(jié)的傳感器的當(dāng)前數(shù)值,Smax和Smin是對應(yīng)的那個傳感器發(fā)送的最大值和最小值,M是對應(yīng)的這個關(guān)節(jié)能夠彎曲的最大角度。
[0048]其中,步驟四中所述的物理引擎采用的是Bullet開源物理模擬計(jì)算引擎,能夠進(jìn)行碰撞檢測功能的實(shí)現(xiàn)。
[0049]其中,計(jì)算機(jī)中的一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法的軟件功能包括加載場景模型,實(shí)時接收數(shù)據(jù)手套3和位置跟蹤器2發(fā)來的數(shù)據(jù),實(shí)時進(jìn)行虛擬手和虛擬物體的碰撞檢測,實(shí)時進(jìn)行場景的更改和繪制。
[0050]其中,步驟四中所指的調(diào)用物理引擎中的碰撞檢測算法以及執(zhí)行程序中的抓取條件的判定具體過程包括:
[0051](I)程序生成虛擬物體和虛擬手的手指以及手掌的包圍盒。
[0052](2)判斷各手指以及手掌的包圍盒是否與虛擬物體有重疊,如果有重疊則繼續(xù)執(zhí)行后面的步驟,否則判定虛擬物體沒有處于被抓取的狀態(tài)。
[0053](3)包圍盒有重疊的部分調(diào)用物理引擎bullet中面片級的碰撞檢測方法生成碰撞物體對。
[0054](4)判斷碰撞對中是否包含手掌或者大拇指,如果包含其中之一,則繼續(xù)執(zhí)行后面的步驟,否則判定虛擬物體沒有處于被抓取的狀態(tài)。
[0055](5)判斷碰撞對中除大拇指外的手指的數(shù)量是否大于1,如果滿足條件,則認(rèn)為虛擬物體處于被抓取的狀態(tài),否則,判定虛擬物體沒有處于被抓取的狀態(tài)。
[0056]其中,包圍盒是指平行于坐標(biāo)軸的能夠?qū)⑻摂M物體以及虛擬手包裹在里面的最小立方體。
[0057]如圖1所示,發(fā)明方法中使用的硬件設(shè)備包括:普通顯示器1,位置跟蹤器2,數(shù)據(jù)手套3,普通計(jì)算機(jī)主機(jī)4。普通顯示器I通過連接線5與普通計(jì)算機(jī)主機(jī)4相連,位置跟蹤器2通過串口連接線6同普通計(jì)算機(jī)主機(jī)4相連,數(shù)據(jù)手套3通過USB連接線7同普通計(jì)算機(jī)主機(jī)4相接連。
[0058]發(fā)明方法中使用的軟件平臺包括操作系統(tǒng)(Windows或者Linux操作系統(tǒng))、顯卡以及對應(yīng)的驅(qū)動程序等已有通用軟件技術(shù)平臺和基于OSG自主開發(fā)的安裝于計(jì)算機(jī)上的一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法的軟件。
[0059]圖2是本發(fā)明所提出的一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法的流程圖。首先將所有的設(shè)備連入普通計(jì)算機(jī)主機(jī)4,包括:數(shù)據(jù)手套3和位置跟蹤器2,并且啟動所有設(shè)備。然后,用戶戴上數(shù)據(jù)手套3,運(yùn)行程序,程序會自動獲取數(shù)據(jù)手套3和位置跟蹤器2發(fā)送來的數(shù)據(jù),并且用這些數(shù)據(jù)實(shí)時驅(qū)動虛擬手的運(yùn)動。接下來用戶通過使用佩戴數(shù)據(jù)手套3的手在現(xiàn)實(shí)世界中模擬抓取物體的動作控制計(jì)算機(jī)中的虛擬手去抓取物體,程序會判斷虛擬物體是否處于被抓取的狀態(tài)。如果虛擬物體處于被抓取的狀態(tài),虛擬物體將跟隨虛擬手一起運(yùn)動,如果虛擬物體沒有處于被抓取的狀態(tài),程序會更新虛擬手的位置然后繼續(xù)判斷虛擬物體是否處于被抓取的狀態(tài)。
[0060]圖3是本發(fā)明所提出的判斷虛擬物體是否處于抓取狀態(tài)的具體過程的流程圖。程序流程會在每一幀繪制前執(zhí)行一次,以保證虛擬手與虛擬物體交互的準(zhǔn)確性。首先,程序會計(jì)算更新虛擬手和虛擬物體的包圍盒,通過計(jì)算得到的包圍盒進(jìn)行碰撞檢測的初探,初探的目的是剔除包圍盒沒有重疊的物體(如果連包圍盒都沒有重疊的一對物體,就沒有可能發(fā)生碰撞,從而就沒有必要進(jìn)行更進(jìn)一步的碰撞檢測。通過這種機(jī)制提高了碰撞檢測的效率)。然后,在包圍盒有重疊的物體中進(jìn)行面片級別的碰撞檢測,判斷碰撞對中是否包含大拇指或手掌,如果不包含則認(rèn)為虛擬物體沒有處于抓取狀態(tài)。如果碰撞對中包含大拇指或手掌,繼續(xù)判斷碰撞對中除大拇指外的手指數(shù)量是否大于1,如果是,則認(rèn)為物體處于抓取狀態(tài),如果不是,則認(rèn)為物體沒有處于抓取狀態(tài)。
[0061]圖4是本發(fā)明中一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法的軟件流程框圖。首先,程序先進(jìn)行初始化,包括:連接數(shù)據(jù)手套3和位置跟蹤器2,加載虛擬手和虛擬物體的模型。然后,程序獲取到的數(shù)據(jù)手套3和位置跟蹤器2的數(shù)據(jù),并用此數(shù)據(jù)驅(qū)動虛擬手的平移和旋轉(zhuǎn)運(yùn)動。在虛擬手位置改變的這一幀動畫中,對新的位置的虛擬手與虛擬物體進(jìn)行碰撞檢測和判斷虛擬物體是否處于抓取狀態(tài),如果虛擬物體處于被抓取的狀態(tài),則虛擬物體跟隨虛擬手一起進(jìn)行旋轉(zhuǎn)和平移運(yùn)動。然后更新繪制場景直到程序退出。
【權(quán)利要求】
1.一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法,其特征在于:它包括如下步驟: 步驟一:將數(shù)據(jù)手套和位置跟蹤器通過USB接口和串口接入計(jì)算機(jī),啟動系統(tǒng)中的所有設(shè)備,包括計(jì)算機(jī)、數(shù)據(jù)手套和位置跟蹤器; 步驟二:用戶戴上數(shù)據(jù)手套,運(yùn)行計(jì)算機(jī)上的一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法的程序,程序會自動連接數(shù)據(jù)手套和位置跟蹤器,并實(shí)時獲取數(shù)據(jù)手套和位置跟蹤器發(fā)送來的數(shù)據(jù); 步驟三:用戶佩戴數(shù)據(jù)手套做一系列動作,包括:手指彎曲,整個手掌的平移旋轉(zhuǎn)運(yùn)動,數(shù)據(jù)手套和位置跟蹤器會將手指的彎曲和手的位置及姿態(tài)的變化的數(shù)據(jù)發(fā)送給程序,程序通過接收到的數(shù)據(jù)驅(qū)動虛擬手的手指運(yùn)動和手掌的運(yùn)動; 步驟四:用戶通過使用佩戴數(shù)據(jù)手套的手在現(xiàn)實(shí)世界中模擬抓取物體的動作控制計(jì)算機(jī)中的虛擬手去抓取物體,程序會調(diào)用物理引擎中的碰撞檢測算法以及執(zhí)行程序中的抓取條件的判定來判斷虛擬物體是否處于被抓取的狀態(tài);如果虛擬物體沒有滿足被抓取的條件時,程序返回步 驟三,繼續(xù)從步驟三開始執(zhí)行步驟三、四,直到程序退出;如果虛擬物體滿足被抓取條件,執(zhí)行步驟五; 步驟五:通過計(jì)算虛擬手的位置變化和朝向的變化來控制虛擬物體的位置和姿態(tài)的變化,從而控制虛擬物體的移動和旋轉(zhuǎn)。
2.根據(jù)權(quán)利要求1所述的一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法,其特征在于:步驟一中所述的數(shù)據(jù)手套為具有18個傳感器的CyberGlove II虛擬現(xiàn)實(shí)數(shù)據(jù)手套。
3.根據(jù)權(quán)利要求1所述的一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法,其特征在于:步驟一所述的位置跟蹤器為能提供空間中6自由度位置信息的Flock of Birds位置追蹤器。
4.根據(jù)權(quán)利要求1所述的一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法,其特征在于:步驟三中數(shù)據(jù)手套發(fā)送給程序的傳感器數(shù)值和虛擬手模型的手指彎曲的角度之間需要進(jìn)行轉(zhuǎn)換,具體的轉(zhuǎn)換公式為:
angle=M(Scur—Smin) / (Smax—Smin) 其中,angle為某一手指的一個關(guān)節(jié)的當(dāng)前彎曲角度,Scot是數(shù)據(jù)手套的對應(yīng)的這個關(guān)節(jié)的傳感器的當(dāng)前數(shù)值,Smax和Smin是對應(yīng)的那個傳感器發(fā)送的最大值和最小值,M是對應(yīng)的這個關(guān)節(jié)能夠彎曲的最大角度。
5.根據(jù)權(quán)利要求1所述的一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法,其特征在于:步驟四中所述的物理引擎采用的是Bullet開源物理模擬計(jì)算引擎,能夠進(jìn)行碰撞檢測功能的實(shí)現(xiàn)。
6.根據(jù)權(quán)利要求1所述的一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法,其特征在于:計(jì)算機(jī)中的一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法的軟件功能包括加載場景模型,實(shí)時接收數(shù)據(jù)手套和位置跟蹤器發(fā)來的數(shù)據(jù),實(shí)時進(jìn)行虛擬手和虛擬物體的碰撞檢測,實(shí)時進(jìn)行場景的更改和繪制。
7.根據(jù)權(quán)利要求1所述的一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法,其特征在于:步驟四中所 指的調(diào)用物理引擎中的碰撞檢測算法以及執(zhí)行程序中的抓取條件的判定具體過程包括: (1)程序生成虛擬物體和虛擬手的手指以及手掌的包圍盒; (2)判斷各手指以及手掌的包圍盒是否與虛擬物體有重疊,如果有重疊則繼續(xù)執(zhí)行后面的步驟,否則判定虛擬物體沒有處于被抓取的狀態(tài); (3)包圍盒有重疊的部分調(diào)用物理引擎bullet中面片級的碰撞檢測方法生成碰撞物體對; (4)判斷碰撞對中是否包含手掌或者大拇指,如果包含其中之一,則繼續(xù)執(zhí)行后面的步驟,否則判定虛擬物體沒有處于被抓取的狀態(tài); (5)判斷碰撞對中除大拇指外的手指的數(shù)量是否大于1,如果滿足條件,則認(rèn)為虛擬物體處于被抓取的狀態(tài),否則,判定虛擬物體沒有處于被抓取的狀態(tài)。
8.根據(jù)權(quán)利要求7所述的一種基于數(shù)據(jù)手套和物理引擎的虛擬手的實(shí)時抓取方法,其特征在于:包圍盒是指平行于坐標(biāo)軸的能夠?qū)⑻摂M物體以及虛擬手包裹在里面的最小立方體。
【文檔編號】G06F3/0346GK103955295SQ201410154156
【公開日】2014年7月30日 申請日期:2014年4月17日 優(yōu)先權(quán)日:2014年4月17日
【發(fā)明者】邢若瀚, 趙罡, 薛俊杰, 馬國財 申請人:北京航空航天大學(xué)