Example #1
0
 internal AnimationPlayer(MMDBoneManager bones, IMMDFaceManager faces)
 {
     boneManager = bones;
     faceManager = faces;
     BindPoses = new Dictionary<string, SQTTransform>();
     for (int i = 0; i < boneManager.Count; ++i)
     {
         BindPoses.Add(boneManager[i].Name, boneManager[i].BindPose);
     }
     Poses = new Dictionary<string, SQTTransform>(BindPoses.Count);
     Faces = new Dictionary<string, float>(faces.Count);
 }
Example #2
0
        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="modelParts">モデルパーツ</param>
        /// <param name="boneManager">ボーンマネージャ</param>
        /// <param name="faceManager">表情マネージャ</param>
        /// <param name="attachedMotion">付属モーション</param>
        /// <param name="rigids">剛体</param>
        /// <param name="joints">ジョイント</param>
        public MMDXModel(List<IMMDModelPart> modelParts, MMDBoneManager boneManager, IMMDFaceManager faceManager, Dictionary<string, MMDMotion> attachedMotion, MMDRigid[] rigids, MMDJoint[] joints)
            : base(modelParts, boneManager, faceManager, attachedMotion, rigids, joints)
        {
#if XBOX
            //ボーンマネージャ・表情マネージャを変換しておく
            this.boneManager = (MMDXBoxBoneManager)boneManager;
            this.faceManager = (MMDXBoxFaceManager)faceManager;
            //グラフィックデバイスの抜き出し
            if (modelParts.Count > 0)
            {
                GraphicsDevice graphics = ((MMDModelPart)modelParts[0]).GraphicsDevice;
                //頂点バッファの作成
                skinVertexBuffer = new WritableVertexBuffer(graphics, this.boneManager.SKinTransformXBox.Length * 4, typeof(VertexSkinning));
                this.faceManager.SetUp(graphics);
            }
#endif
        }
Example #3
0
        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="modelParts">モデルパーツ</param>
        /// <param name="boneManager">ボーンマネージャ</param>
        /// <param name="faceManager">表情マネージャ</param>
        /// <param name="attachedMotion">付随モーション</param>
        /// <param name="rigids">剛体情報</param>
        /// <param name="joints">関節情報</param>
        public MMDModel(List<IMMDModelPart> modelParts, MMDBoneManager boneManager, IMMDFaceManager faceManager, Dictionary<string, MMDMotion> attachedMotion, MMDRigid[] rigids, MMDJoint[] joints)
        {
            Transform = Matrix.Identity;
            this.modelParts = modelParts;
            this.boneManager = boneManager;
            this.faceManager = faceManager;
            this.attachedMotion = attachedMotion;
            Culling = true;
            boneManager.CalcGlobalTransform();
            this.physicsManager = new PhysicsManager(rigids, joints, this);

            foreach (var part in modelParts)
                part.SetModel(this);
            Parts = new ReadOnlyCollection<IMMDModelPart>(modelParts);
            animationPlayer = new AnimationPlayer(boneManager, faceManager);

            //イベントフック
            MMDCore.Instance.OnBoneUpdate += new Action<float>(BoneUpdate);
            MMDCore.Instance.OnSkinUpdate += new Action<float>(SkinUpdate);
        }
Example #4
0
 public virtual void SetSkinMatrix(Matrix[] skinmatrix) { }//こちらではなにもしない
 /// <summary>
 /// 表情をモデルに適用
 /// </summary>
 /// <param name="faceManager">表情マネージャ</param>
 public virtual void SetFace(IMMDFaceManager faceManager) { }//こちらではなにもしない
Example #5
0
 /// <summary>
 /// 表情の設定
 /// </summary>
 /// <param name="faceManager"></param>
 public override void SetFace(IMMDFaceManager faceManager)
 {
     MMDFaceManager.ApplyToVertex((MMDFaceManager)faceManager,vertices, VertMap);
 }