/// <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.フレーム番号;
                }
            }
        }
Beispiel #2
0
 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 );
 }