3Dモデル
-キーフレームアニメーション-

■キーフレーム

3Dモデルのアニメーションはキーフレームによって行われています。
キーフレームとは特定のデータが設定されているフレームのことです。
3Dモデルのキーフレームに使用されているデータは行列や拡縮率などです。
MPEGのキーフレームには画像データが設定されており、
データ毎に設定されているデータは異なります。

●補間
	キーフレームアニメーションでは2つのキーフレームのデータを
	補間することでデータの遷移を滑らかに見せています。

	補間:
		データとデータの間をデータを算出して補うこと

	例:
		フレームA(キーフレーム):
			フレームの値 => 0
			行列
				0.5, 0, 0, 0,
				0, 0.5, 0, 0,
				0, 0, 0.5, 0,
				0, 0, 0, 1,
	
			gmpg_0138

		フレームB(キーフレーム):
			フレームの値 => 600
			行列
				1.5, 0, 0, 0,
				0, 1.5, 0, 0,
				0, 0, 1.5, 0,
				0, 0, 0, 1,

			gmpg_0140
		
		フレームC(フレームAからBへ遷移中のフレーム):
			フレーム値 => 300

			gmpg_0139


	上記の例はフレームAからフレームBの遷移とその結果のSSとなります。
	フレームCのSSでモデルがAの拡縮率とBの拡縮率の中間辺りの
	サイズになっているのが分かると思います。

■キーフレームアニメーション(XFile)

●事前準備
	以下のリンクからXファイルのダウンロードをお願いします。

	階層モデル(Xファイル)

●アニメーション速度の設定
	まずは設定するアニメーションが1秒間で何フレーム進むのかを設定します。
	設定は「AnimTicksPerSecond」で行い、Frameの{}の外に設定します。
		
	・書式
		書式例:
			AnimTicksPerSecond {
				1秒間に進むフレーム数;
			}

		具体例:
			Frame フレーム名 {
			}

			AnimTicksPerSecond {
				// 1秒間で60フレーム進む
				60;
			}

●アニメーションの設定
	アニメーションの設定は「AnimationSet」で行います。
	この設定もFrameの{}の外で行います。

	・書式
		書式例:
			AnimationSet アニメーション名(全体) {
				Animation アニメーション名(単体) {
			  		{
						①.フレーム名
					}
					AnimationKey {
						②.キーフレーム情報の種類;
						③.キーフレームの数;
						④.キーフレーム情報
					}
				}
			}

		具体例:
			AnimationSet AnimationTest {
				Animation Translate {
			  		{
						FrameRing // ①.フレーム名
					}
					AnimationKey {
						2; // ②.キーフレーム情報の種類
						2; // ③.キーフレームの数
						// ④.キーフレーム情報
						0;3;0.00, 0.00, 0.00;;,
						600;3;500, 0.00, 0.00;;,
					}
				}
			}

		①.フレーム名
			アニメーションを適応するフレームの名前を指定します。

		②.キーフレーム情報の種類
			キーフレーム情報の種類を設定します。
				0 => 回転
				1 => 拡縮
				2 => 移動
				4 => 行列

		③.キーフレームの数
			アニメーションで使用するキーフレームの数を指定します。

		④.キーフレーム情報
			キーフレームの情報は最初の数値のみ共通ですが、
			その後の情報は②の内容によって記述が異なります。
			
			0 => 回転
				フレーム値;4;Z, Y, X, W;

			1 => 拡縮
				フレーム値;3;X, Y, Z;

			2 => 移動
				フレーム値;3;X, Y, Z;

			4 => 行列
				フレーム値;16;4*4の行列;

			※1.MSDNでは3が行列となっていますが、単位行列を設定しても
			   Viewerで表示することができなくなっているので、
			   仕様が変更されているのかもしれません。
			   情報があれば追記します。

		完成品:
			アニメーション付きXfile

●注意点
	子フレームに対してアニメーションの設定を行った場合、
	親の相対姿勢行列が無視されて動作するので注意して下さい。
	ただ、基本グラフィックツールを使用してアニメーションの設定を行うので
	気にしなくても問題ないと思います。