亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

面部表情捕獲數(shù)據(jù)的轉(zhuǎn)存與發(fā)送方法

文檔序號(hào):9235282閱讀:638來(lái)源:國(guó)知局
面部表情捕獲數(shù)據(jù)的轉(zhuǎn)存與發(fā)送方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及面部表情捕獲數(shù)據(jù)的轉(zhuǎn)存與發(fā)送方法,屬于運(yùn)動(dòng)捕捉技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002]隨著科學(xué)技術(shù)的發(fā)展,運(yùn)動(dòng)捕捉技術(shù)已經(jīng)在動(dòng)畫、電影、運(yùn)動(dòng)教學(xué)等領(lǐng)域得到了廣泛的應(yīng)用。運(yùn)動(dòng)捕捉技術(shù)是一種用于準(zhǔn)確測(cè)量運(yùn)動(dòng)物體在三維空間運(yùn)動(dòng)狀況的技術(shù),它通過(guò)運(yùn)動(dòng)捕捉設(shè)備把運(yùn)動(dòng)物體的運(yùn)動(dòng)狀況以數(shù)字的形式記錄下來(lái),然后使用計(jì)算機(jī)對(duì)運(yùn)動(dòng)數(shù)據(jù)進(jìn)行處理,得到不同時(shí)間計(jì)量單位上物體的空間坐標(biāo)。當(dāng)前的運(yùn)動(dòng)捕捉技術(shù)主要包括以下幾種方式:機(jī)械式運(yùn)動(dòng)捕捉、電磁式運(yùn)動(dòng)捕捉、聲學(xué)式運(yùn)動(dòng)捕捉、光學(xué)式運(yùn)動(dòng)捕捉等。光學(xué)式運(yùn)動(dòng)捕捉具有可表演動(dòng)作幅度大、無(wú)線纜和機(jī)械裝置的束縛,采樣速率高、精度高、系統(tǒng)擴(kuò)充成本低等優(yōu)點(diǎn)。因此,在動(dòng)畫、影視制作過(guò)程中,大多選用光學(xué)式動(dòng)作捕捉系統(tǒng)。動(dòng)作捕捉系統(tǒng)還可以進(jìn)一步分為身體運(yùn)動(dòng)捕捉系統(tǒng)和面部表情捕捉系統(tǒng),如NaturalPoint公司的OptiTrack動(dòng)作捕捉系統(tǒng),其中OptiTrack面部表情系統(tǒng)有7個(gè)運(yùn)動(dòng)捕捉相機(jī),ARENAExpress1n軟件可以實(shí)現(xiàn)真實(shí)角色面部表情的實(shí)時(shí)捕捉和發(fā)送,但面部表情系統(tǒng)與身體運(yùn)動(dòng)捕捉系統(tǒng)無(wú)法同時(shí)進(jìn)行工作,增加了動(dòng)畫、影片的制作難度和周期,為此,本發(fā)明提出了一種面部表情捕獲數(shù)據(jù)的轉(zhuǎn)存與發(fā)送的方法,該方法只需對(duì)ARENA Express1n軟件中pt2格式的文件進(jìn)行一次轉(zhuǎn)存操作,在發(fā)送捕捉數(shù)據(jù)時(shí),不必打開ARENA Express1n軟件對(duì)數(shù)據(jù)進(jìn)行發(fā)送,只需對(duì)xml文件內(nèi)的數(shù)據(jù)進(jìn)行發(fā)送即可。

【發(fā)明內(nèi)容】

[0003]本發(fā)明的目的在于提出了一種將面部表情數(shù)據(jù)轉(zhuǎn)存及發(fā)送的方法,其可以快速地將面部表情數(shù)據(jù)不通過(guò)面部捕捉軟件進(jìn)行發(fā)送,從而使與面部捕捉軟件發(fā)送的數(shù)據(jù)達(dá)到一致性。
[0004]本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:一種將面部表情數(shù)據(jù)轉(zhuǎn)存與發(fā)送的方法,其特征在于:所需的數(shù)據(jù)結(jié)構(gòu):提供一種存儲(chǔ)面部表情數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),PointDada結(jié)構(gòu)體包括X,Y,Z三個(gè)數(shù)據(jù)成員,F(xiàn)aceData結(jié)構(gòu)體中包括一個(gè)PointData類型的pdata數(shù)組、一個(gè)變量Length,pdata數(shù)組中包括27個(gè)元素,F(xiàn)aceData定義一個(gè)指針變量,用fData表示;所需的文件:利用OptiTrack面部表情捕捉系統(tǒng)的7臺(tái)FLEX:V100R2攝像機(jī)和ARENA Express1n軟件,對(duì)某人的面部表情進(jìn)行實(shí)時(shí)捕獲,將捕獲到的數(shù)據(jù)保存在文件face.pt2中;在計(jì)算機(jī)中,使用OptiTrack公司的提供的NatNet SDK開發(fā)包實(shí)現(xiàn)face.pt2文件中的面部表情數(shù)據(jù)的轉(zhuǎn)存及發(fā)送,以下使用的NatNetML命名空間均來(lái)自NatNet SDK開發(fā)包,按以下步驟實(shí)現(xiàn):
步驟1、在計(jì)算機(jī)中,啟動(dòng)ARENA Express1n軟件,打開文件face.pt2,選擇Stream功能,點(diǎn)擊“StartStreamingFrame” 按鈕后,ARENA Express1n 軟件將文件 face.pt2 中的數(shù)據(jù)發(fā)送出去;
步驟2、定義NatNetML命名空間中的NatNetClientML類的一個(gè)對(duì)象,用m_MatNet表示,定義NatNetML命名空間中的MarkerSet類的一個(gè)對(duì)象,用ms表示,定義NatNetML命名空間中的DataDescriptor類的一個(gè)列表對(duì)象,用descs表示;
步驟3、定義NatNetML命名空間中的FrameOfMocapData類的一個(gè)對(duì)象,用m—FrameOfData表示,定義NatNetML命名空間中的FrameOfMocapData類的一個(gè)隊(duì)列對(duì)象,用m—FrameQueue 表不;
步驟4、m—FrameQueue對(duì)象調(diào)用Dequeue函數(shù),并將調(diào)用Dequeue函數(shù)得到的返回值賦給m—FrameOfDatac^如果m—FrameOfData不為空,執(zhí)行步驟5,否則執(zhí)行步驟4 ;
步驟5、m—MatNet調(diào)用GetDataDescript1ns函數(shù),其中descs列表對(duì)象為GetDataDescript1ns函數(shù)的參數(shù),如果調(diào)用GetDataDescript1ns函數(shù)得到的返回值為真,則繼續(xù)執(zhí)行步驟6,否則執(zhí)行步驟5 ;
步驟6、定義NatNetML命名空間中的DataDescriptor類的一個(gè)對(duì)象,用md表示,在descs列表中循環(huán)獲取數(shù)據(jù)賦值給md,將md對(duì)象的類型轉(zhuǎn)換成NatNetML命名空間中的MarkerSet類,并賦值給ms對(duì)象;
步驟7、構(gòu)造一個(gè)向量,用temp—name表示,temp—name (i)表示向量中的第i個(gè)元素,i=l,2,…,27 ;
步驟8、ms對(duì)象中的MarkerNames成員中的第i個(gè)元素賦值給temp—name [i],i=l,2,…,27 ;
步驟9、定義XmlDoucument類的一個(gè)對(duì)象,用xmlDoc表示,定義xmlNode類的一個(gè)對(duì)象,用root表示,定義xmlNode類的一個(gè)對(duì)象,用node表示;
步驟10、建立XML文件,用try表示,xmlDoc對(duì)象調(diào)用Load函數(shù),try.xml文件名為L(zhǎng)oad函數(shù)的參數(shù),xmlDoc對(duì)象調(diào)用CreateElement函數(shù),字符串Root為CreateElement函數(shù)的參數(shù),并將調(diào)用CreateElement函數(shù)得到的返回值賦給root,xmlDoc調(diào)用AppendChild函數(shù),root對(duì)象為AppendChild函數(shù)的參數(shù);
步驟11、定義XmlElement類的一個(gè)對(duì)象,用elem表示,xmlDoc對(duì)象調(diào)用CreateElement函數(shù),字符串face為CreateElement函數(shù)的參數(shù),調(diào)用CreateElement函數(shù)得到的返回值賦給elem,root對(duì)象調(diào)用AppendChild函數(shù),elem為AppendChild函數(shù)的參數(shù);
步驟12、定義NatNetML命名空間中的MarkerSetData類的一個(gè)對(duì)象,用mt表示,m_FrameOfData對(duì)象中的MarkerSets數(shù)組中的第I個(gè)元素賦值給mt對(duì)象;
步驟13、定義XmlDoucument類的一個(gè)對(duì)象,用elem—tmp表示,xmlDoc對(duì)象調(diào)用CreateElement函數(shù),調(diào)用CreateElement函數(shù)得到的返回值賦給elem—tmp ;
步驟14、elem—tmp對(duì)象調(diào)用SetAttribute函數(shù),mt對(duì)象的Makers成員中的第j個(gè)元素中的X成員為SetAttribute函數(shù)的參數(shù),elem—tmp對(duì)象調(diào)用SetAttribute函數(shù),mt對(duì)象的Makers成員中的第j個(gè)元素中的y成員為SetAttribute函數(shù)的參數(shù),elem—tmp對(duì)象調(diào)用SetAttribute函數(shù),mt對(duì)象Makers成員中的第j個(gè)元素中的z成員為SetAttribute函數(shù)的參數(shù),elem對(duì)象調(diào)用AppendChild函數(shù),elem—tmp為AppendChild函數(shù)的參數(shù),j=l,2,…,27。反復(fù)執(zhí)行步驟11至步驟14,直到所有m—FrameOfData對(duì)象中的數(shù)據(jù)讀取完成;步驟15、xmlDox對(duì)象調(diào)用save函數(shù),字符串try.xml為save函數(shù)的參數(shù);
步驟16、定義XmlDoucument類的一個(gè)對(duì)象,用xml—temp表示,定義XMLElement類的3個(gè)對(duì)象,分別用root、face、elem表示,定義一個(gè)變量,用Length表示,定義一個(gè)變量,用num 表不,num=0,定義一個(gè)變量,用 MAKER—SIZEer 表不,MAKER—SIZEer=O ;
步驟17、xml—temp調(diào)用LoadFile函數(shù),字符串try.xml為函數(shù)LoadFile的參數(shù);步驟 18、xml—temp 調(diào)用 FirstChildElement 函數(shù),調(diào)用 FirstChildElement 函數(shù)得到的返回值賦給 proot,proot 調(diào)用 FirstChildElement 函數(shù),調(diào)用 FirstChildElement 函數(shù)得到的返回值賦給 pface,pface 調(diào)用 FirstChildElement 函數(shù),調(diào)用 FirstChildElement函數(shù)得到的返回值賦給pelem,調(diào)用GetframeLength函數(shù),調(diào)用GetframeLength函數(shù)得到的返回值賦給Length,proot為GetframeLength函數(shù)的參數(shù);
步驟19、定義一個(gè)變量,用count表示,count=0?定義一個(gè)變量,用sizemaker表示,Sizemaker=I,定義NatNetServer類的一個(gè)指針變量,用theServer表不;
步驟20、將pelem的X、y、z成員分別賦值給fData的pdata數(shù)組中第sizemaker個(gè)元素的 X、Y、Z 成員,sizemaker=sizemaker+l? pelem 調(diào)用 NextSiblingElement 函數(shù),調(diào)用NextSiblingElement函數(shù)得到的返回值賦給pelem,如果sizemaker等于27,繼續(xù)執(zhí)行步驟21,否則,重復(fù)步驟20 ;
步驟 2l、pface 調(diào)用 NextSiblingElement 函數(shù),調(diào)用 NextSiblingElement 函數(shù)得到的返回值賦值給 pface,pface 調(diào)用 FirstChildElement 函數(shù),調(diào)用 FirstChildElement 函數(shù)得到的返回值賦值給pelem,sizemaker=0,count=count+l,如果count等于Length,則繼續(xù)執(zhí)行步驟22,否則執(zhí)行步驟20 ;
步驟22、定義sFrameOfMocapData類的一個(gè)對(duì)象,用frame表不,調(diào)用ZeroMemory函數(shù),frame 為 ZeroMemory 函數(shù)的第一個(gè)參數(shù),sFrameOfMocapData 的大小為 ZeroMemory 函數(shù)的第二個(gè)參數(shù);
步驟23、將fData+num的pdata數(shù)組中第iMarker個(gè)元素的X成員賦值給frame下MocapData數(shù)組中的Markers 二維數(shù)組中的第iMarker行的第一個(gè)元素,將fData+num指針的pdata數(shù)組中第iMarker個(gè)元素的Y成員賦值給frame下MocapData數(shù)組中的Markers二維數(shù)組中的第iMarker行的第二個(gè)元素,將fData+num指針的pdata數(shù)組中第iMarker個(gè)元素的Z成員賦值給frame下MocapData數(shù)組中的Markers 二維數(shù)
當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1