Example #1
0
        //①Form.OnLoadをオーバーライドする。
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);               //RenderFormはOnLoad内で3DCG空間を初期化しているため、base.OnLoadがOnLoad内で一番初めに呼ぶべきである。

            //ファイルを開くダイアログ
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Filter = "pmxモデルファイル(*.pmx)|*.pmx";
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                // ダイアログの返値がOKの場合、モデルの読み込み処理をする

                // (1) モデルを読み込む
                this._Model = PMXModel物理変形付き.ファイルから読み込む(ofd.FileName);


                // (2) ワールド空間にモデルを追加する
                ScreenContext.ワールド空間.Drawableを追加する(this._Model);
                //WorldSpaceは、このフォームの描画する3D空間を示している。ここにモデルなど(IDrawableを実装している)ものを渡すと、描画してくれる。
                //WorldSpaceは、ScreenContext.WorldSpaceと常に等しい。ウィンドウごとに必要な3DCG描画に必要な情報はScreenContextに保管されている。
            }

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

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

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

            Activate();
        }
Example #2
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();
        }
Example #3
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();
        }
Example #4
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            var exeFolder = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);

            this.レンダーターゲットのクリア色 = new SharpDX.Vector3(1f, 1f, 1f);      // 白

            //ファイルを開くダイアログ
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Filter = "pmxモデルファイル(*.pmx)|*.pmx";
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                // モデルを読み込んでワールド空間に追加。
                this._Model = PMXModel物理変形付き.ファイルから読み込む(ofd.FileName);
                this.ScreenContext.ワールド空間.Drawableを追加する(this._Model);

                // サンプルのシーンエフェクトファイルを読み込んでワールド空間に追加。
                this._Scene = new シーンモデル("グラデーションサンプル", $@"{exeFolder}\SampleSceneShader.fx", this.ScreenContext);
                this.ScreenContext.ワールド空間.Drawableを追加する(this._Scene);
            }

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

            // ウィンドウが後ろに隠れることがあるので、念のため。
            Activate();
        }
        private void Add2Form1_Click(object sender, EventArgs e)
        {
            var ofd = new OpenFileDialog();

            ofd.Filter = "pmxモデルファイル(*.pmx)|*.pmx";
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                PMXModel model = PMXModel物理変形付き.ファイルから読み込む(ofd.FileName);
                form1.ScreenContext.ワールド空間.Drawableを追加する(model);
            }
        }
Example #6
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)
                {
                    // ダイアログの返値がいずれも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();
        }
Example #7
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);
                this.ScreenContext.ワールド空間.Drawableを追加する(this._Model);

                //②ボーン、モーフの編集用に作成したサンプルのGUIを表示する
                this._Controller = new TransformController(this._Model);
                this._Controller.Show(this);
                this._Controller.Activate();
            }

            Activate();
        }
Example #8
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);

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

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

            Activate();
        }