/// <summary> /// コンストラクタ /// </summary> /// <param name="motionData">モーションデータ</param> /// <param name="options">トラックオプション</param> public MMDMotionTrack(MMDMotion motionData, MMDMotionTrackOptions options) { Options = options; //ボーンの配列抜き出し boneFrames = motionData.BoneFrames; //表情の配列抜き出し faceFrames = motionData.FaceFrames; //モーションのFPS=30 FramePerSecond = DefaultFPS; //差分一覧を作成 subPoses = new Dictionary<string, SQTTransform>(motionData.BoneFrames.Count); //表情一覧を作成 faces = new Dictionary<string, float>(motionData.FaceFrames.Count); //現在の再生位置を設定&最大フレーム数のチェック foreach (var it in motionData.BoneFrames) { bonePos.Add(it.Key, 0); foreach (var it2 in it.Value) { if (it2.FrameNo > m_MaxFrame) m_MaxFrame = it2.FrameNo; } } foreach (var it in motionData.FaceFrames) { facePos.Add(it.Key, 0); foreach (var it2 in it.Value) { if (it2.FrameNo > m_MaxFrame) m_MaxFrame = it2.FrameNo; } } }
/// <summary> /// モーションの追加 /// </summary> /// <param name="motionKey">モーション識別用のモーション名</param> /// <param name="motionData">MikuMikuDance MotionData</param> /// <param name="options">トラックオプション</param> public void AddMotion(string motionKey, MMDMotion motionData, MMDMotionTrackOptions options) { motionTracks.Add(motionKey, new MMDMotionTrack(motionData, options)); }