トップページ > 記事閲覧
就活のために デスクトップマスコットを作りたい!
名前:kukaniki 日時: 2024/06/01 16:31

問題解決内容:テクスチャの表示とモデルを表示させたい。('ω')ロックマンみたいなAiアシスタントを作りたい。 ※ DX初心者です。 Test.cs: using System; using System.Windows.Forms; using DxLibDLL; public class MyForm : Form { private int modelHandle; public MyForm() { Init(); Dxinit(); // フォームの初期設定 } public void Init() { this.Text = "My Form"; this.Width = 800; this.Height = 600; } public void Dxinit() { DX.SetOutApplicationLogValidFlag(DX.FALSE); DX.DxLib_Init(); DX.SetUserWindow(Handle); DX.SetDrawScreen(DX.DX_SCREEN_BACK); // モデルのロード modelHandle = DX.MV1LoadModel("Data/yukari.pmd"); DX.SetCameraNearFar(0.1f, 1000.0f); DX.SetCameraPositionAndTarget_UpVecY(DX.VGet(0.0f, 10.0f, -20.0f), DX.VGet(0.0f, 10.0f, 0.0f)); if (modelHandle == 1) { MessageBox.Show("モデルのロードに失敗しました。"); Environment.Exit(1); } } public void MainLoop() { DX.ClearDrawScreen(); // モデルの描画 DX.MV1DrawModel(modelHandle); DX.ScreenFlip(); } private void FormClose(object sender, FormClosedEventArgs e) { DX.MV1DeleteModel(modelHandle); DX.DxLib_End(); } [STAThread] static void Main(string[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); MyForm form = new MyForm(); form.FormClosed += new FormClosedEventHandler(form.FormClose); form.Show(); while (form.Created) { form.MainLoop(); Application.DoEvents(); } } } Test.csproj <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net6.0-windows</TargetFramework> <UseWPF>false</UseWPF> <UseWindowsForms>true</UseWindowsForms> <PlatformTarget>x64</PlatformTarget> </PropertyGroup> <ItemGroup> <Reference Include="DxLib_x64"> <HintPath>DxLib_x64.dll</HintPath> </Reference> <Reference Include="DxLib"> <HintPath>DxLib.dll</HintPath> </Reference> <Reference Include="DxLibDotNet"> <HintPath>DxLibDotNet.dll</HintPath> </Reference> </ItemGroup> <ItemGroup> <PackageReference Include="DxLib.NETDLL" Version="3.2.4.2" /> <PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" /> </ItemGroup> </Project> 参考記事: "http:://qiita.com/massoumen/items/2985a0fb30472b97a590" "http:://tech.spark-creative.co.jp/entry/2021/01/04/111654" 環境構築とDX.dllといったライブラリを使用できるとこまで努力をしました。だけどDXの情報がわからなくて モデルが表示されているのかされていないのかがわかりません。 どなたか詳しい方、助けてください。(>_<)
メンテ

Page: 1 |

Re: 就活のために デスクトップマスコットを作りたい! ( No.1 )
名前:管理人 日時:2024/06/02 01:55

> モデルが表示されているのかされていないのかがわかりません。 現在はどのような表示がされているのでしょうか?
メンテ
Re: 就活のために デスクトップマスコットを作りたい! ( No.2 )
名前:kukaniki 日時:2024/06/02 15:36

状態: 背景は黒色でフォームは何も映っていません。 モデルの読み込みのエラーとかはなっていません。 Console.WriteLine("model to loading");
メンテ
Re: 就活のために デスクトップマスコットを作りたい! ( No.3 )
名前:管理人 日時:2024/06/02 17:39

> 背景は黒色でフォームは何も映っていません。 了解です プログラムを改めて拝見してみましたが、SetUserWindow が DxLib_Init の後に呼ばれているようです SetUserWindow は DxLib_Init の実行前でのみ有効な関数ですので、SetUserWindow を DxLib_Init の前に 呼ぶようにしてみてください
メンテ
Re: 就活のために デスクトップマスコットを作りたい! ( No.4 )
名前:kukaniki 日時:2024/06/02 18:56

私もC#で作っています。 エディターはVisual Studio Codeです。 https:://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=4514 過去に同じような方がしているDXをしらべました。その結果m1 modelHandle = DX.MV1LoadModel("Data/サーバル.mv1"); DxLib Model Viewer というアプリが必要みたいです。 M1に変換するにはどうすればいいですか?
メンテ
Re: 就活のために デスクトップマスコットを作りたい! ( No.5 )
名前:kukaniki 日時:2024/06/02 19:01

> ※ 修正後のコードの全体です。 ウィンドウと黒色の画面が奇麗にまとまりました。 using System; using System.Windows.Forms; using System.Drawing; using DxLibDLL; namespace WinForm { public partial class Myf : Form { private int model; public Myf() { Ini(); DxIni(); } public void Ini() // 初期化 { this.Text = "My Form"; this.Width = 800; this.Height = 600; this.FormClosed += new FormClosedEventHandler(Close); } public void DxIni() { DX.SetOutApplicationLogValidFlag(DX.FALSE); // Log.txtを生成しないように設定 DX.SetUserWindow(Handle); // DxLibの親ウィンドウをこのフォームに設定 DX.DxLib_Init(); // DxLibの初期化 DX.SetDrawScreen(DX.DX_SCREEN_BACK); // 裏画面の設定 model = DX.MV1LoadModel("Model/sora.pmx"); Console.WriteLine("Loading to model.."); DX.SetCameraNearFar(0.1f, 1000.0f); // カメラの描画範囲を設定 DX.SetCameraPositionAndTarget_UpVecY(DX.VGet(0.0f, 10.0f, -20.0f), DX.VGet(0.0f, 10.0f, 0.0f)); // カメラの位置とターゲットを設定 } public void MainLoop() { DX.ClearDrawScreen(); DX.MV1DrawModel(model); DX.ScreenFlip(); // メインループ内での処理をここに記述します } [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Myf form = new Myf(); form.Show(); // フォームを描画させる。 while (form.Created) { form.MainLoop(); Application.DoEvents(); } } // フォームが閉じられたときに呼び出されるメソッド private void Close(object sender, FormClosedEventArgs e) { // DX.MV1DeleteModel(model); // モデルの削除 DX.DxLib_End(); // DxLibの終了処理 } } } ((+_+))何度も返信申し訳ないです。
メンテ
Re: 就活のために デスクトップマスコットを作りたい! ( No.6 )
名前:管理人 日時:2024/06/02 21:26

> DxLib Model Viewer というアプリが必要みたいです。 DxLib Model Viewer はDXライブラリのパッケージの中の Toolフォルダの中の DxLibModelViewerフォルダの中にあります > M1に変換するにはどうすればいいですか? M1 ではなく MV1 です DxLibModelViewer で3Dモデルを読み込んだ後に、メニューから『ファイル(F)』→『名前を付けて保存(A)』で MV1ファイルで保存することができます
メンテ
Re: 就活のために デスクトップマスコットを作りたい! ( No.7 )
名前:kukaniki 日時:2024/06/05 22:44

ちゃんとmv1に変換しました! // #pragma warning disable CS0436 using System; using System.Windows.Forms; using System.Drawing; using DxLibDLL; namespace WinForm { public partial class Myf : Form { private int model; public Myf() { Ini(); DxIni(); } public void Ini() // 初期化 { this.Text = "My Form"; this.FormClosed += new FormClosedEventHandler(Close); } public void DxIni() { DX.SetOutApplicationLogValidFlag(DX.TRUE); // Log.txtを生成しないように設定 DX.SetUserWindow(Handle); // DxLibの親ウィンドウをこのフォームに設定 DX.SetZBufferBitDepth(24); DX.SetCreateDrawValidGraphZBufferBitDepth(24); DX.DxLib_Init(); // DxLibの初期化 DX.SetDrawScreen(DX.DX_SCREEN_BACK); // 裏画面の設定 model = DX.MV1LoadModel("sora.mv1"); if(model == -1) { Console.WriteLine("Error"); } DX.SetCameraNearFar(0.1f, 1000.0f); // カメラの描画範囲を設定 DX.SetCameraPositionAndTarget_UpVecY(DX.VGet(0.0f, 10.0f, -20.0f), DX.VGet(0.0f, 10.0f, 0.0f)); // カメラの位置とターゲットを設定 } public void MainLoop() { DX.ClearDrawScreen(); DX.DrawString(100, 100, "モデルを読み込みたい!", DX.GetColor(255, 255, 255)); DX.MV1DrawModel(model); DX.ScreenFlip(); // メインループ内での処理をここに記述します } // [STAThread] static void Main(string[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Myf form = new Myf(); form.Show(); // フォームを描画させる。 while (form.Created) { form.MainLoop(); Application.DoEvents(); } } // フォームが閉じられたときに呼び出されるメソッド private void Close(object sender, FormClosedEventArgs e) { // DX.MV1DeleteModel(model); // モデルの削除 DX.DxLib_End(); // DxLibの終了処理 } } } なんどかVisual Studio CodeでRunをしましたが、-1とでます。エラーとでます。 こっちはエラーです。 model = DX.MV1LoadModel("sora.mv1"); こちらは文字列がちゃんと出るのに DX.DrawString(100, 100, "モデルを読み込みたい!", DX.GetColor(255, 255, 255)); ------------------------------------------------------------------------------ Microsoft Visual Studio .NET/C/C++ デバッガー (vsdbg) は、アプリケーションの開発とテストに役立つ Visual Studio Code、Visual Studio、または Visual Studio for Mac ソフトウェアでのみ使用できます。 ------------------------------------------------------------------------------ Error 原因が不明です。((+_+))あきらめてCppの環境構築をしたほうがいいですか?
メンテ
Re: 就活のために デスクトップマスコットを作りたい! ( No.8 )
名前:kukaniki 日時:2024/06/05 23:01

https:://youtu.be/E_nrG1C7E10 いちおうYoutubeで載せました。
メンテ
Re: 就活のために デスクトップマスコットを作りたい! ( No.9 )
名前:管理人 日時:2024/06/05 23:40

> こっちはエラーです。 > model = DX.MV1LoadModel("sora.mv1"); プログラムをビルドをすると実行ファイル( 拡張子が exe のファイル )が何処かのフォルダに作成されると思うのですが 実行ファイルがあるフォルダに sora.mv1 は有りますでしょうか? > 原因が不明です。((+_+))あきらめてCppの環境構築をしたほうがいいですか? Visual Studio Code は私は使用したことがないので Visual Studio Code に関する問題にはお答えできません C# についても私は詳しくありません なので Visual Studio Community 2022 で C++ を使用していただけると私もお答えし易いです
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存