青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天行健 君子當自強而不息

網(wǎng)格模型高級技術(shù)(4)

為了使一個.x文件產(chǎn)生動畫,必須至少提供一個動畫集,每個動畫集都應具有一個對某個框架的引用。模板 AnimationSet用來定義動畫集:

Contains one or more Animation objects. Each animation within an animation set has the same time at any given point. Increasing the animation set's time increases the time for all the animations it contains.

template AnimationSet
{
< 3D82AB50-62DA-11cf-AB39-0020AF71E433 >
[ Animation < 3D82AB4F-62DA-11cf-AB39-0020AF71E433 > ]
}

Where:

  • [ Animation < 3D82AB4F-62DA-11cf-AB39-0020AF71E433 > ] - Optional animation template.

模板Animation的定義如下:

Contains one or more Animation objects. Each animation within an animation set has the same time at any given point. Increasing the animation set's time increases the time for all the animations it contains.

template AnimationSet
{
< 3D82AB50-62DA-11cf-AB39-0020AF71E433 >
[ Animation < 3D82AB4F-62DA-11cf-AB39-0020AF71E433 > ]
}

Where:

  • [ Animation < 3D82AB4F-62DA-11cf-AB39-0020AF71E433 > ] - Optional animation template.

很顯然,Animation是一個完全開放的模板,一般情況下,用模板AnimationKey來填充它,模板AnimationKey的定義如下:

Defines a set of animation keys. A matrix key is useful for sets of animation data that need to be represented as transformation matrices.

template AnimationKey
{
< 10DD46A8-775B-11CF-8F52-0040333594A3 >
DWORD keyType;
DWORD nKeys;
array TimedFloatKeys keys[nKeys];
}

Where:

  • keyType - Specifies whether the keys are rotation, scale, position, or matrix keys (using the integers 0, 1, 2, or 4, respectively).
  • nKeys - Number of keys.
  • keys - An array of keys.

在模板AnimationKey中,keyType可取的值是0、1、2、4。

0表示旋轉(zhuǎn)鍵,在.x文件中,用一個四元數(shù)來實現(xiàn)模型的旋轉(zhuǎn),旋轉(zhuǎn)值使用4個分量w、x、y、z來存儲,也就是說,此時變換數(shù)組的大小是4,它依次存儲四元數(shù)的4個分量。

1表示縮放鍵,可以使用這種類型的關鍵幀實現(xiàn)模型的縮放,此時變換數(shù)組的大小是3,它們分別對應x、y、z軸的縮放值。

2表示平移鍵,使用3個分量實現(xiàn)模型的平移,此時變換數(shù)組的大小是3,它們分別對應沿x、y、z軸的平移值。

4表示變換矩陣鍵,此時關鍵幀的變換數(shù)組使用16個浮點數(shù)來實現(xiàn)該模型的各種變換。因為矩陣可以實現(xiàn)模型的平移、旋轉(zhuǎn)、縮放以及它們的組合變換。

模板AnimationKey用來定義一組動畫關鍵幀,而模板TimeFloatKeys用來定義每個動畫關鍵幀:

Defines a set of floats and a positive time used in animations.

template TimedFloatKeys 
{
< F406B180-7B3B-11cf-8F52-0040333594A3 >
DWORD time;
FloatKeys tfkeys;
}

Where:

  • tfkeys - See FloatKeys.

Defines an array of floating-point numbers (floats) and the number of floats in that array. This is used for defining sets of animation keys.

template FloatKeys
{
< 10DD46A9-775B-11cf-8F52-0040333594A3 >
DWORD nValues;
array float values[nValues];
}
  • nValues - Number of floats.
  • values[nValues] - Array of float values.

我們在cube_3.x的基礎上添加動畫部分形成cube_4.x,該動畫集定義了立方體繞y軸旋轉(zhuǎn),增加部分如下:

AnimationSet AnimationSet0 {  //動畫集
Animation Animation0 { //動畫
{CubeFrame} //引用上面的立方體框架,表示下面的動畫是針對立方體框架的
		AnimationKey {                //動畫鍵   沿Y軸旋轉(zhuǎn)網(wǎng)格
0; // Rotation keys
10; // 9 keys
			1000; 4; 0.000000, 0.15643448, 0.000000, 0.98768836;;,
2000; 4; 0.000000, 0.30901700, 0.000000, 0.95105654;;,
3000; 4; 0.000000, 0.45399046, 0.000000, 0.89100653;;,
4000; 4; 0.000000, 0.58778530, 0.000000, 0.80901694;;,
5000; 4; 0.000000, 0.70710671, 0.000000, 0.70710683;;,
6000; 4; 0.000000, 0.80901694, 0.000000, 0.58778530;;,
7000; 4; 0.000000, 0.89100653, 0.000000, 0.45399052;;,
8000; 4; 0.000000, 0.95105654, 0.000000, 0.30901697;;,
9000; 4; 0.000000, 0.98768836, 0.000000, 0.15643449;;,
10000; 4; 0.000000, 1.0000000, 0.000000, 0.00000000;;;
}
}
}

這里一共定義了10個關鍵幀,在第10個關鍵幀時回到初始位置開始新一輪的動畫。{CubeFrame}表示該動畫集是對框架CubeFrame進行的操作。

我們在cube_3.x的基礎上添加縮放動畫形成cube_5.x:

AnimationSet AnimationSet0 {   //動畫集
Animation Animation0 { //動畫
{CubeFrame} // Use the frame containing the cube.
		AnimationKey {                 //動畫鍵, 放大和縮小網(wǎng)格
1; // Scaling keys
9; // 9 keys
			1000; 3; 1.000000, 1.000000, 1.000000;;,
2000; 3; 0.800000, 0.800000, 0.800000;;,
3000; 3; 0.600000, 0.600000, 0.600000;;,
4000; 3; 0.400000, 0.400000, 0.400000;;,
5000; 3; 0.200000, 0.200000, 0.200000;;,
6000; 3; 0.400000, 0.400000, 0.400000;;,
7000; 3; 0.600000, 0.600000, 0.600000;;,
8000; 3; 0.800000, 0.800000, 0.800000;;,
9000; 3; 1.000000, 1.000000, 1.000000;;;
}
}
}

效果圖:

 

我們也可以在cube_3.x的基礎上添加一個沿y軸移動的動畫形成cube_6.x:

AnimationSet AnimationSet0 {   //動畫集
Animation Animation0 { //動畫
{CubeFrame} // Use the frame containing the cube.
		AnimationKey {                 //動畫鍵   沿Y軸方向移動網(wǎng)格
2; // Position keys
19; // 9 keys
1000; 3; 0.000000, -5.000000, 0.000000;;,
2000; 3; 0.000000, -4.000000, 0.000000;;,
3000; 3; 0.000000, -3.000000, 0.000000;;,
4000; 3; 0.000000, -2.000000, 0.000000;;,
5000; 3; 0.000000, -1.000000, 0.000000;;,
6000; 3; 0.000000, 0.000000, 0.000000;;,
7000; 3; 0.000000, 1.000000, 0.000000;;,
8000; 3; 0.000000, 2.000000, 0.000000;;,
9000; 3; 0.000000, 3.000000, 0.000000;;,
10000; 3; 0.000000, 4.000000, 0.000000;;,
11000; 3; 0.000000, 5.000000, 0.000000;;,
12000; 3; 0.000000, 4.000000, 0.000000;;,
12000; 3; 0.000000, 3.000000, 0.000000;;,
13000; 3; 0.000000, 2.000000, 0.000000;;,
14000; 3; 0.000000, 1.000000, 0.000000;;,
15000; 3; 0.000000, 0.000000, 0.000000;;,
16000; 3; 0.000000, -1.000000, 0.000000;;,
17000; 3; 0.000000, -2.000000, 0.000000;;,
18000; 3; 0.000000, -3.000000, 0.000000;;,
19000; 3; 0.000000, -4.000000, 0.000000;;,
}
}
}

效果圖:

 

包含在.x文件中的動畫通常用來實現(xiàn)模型不同部分之間的相對運動,對于一個模型整體上的運動,應該是在程序中通過其世界變換矩陣來實現(xiàn)。

 

蒙皮信息

一個動畫網(wǎng)格模型很多情況下可能涉及到蒙皮信息,模板XSkinMeshHeader僅對于具有蒙皮信息的網(wǎng)格模型有效,它用來記錄網(wǎng)格模型的蒙皮信息,該模板的定義如下:

This template is instantiated on a per-mesh basis only in meshes that contain exported skinning information. The purpose of this template is to provide information about the nature of the skinning information that was exported.

template XSkinMeshHeader 
{
< 3CF169CE-FF7C-44ab-93C0-F78F62D172E2 >
WORD nMaxSkinWeightsPerVertex;
WORD nMaxSkinWeightsPerFace;
WORD nBones;
}

Where:

  • nMaxSkinWeightsPerVertex - Maximum number of transforms that affect a vertex in the mesh.
  • nMaxSkinWeightsPerFace - Maximum number of unique transforms that affect the three vertices of any face.
  • nBones - Number of bones that affect vertices in this mesh.

在一個具有蒙皮信息的網(wǎng)格模型中,可能出現(xiàn)模板SkinWeights的n個實例,n等于該網(wǎng)格模型中骨骼的數(shù)量。該模板的每個實例都定義了一個具體的骨骼對于相應頂點的影響權(quán)重,該模板的具體定義如下:

This template is instantiated on a per-mesh basis. Within a mesh, a sequence of n instances of this template will appear, where n is the number of bones (X file frames) that influence the vertices in the mesh. Each instance of the template basically defines the influence of a particular bone on the mesh. There is a list of vertex indices, and a corresponding list of weights.

template SkinWeights 
{
< 6F0D123B-BAD2-4167-A0D0-80224F25FABB >
STRING transformNodeName;
DWORD nWeights;
array DWORD vertexIndices[nWeights];
array float weights[nWeights];
Matrix4x4 matrixOffset;
}

Where:

  • The name of the bone whose influence is being defined is transformNodeName, and nWeights is the number of vertices affected by this bone.
  • The vertices influenced by this bone are contained in vertexIndices, and the weights for each of the vertices influenced by this bone are contained in weights.
  • The matrix matrixOffset transforms the mesh vertices to the space of the bone. When concatenated to the bone's transform, this provides the world space coordinates of the mesh as affected by the bone.

 

下載cube_1.x ~ cube6.x


posted on 2008-05-27 15:44 lovedday 閱讀(2028) 評論(1)  編輯 收藏 引用

評論

# re: 網(wǎng)格模型高級技術(shù)(4) 2013-09-06 17:29 abc

講的太好了  回復  更多評論   


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


公告

導航

統(tǒng)計

常用鏈接

隨筆分類(178)

3D游戲編程相關鏈接

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美三级精品| 亚洲一区二区三区午夜| 91久久精品国产91久久性色tv| 亚洲理伦在线| 欧美性色aⅴ视频一区日韩精品| 亚洲精品久久久久久久久久久久久 | 中文在线资源观看视频网站免费不卡| 亚洲综合色婷婷| 国语精品中文字幕| 亚洲国产精品日韩| 国产欧美日韩一区二区三区在线| 久久精品国产亚洲一区二区| 久热爱精品视频线路一| 亚洲作爱视频| 欧美不卡一卡二卡免费版| 99视频超级精品| 久久精品在线视频| 国产精品jizz在线观看美国| 午夜一区在线| 欧美日韩国产三区| 欧美人妖在线观看| 欧美国产一区二区在线观看| 日韩特黄影片| 免费看亚洲片| 欧美国产日韩视频| 午夜激情综合网| 日韩视频精品在线| 国产亚洲一区在线播放| 亚洲国产欧美国产综合一区| 最新国产拍偷乱拍精品 | 欧美日韩午夜| 亚洲欧美久久久| 亚洲在线视频观看| 亚洲欧美视频在线观看| 亚洲自拍偷拍视频| 久久精品av麻豆的观看方式| 精品不卡一区| 免费在线观看成人av| 六月婷婷久久| 亚洲品质自拍| 欧美日韩国产a| 亚洲国产精品一区二区www| 亚洲国产精品一区二区第一页| 午夜精品剧场| 久久激情五月婷婷| 欧美在线视频全部完| 亚洲欧美日韩成人| aⅴ色国产欧美| 好吊妞这里只有精品| 欧美日韩综合视频| 欧美激情麻豆| 欧美高清视频免费观看| 日韩视频永久免费观看| 国产乱码精品一区二区三区av| 久久久久久伊人| 亚洲午夜激情免费视频| 欧美顶级少妇做爰| 欧美一级二级三级蜜桃| 日韩视频不卡| 亚洲国产高清aⅴ视频| 久久av在线| 日韩视频永久免费观看| 国产一区二区三区高清播放| 欧美成人免费va影院高清| 销魂美女一区二区三区视频在线| 国产日产亚洲精品| 久久久精品一区二区三区| 欧美经典一区二区| 国产欧美日韩在线视频| 国产一区在线视频| 欧美一区二区在线免费观看| 亚洲男人av电影| 久久精品99国产精品日本| 亚洲国产欧美日韩精品| 国产精品亚洲欧美| 久热精品视频在线观看一区| 欧美视频一区二区三区…| 亚洲人成毛片在线播放| 一本色道88久久加勒比精品| 亚洲女优在线| 午夜在线观看欧美| 中日韩视频在线观看| 久久久久久久久久看片| 亚洲精品护士| 国产一区二区三区四区三区四| 久久久久国产精品一区二区| 国产在线成人| 国产精品视频自拍| 国产精品欧美久久久久无广告| 亚洲男同1069视频| 亚洲人成网站在线播| a91a精品视频在线观看| 午夜精品久久久久久久久久久久| 狠狠色丁香婷婷综合| 久久精品一区二区三区不卡牛牛 | 亚洲精选在线观看| 欧美一区二区三区电影在线观看| 一区二区三区欧美| 久久久福利视频| 国产欧美日韩| 久久久久高清| 亚洲国产成人91精品| 欧美激情中文不卡| 亚洲免费av片| 久久国产天堂福利天堂| 国产精品久久久久久五月尺| 欧美日精品一区视频| 国产精品一区二区三区观看| 久久久国产成人精品| 国产日韩欧美在线播放| 欧美色视频一区| 欧美日韩精品欧美日韩精品一| 欧美成人视屏| 在线视频免费在线观看一区二区| 久久在线免费观看| 女主播福利一区| 最新国产乱人伦偷精品免费网站| 久久久国产精品亚洲一区| 欧美亚洲三区| 久久精品理论片| 亚洲六月丁香色婷婷综合久久| 久久av一区二区三区| 久久婷婷人人澡人人喊人人爽| 一区二区三区欧美激情| 久久久国产成人精品| 久久久久久久久久久久久女国产乱| 久久综合九色九九| 99在线精品视频在线观看| 久久高清国产| 午夜精品国产| 欧美三级中文字幕在线观看| 六月丁香综合| 亚洲人被黑人高潮完整版| 久久亚洲精品中文字幕冲田杏梨| 狠狠色噜噜狠狠狠狠色吗综合| 亚洲免费不卡| 精品成人久久| 欧美承认网站| 亚洲三级国产| 久久美女性网| 毛片基地黄久久久久久天堂| 亚洲国产日韩欧美在线图片| 欧美多人爱爱视频网站| 国产精品区一区二区三| 国产精品一页| 伊人成综合网伊人222| 一区二区三区高清不卡| 一卡二卡3卡四卡高清精品视频| 一本色道久久99精品综合| 欧美激情一区二区三区在线| 欧美日韩在线视频一区| 亚洲狼人精品一区二区三区| 亚洲第一黄色网| 久久性天堂网| 欧美在线|欧美| 狠狠综合久久| 亚洲精品一区久久久久久| 国产精品日韩欧美| 亚洲国产高清在线| 国语精品中文字幕| 在线观看日韩专区| 亚洲综合二区| 国产精品久久网站| 一本色道久久| 午夜精品成人在线| 国产区精品在线观看| 一区二区日韩免费看| 香蕉尹人综合在线观看| 国产女主播视频一区二区| 亚洲一区二区三区四区在线观看 | 亚洲欧洲久久| 亚洲第一黄色网| 亚洲激情婷婷| 欧美午夜不卡视频| 亚洲欧美在线免费观看| 老司机成人在线视频| 亚洲欧美国产另类| 欧美在线电影| 国语自产精品视频在线看| 亚洲一区二区三区免费在线观看| 夜夜嗨av色一区二区不卡| 国产亚洲日本欧美韩国| 亚洲成色精品| 国产精品久久久久久久7电影| 午夜精品在线看| 久久综合久久综合这里只有精品| 激情欧美一区二区三区在线观看| 亚洲日本免费电影| 国色天香一区二区| 亚洲天堂成人| 国产麻豆一精品一av一免费| 亚洲高清免费| 国产自产女人91一区在线观看| 亚洲欧美日韩国产精品| 亚洲狼人综合| 在线成人亚洲| 国产精品素人视频| 国产精品久久久对白| 亚洲制服av| 亚洲国产精品久久久久|