999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

面向自定義格式的動畫角色數據轉換工具

2014-07-09 01:16:50聶文超劉曉平
圖學學報 2014年3期
關鍵詞:動畫模型

聶文超, 李 琳,劉曉平

(合肥工業大學計算機與信息學院,安徽 合肥 230009)

隨著信息技術的飛速發展三維動畫正在逐 漸成為繼聲音、圖像、視頻和三維模型之后的第5種多媒體類型[1]。作為三維動畫的核心組成部分,動畫角色在影視制作、網絡游戲等應用領域占據越來越重要的地位。無論是擁有國內500萬玩家的網絡游戲《魔獸世界》中形形色色的怪物角色,還是創造了5億國內票房的3D電影《阿凡達》中創意無限的外星生物,動畫角色的外形設計和動作設計無一不是人們趨之若鶩的理由和效益神話的根本[2]。

動畫角色的制作軟件也非常之多,作為目前流行的三維建模、動畫和渲染軟件,3ds max成為首選工具[3]。然而其自身的.max文件格式難以被全部解析,因而難以通過解析文件的方式充分利用3ds max中強大的功能,而且隨著系統的更新,依靠解析文件獲取模型信息的方法始終無法獲取最新最完整的模型信息[4]。3ds文件格式以密文存儲,雖然能夠部分解析,但是只包含 3D模型數據,無法實現對動畫角色進行研究的要求。在虛擬現實系統里面進行動畫角色算法研究,即需要有動畫角色的運動數據又需要有動畫角色模型數據。

動畫角色主要包含兩方面信息,動畫角色的模型信息與動畫角色的骨骼運動信息。模型文件格式有很多,這些格式的文件都是針對特定的情況而設計的,有些注重工業標準,有些注重通訊的簡易性,還有些注重適宜性和可移植性[5]。為了方便研究人員進行動畫角色相關算法的研究,本文提出了一種用于存儲動畫角色信息的文件格式,該格式包含了動畫角色的模型信息和運動信息,以明文方式存儲,使研究人員可以對動畫角色算法進行全面的研究。同時,不同于OGRE與Unity3D所支持的三維模型格式包含全面的三維模型信息,此格式針對動畫角色的特點,摒棄了常見三維模型軟件的冗余信息,提高了算法的執行效率和穩定性。

為了增加該文件格式的通用性,還開發了此文件格式的動畫角色數據轉換工具,可用于與3ds max里的動畫角色相互轉換,減小了使用者對自定義文件格式的依賴性。該轉換工具是通過對3ds max動畫角色模型組織結構進行分析,基于max SDK,將max中的動畫角色與自定義格式進行相互轉換,從而可以充分利用3ds max中豐富的動畫角色信息,進行動畫角色算法的研究。

下面分別從動畫角色數據結構分析,系統整體介紹、結果驗證3個方面展開論述。

1 動畫角色數據結構分析

1.1 已有動畫文件格式分析

常用的模型文件格式有OBJ格式,目前幾乎所有知名的3D軟件都可以通過插件支持OBJ文件的讀寫,很適合用于3D軟件模型之間的互導;Stanford大學開發的ply格式,是一種結構簡單但是能滿足大多數圖形學應用需要的模型格式,在圖形學的研究領域中,ply是種常用且重要的文件格式;還有OGRE引擎所支持的mesh格式,主要用在商業領域中。骨骼動畫是隨時間變化的,常用的運動格式有通用的人體特征動畫文件格式bvh與3ds max cs特有格式bip。這些文件格式都只包含動畫角色某一部分的數據,目前尚無標準的以明文格式存儲的動畫角色文件格式出臺,既包含動畫角色模型數據又包含骨骼運動數據的文件格式都是一些商業軟件所用的,無法在其上進行動畫角色相關算法的研究。

1.2 3ds max動畫角色模型數據結構分析

作為目前流行的三維動畫渲染和制作軟件,3ds max擁有強大的功能。雖然其自身的.max文件格式難以被解析,無法提供動畫角色數據,但max SDK提供了豐富的接口使我們可以有選擇性地導出與導入自己需要的數據。

節點INode作為max SDK里最基本的數據結構,承載著其里面掛載數據的功能,節點有骨骼、網格等多種類型,不同類型的節點掛載著不同的數據。節點在場景中是以父子層次關系組織的。每個節點都會以子節點的身份關聯到另一個節點上,一個節點可以有多個孩子節點,只能有一個父節點。節點INode與max場景中的對象存在著一一對應的關系,每一個出現在視口中的對象,包括骨骼、網格等,都關聯一個節點。如圖1所示。3ds max中的對象掛載在節點上,通過對節點的遍歷判斷節點掛載對象的類型,可以獲取到場景中動畫角色的骨骼數據與網格數據。

圖1 max SDK動畫角色數據結構

1.3 自定義文件格式介紹

為了使研究人員對動畫角色進行算法研究,本文提出一種以明文存儲的、用來存儲動畫角色信息的文件格式。動畫角色是網格數據、運動數據和蒙皮約束數據的結合,該自定義動畫角色文件格式包括5個部分:文件頭、運動數據、蒙皮數據、網格數據以及紋理數據,如圖2所示,其中文件頭是對后四者的描述,介紹文件中包含哪幾個數據模塊,用于文件讀取的預處理。

圖2 自定義動畫角色文件示例圖

運動數據是動畫角色骨架的數據表現形式,是動畫角色隨著時間變化姿態信息的存儲形式。常用的運動數據表示方法有旋轉矩陣、歐拉角和四元數3種,這3種運動數據的存儲各有利弊,表1給出了對比結果。用戶可根據需求選擇對應的運動數據存儲在自定義文件格式中。

表1 旋轉矩陣、歐拉角和四元數的比較

蒙皮數據是聯系骨架的動態信息與靜態網格之間的橋梁,隨著時間軸的前進,骨架的運動通過蒙皮使得每個網格頂點產生對應的位置變化,進而發生網格變形,即為動畫。權重表是蒙皮數據的核心,它存儲著每根骨骼對網格各頂點的約束權重,如表2所示。權重表由權重項組成,權重表的每一行代表了一個權重項,權重項包含了影響當前網格頂點的各骨骼信息以及對應的約束權重。

表2 權重表

網格給模型以最直觀的顯示,通過對網格表面頂點集合的繪制以及面片貼圖的渲染,得到逼近真實的效果。網格主要包含以下信息:①頂點信息:網格的頂點三維坐標數組,用于標記頂點的空間位置;②法線信息:用于控制場景中光線的傳播特性;③頂點顏色:頂點的渲染顏色;④紋理頂點信息:記錄了網格頂點的紋理坐標信息,用于紋理映射;⑤面片信息:存儲了網格的面片屬性,主要存儲每個面片的各頂點對應的頂點索引、法線索引以及紋理頂點索引等信息。

1.4 動畫角色轉換工具的優勢

目前還沒有找到即包含動畫角色的運動數據又包含模型數據且以明文方式存儲的文件格式,動畫轉換工具導出的自定義格式的文件包含有這兩項數據,很大程度上方便了研究人員進行動畫角色方面的算法研究。動畫角色數據轉換工具將動畫角色從常用建模軟件3ds max中導出為自定義格式的文件,經過動畫角色算法操作后,產生新的文件,再通過動畫角色數據轉換工具導入回3ds max中。轉換工具的這一功能使產生的新模型可以跟外界常用的模型文件格式進行相互轉換,如圖3所示。例如可以將產生的新模型通過3ds max為媒介轉換為OGRE引擎所支持的mesh格式,從而將模型用于游戲制作中。

動畫角色常用的運動數據表示方法有旋轉矩陣、歐拉角和四元數3種,max SDK提供的標準的運動數據接口是以矩陣形式表示的,并且提供了矩陣與歐拉角、四元數相互轉換的方法。動畫角色數據轉換工具支持這3種表示方法的導出與導入,這3種運動數據表示方法各有利弊,增加動畫角色轉換工具的通用性。

2 系統整體介紹

3ds max作為目前流行的三維動畫渲染和制作軟件,其SDK[6]提供了豐富的接口進行動畫角色數據的導出與導入。動畫角色的數據包括以下3個部分:骨骼運動數據,網格紋理數據,蒙皮數據。本文所提出的動畫角色轉換工具包括對這3個部分的導出與導入,整體結構如圖3所示。

圖3 動畫角色數據轉換工具

2.1 運動數據的導出與導入

Interface類是max SDK提供的獲取3ds max中數據信息的一個接口,通過此接口可以導出與導入大部分動畫角色數據。圖4為與動畫角色運動數據相關的一些主要方法。

圖4 Interface類運動數據相關的一些方法

運動數據是動畫角色骨架的數據表現形式,骨骼節點是運動數據的載體。通過max SDK的節點類提供的類層次關系的方法,對場景中的節點進行遍歷,判斷節點類型,獲取到所有骨骼節點,進而獲取到動畫角色所有骨骼節點數據;也可以創建骨骼節點構建出這種父子層次關系結構,從而進行運動數據的導入。如圖5為節點類層次關系的一些主要方法。

圖5 INode類層次關系的一些主要方法

通過獲取到的場景根節點 RootNode,根據節點的父子層次關系進行遍歷,得到場景中所有的節點。3ds max里的對象存在對象標識符Class_ID,對象標識符用來標志節點屬于哪種類型,例如三角網格節點用TRIOBJ_CLASS_ID標志,Bone骨骼節點用BONE_OBJ_CLASSID標志,bip骨骼節點用 BIPSLAVE_CONTROL_CLASS_ID或者BIPBODY_CONTROL_CLASS_ID標志。在3ds max中存在兩種骨骼,Bone骨骼與bip骨骼,對遍歷得到節點的對象標識符類型判斷,可以獲取到場景中所有的骨骼節點。從而得到場景中所有骨骼每一幀的運動數據。骨骼運動數據有3種表現形式,矩陣,四元數,歐拉角,這3種運動數據的存儲都存在一定的利弊,用戶可以根據自己的研究需要選擇 1種進行導出。偽代碼描述如下:

//獲取骨骼節點

//獲取3種類型運動數據

for (int time = 0;time <= numFrame;time++)

骨骼運動數據的導入主要是骨骼節點父子層次結構的創建與運動數據的錄制。具體可以分為以下4個部分進行:

(1)調用CreateInstance()創建骨骼對象pBone,并通過CreateObjectNode(pBone)關聯到節點;

(2)通過INode的方法構建出骨骼節點父子層次關系;

(3)調用AnimateOn()函數開啟動畫運動數據的錄制;

(4)讀取運動數據構建數據結構進行運動數據錄制;

(5)錄制完后調用函數ResumeAnimate()重新開啟動畫完成運動數據的錄制。

2.2 網格紋理數據的導出與導入

網格在 max SDK中的代表的類為 Mesh,Mesh類有專門的Face類描述,Face類記錄了1個面片的3個頂點在網格頂點數組、材質頂點、法線中的索引。而在 Mesh類中,面片數組為faces,它是一個 Face類型的數組。另外網格還有材質、法線等信息。紋理數據定義材質如何在網格上顯示,使模型更加漂亮有真實感,文獻[7]中很詳細地介紹了網格模型的導出過程。圖6給出了用來導出導入Mesh的主要方法。

圖6 Mesh相關方法

網格對象Mesh通過Interface從場景中獲得,通過Mesh的相關方法能夠獲取到網格對象的網格頂點、法線、材質、面片等信息,完成數據的導出。Mesh網格中的面片均為三角形,通過TriObject可以創建出網格對象,并調用網格類的setNumFace等方法完成網格數據的導入。

2.3 蒙皮數據的導出與導入

蒙皮是骨骼與網格模型之間的一座橋梁,使骨骼的運動能夠驅動網格模型產生相應的變化。蒙皮在max SDK中以蒙皮類ISkin表示,蒙皮類中存在ISkinContextData與ISkinImportData兩個對象。ISkinContextData對象提供了一個接口以獲取蒙皮數據,這些數據以頂點蒙皮權重表的形式存儲。每一個頂點都包含了影響這個頂點的骨骼索引及其對應的影響權重值。ISkinImportData接口用于向蒙皮修改器中導入蒙皮數據,包括添加蒙皮的骨骼節點、設置頂點的蒙皮權重等。通過蒙皮類的這兩個對象即可完成蒙皮數據的導出與導入。

3 結果驗證

本文設計動畫角色數據轉換工具的目的是方便研究人員進行對動畫角色算法進行全面的研究。因此需要驗證沒有經過外部算法對數據文件影響的情況下,經過該工具轉換的動畫角色不會發生動作與網格模型的變化。圖 7(a)為動畫角色導出前的原始效果,圖 7(b)為通過動畫角色數據轉換工具轉換后的效果,其中數字代表當前幀號。

通過實驗結果的前后對比可以看出動畫角色經過轉換后,動作數據與網格模型沒有發生改變,因此該工具是正確有效的。

4 結 束 語

本文從方便三維動畫角色算法研究的角度出發,定義了一種動畫角色文件格式,開發了此文件格式動畫角色數據轉換工具,并對這一過程進行了詳細的描述。此工具是針對做動畫角色算法研究人員所開發的,使用該工具可以幫助研究人員很方便的從常用建模軟件導出動畫角色的骨骼運動數據與模型數據,使研究人員可以集中時間在算法的研究上,大大減輕了研究人員的負擔。

圖7 經過數據轉換工具轉換的動畫角色前后對比圖

[1] 王 鑫,孫守遷,柴春雷. 3維人體運動編輯與合成技術綜述[J]. 中國圖象圖形學報,2009,14(2):233-242.

[2] 吳 正. 基于樣例的動畫角色多樣化研究[D]. 合肥:合肥工業大學,2011.

[3] 翟旭峰,朱杰杰,潘志庚. 3ds MAX建模及其在虛擬現實中的應用[J]. 計算機仿真,2004,21(4): 94-97.

[4] Lloyd L,Skiena S. Parsing without a grammar:making sense of unknown file formats[C]//Pata mining,2003. ICDM2003. Third IEEE International Conference on,2003: 195-202.

[5] Zhang Congzhe,Zhou Mengchu,Gao Jianlin.Conversion between discrete images and organized 3D file formats [C]//2001. Systems,Man,and Cybernetics,IEEE International Conference on,2001: 2835-2839.

[6] Sdk M幫助文檔[EB/OL] [2014-04-02]. http://sparks.discreet. com/downloads/downloadshome.cfm.2006.11.20.

[7] 余 燁,劉曉平. 面向 VR系統的三維模型轉換工具[J]. 工程圖學學報,2008,29(5): 72-78.

猜你喜歡
動畫模型
一半模型
做個動畫給你看
重要模型『一線三等角』
動畫發展史
重尾非線性自回歸模型自加權M-估計的漸近分布
我的動畫夢
文苑(2019年22期)2019-12-07 05:28:56
動畫批評融入動畫教育的思考
新聞傳播(2018年3期)2018-05-30 07:01:39
3D打印中的模型分割與打包
我是動畫迷
學生天地(2016年9期)2016-05-17 05:45:06
FLUKA幾何模型到CAD幾何模型轉換方法初步研究
主站蜘蛛池模板: 国产成年女人特黄特色毛片免 | 亚洲天堂自拍| 欧美日韩导航| 黄色污网站在线观看| 毛片三级在线观看| 国产成人精品视频一区二区电影 | 97青草最新免费精品视频| 一本大道视频精品人妻 | 99久久99这里只有免费的精品| 久久婷婷色综合老司机| 天堂va亚洲va欧美va国产| 波多野结衣视频一区二区| 国产69精品久久久久孕妇大杂乱| 精品久久久久久久久久久| 亚洲欧美另类色图| 精品人妻AV区| m男亚洲一区中文字幕| 五月婷婷欧美| 91久久大香线蕉| 国产超薄肉色丝袜网站| 欧美午夜视频在线| 欧美乱妇高清无乱码免费| 欧美成a人片在线观看| 欧美第一页在线| 色成人亚洲| 国产欧美日韩视频怡春院| 亚洲天堂久久新| 97成人在线观看| 欧美视频免费一区二区三区| 欧美国产日产一区二区| 国产嫖妓91东北老熟女久久一| 国产视频一区二区在线观看| 91欧洲国产日韩在线人成| 欧美69视频在线| 高清视频一区| 中文字幕日韩视频欧美一区| 亚洲无码精彩视频在线观看 | 精品无码日韩国产不卡av | 欧美在线观看不卡| 日韩欧美国产另类| 国产精品人人做人人爽人人添| 国产精品久久久精品三级| 伊人AV天堂| 在线免费不卡视频| 五月婷婷精品| 伊人久久精品无码麻豆精品| 四虎永久在线精品国产免费| 精品综合久久久久久97超人该| 无码精品国产dvd在线观看9久 | 国禁国产you女视频网站| 狠狠色香婷婷久久亚洲精品| 在线高清亚洲精品二区| 黄色成年视频| 波多野结衣在线se| 免费在线视频a| 婷婷综合色| 欧美视频在线第一页| 粉嫩国产白浆在线观看| 国产女人18毛片水真多1| 91网在线| 欧美视频二区| 丰满人妻中出白浆| 国产精品美乳| 久草性视频| 国产在线观看91精品亚瑟| 亚洲日韩在线满18点击进入| 国产一区二区三区夜色| 久久网欧美| 91在线丝袜| 欧美爱爱网| 中文字幕亚洲电影| 精品亚洲国产成人AV| 欧美爱爱网| 免费观看无遮挡www的小视频| 麻豆国产精品| 日本久久免费| 久久久久国产精品免费免费不卡| 亚洲精品成人片在线观看| 亚洲女同一区二区| 国产99在线| 久久中文无码精品| 久久婷婷国产综合尤物精品|