// TSOビューワをリセットする private void resetTSOViewerToolStripMenuItem_Click(object sender, EventArgs e) { if (viewer!=null) { viewer.ClearFigureList(); viewer.Render(); viewer.Dispose(); viewer = null; TDCGExplorer.ResetDefaultPose(); // ポーズをデフォルトに戻す. // TDCGExplorer.FigureLoad = false; } }
public void panel1_DragDrop(object sender, DragEventArgs e) { //ドロップされたデータがファイルか調べる if (e.Data.GetDataPresent(DataFormats.FileDrop)) { string[] FileName = (string[])e.Data.GetData(DataFormats.FileDrop); string name = FileName[0]; // 拡張子が".tdcgsav.png"or".tso"であるか確認する if ((System.IO.Path.GetExtension(name) == ".png" && System.IO.Path.GetExtension( System.IO.Path.GetFileNameWithoutExtension(name)) == ".tdcgsav") || System.IO.Path.GetExtension(name) == ".tso") { // お待ちくださいダイアログを表示 ProgressDialog pd = new ProgressDialog(); pd.Show(this); pd.Message = "ファイルを読み込んでいます。"; //try { //ドロップされたファイルを読み込む viewer.ClearFigureList(); viewer.LoadAnyFile(name, false); // フォームより各パラメータを得て、設定 SetupFigure(name); // お待ちくださいダイアログを閉じる pd.Value = pd.Maximum; System.Threading.Thread.Sleep(1000); pd.Dispose(); /*} * catch * { * // お待ちくださいダイアログを閉じる * pd.Dispose(); * * MessageBox.Show("ファイルを読み込むことができませんでした。\nファイルが正常であるか確認してください。"); * }*/ } else { MessageBox.Show("拡張子が.tdcgsav.pngか、.tsoである必要があります。"); return; } } panel1.BackColor = Color.LightCyan; }
private void button3_Click(object sender, EventArgs e) { // お待ちくださいダイアログを表示 ProgressDialog pd = new ProgressDialog(); pd.Show(); pd.Message = "ファイルを変換しています。"; try { // MMDPlayerを設定する v2t.initialize(referFileName2.FileName, referFileName3.FileName); // ヘビーセーブファイルを開く viewer.ClearFigureList(); // 前回読み込んだフィギュアを消去 List <Figure> fig_list = viewer.LoadPNGFile(Path.Combine(Application.StartupPath, @"default.tdcgsav.png")); Figure fig = fig_list[0]; // 名前が長いので省略 fig.UpdateNodeMapAndBoneMatrices(); // 初期ポーズのTMOを得ておく v2t.SetInitPose(fig); // offsetをセット TMOFile tmo = fig.Tmo; // 名前が長いので省略 v2t.Offset_position = tmo.nodes[0].Translation; // 初期フレームのポーズを得る v2t.GetRotation(ref tmo); tmo.SaveTransformationMatrixToFrameAdd(); // 全フレームをtmoにコピー float fDiffTime = 30.0f / 60.0f; for (float iTime = 0.0f; iTime < v2t.Vmd.getMaxFrame(); iTime += fDiffTime) { v2t.FrameMove(fDiffTime); v2t.GetRotation(ref tmo); tmo.SaveTransformationMatrixToFrameAdd(); // FrameにボーンのMatrixを保存 if ((int)(iTime / fDiffTime) % 10 == 0) { pd.Value = (int)((iTime / v2t.Vmd.getMaxFrame()) * (pd.Maximum - pd.Minimum)); this.Update(); System.Threading.Thread.Sleep(10); } } // nodeのmatricesを、frameのmatricesにそっくりコピー tmo.NodeMatrices2FrameMatrices(2); // お待ちくださいダイアログを閉じる pd.Value = pd.Maximum; System.Threading.Thread.Sleep(1000); pd.Dispose(); // 変換し、保存する using (SaveFileDialog sfd = new SaveFileDialog()) { //タイトルを設定する sfd.Title = "保存先のファイルを選択してください"; //はじめのファイル名を指定する sfd.FileName = "新しいファイル.tmo"; //[ファイルの種類]に表示される選択肢を指定 sfd.Filter = "*.tmo|*.tmo|すべてのファイル|*.*"; //[ファイルの種類]ではじめに選択される選択肢 sfd.FilterIndex = 1; //ダイアログボックスを閉じる前に現在のディレクトリを復元するようにする sfd.RestoreDirectory = true; if (sfd.ShowDialog() != DialogResult.OK) { return; } tmo.Save(sfd.FileName); } // メッセージボックスを表示する MessageBox.Show("変換を完了しました。"); } catch { // お待ちくださいダイアログを閉じる pd.Dispose(); MessageBox.Show("エラーにより、変換できませんでした。"); } }