コード例 #1
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            // モデルファイルを開く。(必須)
            var ofd = new OpenFileDialog();

            ofd.Filter = "pmxモデルファイル(*.pmx)|*.pmx";
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                this._Model = PMXModel物理変形付き.ファイルから読み込む(ofd.FileName);

                // モーションファイルを開く。(任意)
                var ofd2 = new OpenFileDialog();
                ofd2.Filter = "vmdモーションファイル(*.vmd)|*.vmd";
                if (ofd2.ShowDialog() == DialogResult.OK)
                {
                    モーション motion = this._Model.モーション管理.ファイルからモーションを生成し追加する(ofd2.FileName, true);
                    this._Model.モーション管理.モーションを適用する(motion, 0, モーション再生終了後の挙動.Replay);
                }

                this.ScreenContext.ワールド空間.Drawableを追加する(this._Model);

                //②コントローラーフォームに対して読み込んだモデルを渡して表示します。
                this._Controller = new Controller(this._Model);
                this._Controller.Show();
                this._Controller.Activate();
            }

            Activate();
        }
コード例 #2
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            var sampleFolder = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + @"\サンプルデータ";


            // ニコニ立体ちゃんのモデルを読み込んで、画面内のワールド空間に追加。

            this._Model = PMXModel物理変形付き.ファイルから読み込む($@"{sampleFolder}\Alicia\MMD\Alicia_solid.pmx");
            this.ScreenContext.ワールド空間.Drawableを追加する(this._Model);


            // ニコニ立体ステージのモデルを読み込んで、画面内のワールド空間に追加。

            this._Stage = PMXModel物理変形付き.ファイルから読み込む($@"{sampleFolder}\nicosolid_stage\nicosolid_stage.pmx");
            this.ScreenContext.ワールド空間.Drawableを追加する(this._Stage);


            // モーションを読み込んで、ニコニ立体ちゃんモデルに適用。

            モーション motion = this._Model.モーション管理.ファイルからモーションを生成し追加する($@"{sampleFolder}\Alicia\MMD Motion\2分ループステップ1.vmd", true);

            this._Model.モーション管理.モーションを適用する(motion, 0, モーション再生終了後の挙動.Replay);


            // マウスで操作できるカメラモーションを読み込んで、画面(のカメラ)に適用。

            this.ScreenContext.カメラモーション = new マウスカメラモーション(this, this);


            // ウィンドウが後ろに隠れることがあるので、念のため。

            Activate();
        }
コード例 #3
0
        /// <summary>
        ///     指定したモーションを再生する
        /// </summary>
        /// <param name="id">モーションのid</param>
        /// <param name="startFrame">最初のフレーム</param>
        /// <param name="setting">終了後の挙動</param>
        public void モーションを適用する(モーション motionProvider, int startFrame = 0, モーション再生終了後の挙動 setting = モーション再生終了後の挙動.Nothing)
        {
            // TODO: モーションが同時には1つしか使えない
            if (現在再生中のモーション != null)
            {
                現在再生中のモーション.モーションを停止する();
            }

            motionProvider.モーションを再生する(startFrame, setting);

            現在再生中のモーション = motionProvider;
        }
コード例 #4
0
ファイル: Form1.cs プロジェクト: superowner/MikuMikuFlex
        private void loadMotion_Click(object sender, EventArgs e)
        {
            if (model == null)
            {
                return;
            }

            var ofd = new OpenFileDialog();

            ofd.Filter = "vmdモデルファイル(*.vmd)|*.vmd";
            if (ofd.ShowDialog(this) == DialogResult.OK)
            {
                モーション motion = model.モーション管理.ファイルからモーションを生成し追加する(ofd.FileName, false);
                model.モーション管理.モーションを適用する(motion);
            }
        }
コード例 #5
0
ファイル: Form1.cs プロジェクト: superowner/MikuMikuFlex
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            // モデルファイルの読み込み用ダイアログの設置
            var ofd = new OpenFileDialog();

            ofd.Filter = "pmxモデルファイル(*.pmx)|*.pmx";
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                this._Model = PMXModel物理変形付き.ファイルから読み込む(ofd.FileName);

                // モーションファイルの読み込み用ダイアログの設置
                var ofd2 = new OpenFileDialog();
                ofd2.Filter = "vmdモーションファイル(*.vmd)|*.vmd";
                if (ofd2.ShowDialog() == DialogResult.OK)
                {
                    // ダイアログの返値がいずれもOKの場合、モデルの読み込み処理をする

                    //①モーションファイルを読み込む
                    モーション motion = this._Model.モーション管理.ファイルからモーションを生成し追加する(ofd2.FileName, true);
                    //適用したい対象のモデルのモーションマネージャに対して追加します。
                    //IMotionProvider AddMotionFromFile(string ファイル名,bool すべての親ボーンを無視するかどうか);
                    //第二引数は歩きモーションなどで、移動自体はプログラムで指定したいとき、すべての親ボーンのモーションを無視することで、
                    //モーションでモデル全体が動いてしまうのを防ぎます。

                    //②モーションファイルをモデルに対して適用する。
                    this._Model.モーション管理.モーションを適用する(motion, 0, モーション再生終了後の挙動.Replay);
                    //第二引数は、再生を始めるフレーム番号、第三引数は再生後にリプレイするかどうか。
                    //リプレイせず放置する場合はActionAfterMotion.Nothingを指定する

                    //オマケ
                    //(1) モーションをとめるときは?
                    //model.MotionManager.StopMotion();と記述すれば止まります
                    //(2) 現在何フレーム目なの?
                    //model.MotionManager.CurrentFrameによって取得できます。
                }

                this.ScreenContext.ワールド空間.Drawableを追加する(this._Model);
            }

            Activate();
        }
コード例 #6
0
ファイル: Form1.cs プロジェクト: superowner/MikuMikuFlex
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            // 必須
            var ofd = new OpenFileDialog();

            ofd.Filter = "pmxモデルファイル(*.pmx)|*.pmx";
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                this._Model = PMXModel物理変形付き.ファイルから読み込む(ofd.FileName);

                // 任意
                var ofd2 = new OpenFileDialog();
                ofd2.Filter = "vmdモーションファイル(*.vmd)|*.vmd";
                if (ofd2.ShowDialog() == DialogResult.OK)
                {
                    モーション motion = this._Model.モーション管理.ファイルからモーションを生成し追加する(ofd2.FileName, true);
                    this._Model.モーション管理.モーションを適用する(motion, 0, モーション再生終了後の挙動.Replay);
                }

                this.ScreenContext.ワールド空間.Drawableを追加する(this._Model);

                //③ カメラモーションの選択ダイアログを表示し、選ばれたものをScreenContext.CameraMotionProviderに代入する。
                var selector = new CameraControlSelector(this._Model);
                selector.ShowDialog(this);
                this.ScreenContext.カメラモーション = selector.ResultCameraMotionProvider;

                /*
                 * ScreenContext.カメラモーション に代入されたインターフェースの モーションを更新する() が毎回呼ばれることによりカメラを更新している。
                 * この変数の型は カメラモーション インターフェースのため、これを実装すればカメラの動きは容易に定義可能である。
                 */
            }

            Activate();
        }