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); }
/// <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 }
/// <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); }
public virtual void SetSkinMatrix(Matrix[] skinmatrix) { }//こちらではなにもしない /// <summary> /// 表情をモデルに適用 /// </summary> /// <param name="faceManager">表情マネージャ</param> public virtual void SetFace(IMMDFaceManager faceManager) { }//こちらではなにもしない
/// <summary> /// 表情の設定 /// </summary> /// <param name="faceManager"></param> public override void SetFace(IMMDFaceManager faceManager) { MMDFaceManager.ApplyToVertex((MMDFaceManager)faceManager,vertices, VertMap); }