/// <summary> /// VMDのモーフフレームリストからアニメ変数を構築する。 /// </summary> /// <param name="VMDFモーフフレームリスト">入力となるモーフフレームリスト。</param> /// <param name="PMXモデル">対象となるPMXモデル。</param> public static void モーフを追加する(VMDFormat.モーフフレームリスト VMDFモーフフレームリスト, PMXモデル PMXモデル) { // すべてのモーフについて…… for (int i = 0; i < PMXモデル.モーフリスト.Length; i++) { var pmxMorph = PMXモデル.モーフリスト[i]; // 同じモーフ名のフレームを列挙する。 var morphFrames = VMDFモーフフレームリスト .Where((frame) => (frame.モーフ名 == pmxMorph.PMXFモーフ.モーフ名)) // 同じ名前のフレームを、 .OrderBy((frame) => frame.フレーム番号); // フレーム番号昇順に。 // 列挙されたすべてのフレームについて…… uint 前のフレーム番号 = 0; foreach (var frame in morphFrames) { var 持続時間sec = (frame.フレーム番号 - 前のフレーム番号) / 30.0; // 1frame = 1/30sec pmxMorph.アニメ変数_モーフ.遷移を追加する(new リニア実数アニメ遷移(frame.モーフ値, 持続時間sec)); 前のフレーム番号 = frame.フレーム番号; } } }
private void _読み込む(Stream fs) { this.ヘッダ = new ヘッダ(fs); this.ボーンフレームリスト = new ボーンフレームリスト(fs); this.モーフフレームリスト = new モーフフレームリスト(fs); this.カメラフレームリスト = new カメラフレームリスト(fs); this.照明フレームリスト = new 照明フレームリスト(fs); //this.セルフ影リスト = new セルフ影リスト( fs ); //this.モデル表示_IKリスト = new モデル表示_IKリスト( fs ); }