亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        人體運動捕捉數(shù)據(jù)格式的研究*

        2018-02-12 00:46:13
        關(guān)鍵詞:結(jié)構(gòu)信息

        陳 燕 王 強

        (安徽新華學(xué)院 安徽合肥 230088)

        運動捕捉技術(shù)(motion capture)在計算機動畫、影視、游戲等領(lǐng)域已得到廣泛的應(yīng)用,其實質(zhì)是通過在人體關(guān)鍵部位安裝運動捕捉裝置,實時捕捉真實人體運動狀態(tài),并記錄人體在運動過程中各個關(guān)節(jié)旋轉(zhuǎn)數(shù)據(jù)和約束信息,然后以一定的格式存儲在計算機中[1]。由于捕捉設(shè)備的原理不同,捕捉的數(shù)據(jù)存儲格式也不相同,主要有:ASF&AMC(acclaim skeleton file,acclaim motion capture data ), HTR (hierarchical translation rotation),BVH,C3D等。

        由于捕捉的人體運動數(shù)據(jù)格式較多,造成數(shù)據(jù)段通用性不好,使得人體運動捕捉數(shù)據(jù)的成本還較高。唐琛實現(xiàn)了OGRE描述的運動數(shù)據(jù)文件到BVH定義的動畫文件的格式轉(zhuǎn)換[2]。文章在人體運動捕捉數(shù)據(jù)格式轉(zhuǎn)換方面做了新的探索,設(shè)計實現(xiàn)了一個工具HTA(HTR to acclaim),HTA可以將輸入的HTR文件轉(zhuǎn)換為ASF&AMC文件。

        1 結(jié)構(gòu)體定義

        為實現(xiàn)人體運動捕捉數(shù)據(jù)格式的轉(zhuǎn)換,先定義緩存區(qū)域,以便保存所有輸入輸出的數(shù)據(jù)。本文設(shè)計結(jié)構(gòu)體:htrFormat和acclaimFormat,對應(yīng)HTR數(shù)據(jù)文件和ASF&AMC數(shù)據(jù)文件。

        1.1 結(jié)構(gòu)體htrFormat

        HTR文件是Motion Analysis公司定義的文件格式,被劃分為4個部分:文件頭、骨骼層次的聲明、基礎(chǔ)位置和數(shù)據(jù)流[3]。

        HTR文件的緩存結(jié)構(gòu)體設(shè)計如下:

        struct htrFormat {

        char *fileTyPe; /*文件類型 */

        char *datatype; /*數(shù)據(jù)類型 */

        int fileVersion; /*文件版本*/

        int numSegments; /*骨骼數(shù)*/

        int numFrames; /*總幀數(shù)*/

        int dataFrameRate; /*幀采樣速率 */

        char *eulerRotationOrder; /*旋轉(zhuǎn)順序*/

        char *calibrationUnits; /*平移的數(shù)據(jù)單位*/

        char *rotationUnits; /*旋轉(zhuǎn)的數(shù)據(jù)單位*/

        char *globalAxisofGravity; /*全局垂直方向*/

        char *boneLengthAxis; /*沿骨骼的軸*/

        float scaleFactor; /*縮放因子*/

        struct htrSegmentHierarchy *childParent; /*層次*/

        struct htrBasePosition *basePosition; /*基礎(chǔ)位置*/

        struct htrSegmentData *segmentData; /*骨骼段數(shù)據(jù)*/

        結(jié)構(gòu)體前12個成員變量對應(yīng)HTR文件頭部分,后3個成員變量為結(jié)構(gòu)體類型,負(fù)責(zé)記錄HTR文件中的骨骼層次的聲明、基礎(chǔ)位置和數(shù)據(jù)段信息。

        1.2 結(jié)構(gòu)體acclaimFormat

        ASF&AMC是Acclaim公司定義的數(shù)據(jù)格式,共包含兩個文件: 骨骼文件ASF和運動文件AMC[4]。ASF文件是層次模型文件,主要儲存人體骨架結(jié)構(gòu)數(shù)據(jù),共31個關(guān)節(jié)點,其中根節(jié)點是其他節(jié)點的父節(jié)點。AMC文件用于儲存每一幀的運動數(shù)據(jù)。該運動數(shù)據(jù)按照一定的頻率進(jìn)行采樣得到若干運動幀數(shù)據(jù),每幀數(shù)據(jù)包含若干行,由所有關(guān)節(jié)的運動信息組成,其中根關(guān)節(jié)包括平移和旋轉(zhuǎn)信息,其它關(guān)節(jié)只包括旋轉(zhuǎn)信息,以一種分層的方式來存儲[5]。

        acclaimFormat記錄ASF、AMC文件中的數(shù)據(jù),具體設(shè)計如下:

        struct acclaimFormat {

        char *version; /*文件版本*/

        char *name; /*設(shè)備名稱 */

        float unitsMass; /*質(zhì)量系數(shù)*/

        float unitsLength; /*長度系數(shù)*/

        char unitsAngle[5]; /*角度*/

        char * documentation; /*注釋 */

        char rootOrder; /*根節(jié)點的變換順序*/

        char rootAxis[5]; /*初始旋轉(zhuǎn)順序*/

        double rootPosition[3]; /*初始位置*/

        double rootOrientation[3]; /*初始旋轉(zhuǎn)值*/

        struct acclaimBoneData * boneData; /*骨骼段數(shù)據(jù)*/

        struct acclaimHierarchy *hierarchy; /*層次數(shù)據(jù)*/

        struct acclaimFrameData *frameData; /*幀數(shù)據(jù)*/

        };

        acclaimFormat后3個成員變量為結(jié)構(gòu)體類型,分別記錄骨骼信息、骨骼層次關(guān)系和AMC文件中的數(shù)據(jù)。

        2 HTR文件解析

        結(jié)構(gòu)體定義后,數(shù)據(jù)格式的轉(zhuǎn)換首先要把已有的HTR數(shù)據(jù)文件寫到數(shù)據(jù)緩存中。定義結(jié)構(gòu)體htrFormat的變量htrFile和存放解析的標(biāo)記的指針數(shù)組token。

        具體過程如下:

        (1)打開HTR文件;

        (2)根據(jù)關(guān)鍵字[Header]找到文件頭部分。依次解析文件頭的12部分信息,保存到htrFile的相應(yīng)成員變量中,如FileTyPe的處理如下:

        htrFile->fileType=(char *)malloc((strlen(token[1])+1)*sizeof(char)); /*分配內(nèi)存*/

        strcpy(htrFile->fileType, token[1]); /*保存類型*/

        (3)根據(jù)關(guān)鍵字[SegmentNames&Hierarchy]找到骨骼層次部分。首先根據(jù)骨骼段數(shù)分配所需的內(nèi)存,然后根據(jù)骨骼數(shù)目循環(huán)解析每一骨骼的層次信息并保存到htrFile的成員變量childParent中。childParent也是結(jié)構(gòu)體類型,由child和parent兩個成員變量來表明當(dāng)前骨骼和其父骨骼。

        (4)根據(jù)關(guān)鍵字[BasePosition]找到基礎(chǔ)位置部分。根據(jù)骨骼數(shù)目循環(huán)解析每一骨骼的8種信息并保存到htrFile的成員變量basePosition中。basePosition也是結(jié)構(gòu)體類型,由name、boneLength、位置信息(tx、ty、tz)和旋轉(zhuǎn)信息(rx、ry、rz)。

        (5)最后一部分為數(shù)據(jù)信息。根據(jù)骨骼段名稱依次解析每段骨骼的幀數(shù)據(jù),保存在htrFile的成員變量segmentData中。segmentData也是結(jié)構(gòu)體類型,由segmentName、frame組成,其中frame為結(jié)構(gòu)體類型變量,成員變量為幀號frameNo、平移信息(tx、ty、tz)、旋轉(zhuǎn)信息(rx、ry、rz)和縮放系數(shù)SF。

        3 htrFormat到acclaimFormat

        當(dāng)HTR文件中的數(shù)據(jù)寫入到內(nèi)存后,就可以移入acclaimFormat類型的結(jié)構(gòu)體變量acclaimFile中。過程如下:

        (1)acclaimFormat的成員中是簡單信息的可直接寫入,如:strcpy(acclaimFile->version,“1.10”)。

        (2)根據(jù)htrFile->eulerRotationOrder決定的旋轉(zhuǎn)順序,在平移順序不變的情況下寫入acclaimFile->rootOrder和acclaimFile->rootAxis的值。將HTR文件的父節(jié)點作為根節(jié)點的孩子節(jié)點,所以acclaimFile->rootPosition和acclaimFile-> rootOrientation均為0。

        (3)對于boneData部分,其name、length、axis、dof可根據(jù)htrFile->basePosition的name、bonelength和旋轉(zhuǎn)旋轉(zhuǎn)信息(rx、ry、rz)寫入,direction由globalAxisofGravity決定,dofNumber、limits、bodyMass、cofMass根據(jù)情況直接賦值。

        (4)對于層次部分,ASF是先列出父骨骼,再是所有的子骨骼,與HTR文件差別很大。所以,需要先求出有多少骨骼帶有子骨骼。先處理父節(jié)點為GLOBAL的節(jié)點,添加其所有子節(jié)點,然后再依次處理其他帶子節(jié)點的節(jié)點。

        (5)對于運動數(shù)據(jù)部分,循環(huán)處理每一幀,幀數(shù)為htrFile->numFrames的值。先處理每幀的根節(jié)點,其數(shù)據(jù)信息均為0。再處理其他骨骼數(shù)據(jù)(平移和旋轉(zhuǎn)),如:

        acclaimFile->frameData.motionData.tx = htrFile-> segmentData.frame.tx;

        4 ASF&AMC文件填充

        文件轉(zhuǎn)換的最后一步就是把緩存中的數(shù)據(jù)填充到ASF&AMC文件中。

        (1)根據(jù)ASF文件的結(jié)構(gòu)逐步將acclaimFile中的數(shù)據(jù)寫入其中,如:

        fprintf(asfFileHandle,”:version %s n”, acclaimFile->version);

        fprintf(asfFileHandle,”:root n”);

        fprintf(asfFileHandle,” order %s n”, acclaimFile->rootOrder);

        fprintf(asfFileHandle,”: bonedata n”).

        (2)根據(jù)AMC文件的結(jié)構(gòu)逐步將acclaimFile中的運動數(shù)據(jù)寫入其中。依次處理各幀數(shù)據(jù):先寫入幀號;再寫入根節(jié)點數(shù)據(jù);寫入本幀的骨骼數(shù)據(jù),包括骨骼名稱和根據(jù)自由度寫入的各個具體數(shù)據(jù)。

        5 結(jié)論與展望

        文章設(shè)計的人體運動捕捉數(shù)據(jù)格式工具HTA,能很好將HTR文件轉(zhuǎn)換為ASF&AMC文件。不過轉(zhuǎn)換只涉及到兩種格式,后期還需要對緩存結(jié)構(gòu)進(jìn)行改善,以設(shè)計一種能應(yīng)用在多種人體運動捕捉數(shù)據(jù)格式之間轉(zhuǎn)換的更泛化的緩存結(jié)構(gòu)。

        參考文獻(xiàn):

        [1]孫麗雅.基于運動捕捉數(shù)據(jù)的人體運動分割和標(biāo)注技術(shù)[D].北京:北京交通大學(xué),2015.

        [2]Tan CH,Hou J,Chau LP. Human motion capture data recovery using trajectory-based matrix completion[J]. IET Electronic Letter,2013,49(12): 752.

        [3]王德成,陳燕.基于HTR文件的人體動畫的實現(xiàn)[J]. 西安文理學(xué)院學(xué)報(自然科學(xué)版),2014,17(3):63.

        [4]于曉敏.數(shù)據(jù)驅(qū)動的虛擬人運動分析與合成技術(shù)研究[D].北京:北京交通大學(xué),2017.

        [5]杜戰(zhàn)戰(zhàn). 人體運動捕獲數(shù)據(jù)的分析方法研究[D].南京:南京理工大學(xué),2015.

        猜你喜歡
        結(jié)構(gòu)信息
        《形而上學(xué)》△卷的結(jié)構(gòu)和位置
        論結(jié)構(gòu)
        中華詩詞(2019年7期)2019-11-25 01:43:04
        新型平衡塊結(jié)構(gòu)的應(yīng)用
        模具制造(2019年3期)2019-06-06 02:10:54
        訂閱信息
        中華手工(2017年2期)2017-06-06 23:00:31
        論《日出》的結(jié)構(gòu)
        創(chuàng)新治理結(jié)構(gòu)促進(jìn)中小企業(yè)持續(xù)成長
        展會信息
        中外會展(2014年4期)2014-11-27 07:46:46
        基于BIM的結(jié)構(gòu)出圖
        信息
        健康信息
        祝您健康(1987年3期)1987-12-30 09:52:32
        日韩人妻系列在线观看| 伊香蕉大综综综合久久| a人片在线观看苍苍影院| āV第三区亚洲狠狠婷婷综合久久| 亚洲一区二区三区99区| 久久综合久久综合久久| 亚洲视频在线观看| 一二三四在线视频社区3| 国产在线高清无码不卡| 日韩在线一区二区三区中文字幕| 国产98色在线 | 国产| 大伊香蕉在线精品视频75| 国产欧美日韩专区毛茸茸| 在线观看亚洲视频一区二区| 亚洲中文字幕无码av永久 | 丰满女人又爽又紧又丰满| 美女视频很黄很a免费国产| 成年人视频在线观看麻豆| 国产欧美性成人精品午夜| 1717国产精品久久| 91久国产在线观看| 久久本道久久综合伊人| 久久精品国产免费观看| 亚洲一级黄色毛片| 亚洲精品国产二区在线观看| 无码免费无线观看在线视| 午夜成人理论无码电影在线播放 | 午夜精品久久99蜜桃| 人妻丰满熟妇av无码区| 福利一区二区三区视频午夜观看| 在线精品亚洲一区二区三区| 伊人情人色综合网站| 狠狠色综合网站久久久久久久| 亚洲无线码1区| 日韩精品一二三区乱码| 日韩人妻无码精品久久久不卡| 精品国产免费Av无码久久久| 亚洲国产精品av麻豆一区| 免费欧洲毛片a级视频老妇女| 亚洲国产无线乱码在线观看 | 青青草视频在线观看9|