//①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(); }
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(); }
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(); }
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); } }
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(); }
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(); }
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(); }