トップページ > 記事閲覧
Live2Dのモデル読み込み時にエラーとなってしまう
名前:ひら 日時: 2020/05/19 14:39

C#を使用してLive2Dのモデルを表示しようとしているのですが、 DX.Live2D_LoadModel関数を使用すると-1の値を返してきます。 何か書き間違えてしまっているのでしょうか? 尚、Live2DCubismCore.dllの読み込みは正常にできているようです。 まだまだ未熟者ですが、ご教示頂けると嬉しいです。 <開発環境> Windows8.1 Visual studio 2019 <ソースコード> Form1.cs___________________________________________________________________________________________________ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using DxLibDLL; using System.IO; namespace Live2D { public partial class Form1 : Form { private int ModelHandle; public Form1() { InitializeComponent(); DX.SetOutApplicationLogValidFlag(DX.TRUE); DX.SetUserWindow(Handle); DX.SetDrawScreen(DX.DX_SCREEN_BACK); DX.Live2D_SetCubism4CoreDLLPath("Live2DCubismCore.dll"); DX.DxLib_Init(); //モデルの読み込み ModelHandle = DX.Live2D_LoadModel("Data/live2dモデル.model3.json"); 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.DrawBox(0, 0, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, DX.GetColor(1, 1, 1), DX.TRUE);//背景を設定 DX.Live2D_Model_Update(ModelHandle, 1 / 60.0f); DX.Live2D_RenderBegin(); DX.Live2D_Model_Draw(ModelHandle); DX.Live2D_RenderEnd(); DX.ScreenFlip(); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { DX.Live2D_DeleteModel(ModelHandle); DX.DxLib_End(); Environment.Exit(0); } } } Program.cs_______________________________________________________________________________________________________________________ using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; namespace Live2D { static class Program { /// <summary> /// アプリケーションのメイン エントリ ポイントです。 /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Form1 f1 = new Form1(); f1.Show(); while(true) { f1.MainLoop(); Application.DoEvents(); } } } }
メンテ

Page: 1 |

Re: Live2Dのモデル読み込み時にエラーとなってしまう ( No.1 )
名前:管理人 日時:2020/05/19 02:27

お使いのDXライブラリは最新バージョン( 3.21f )でしょうか? あと、お使いの Live2D の SDK は最新バージョン( Cubism 4 SDK for Native R1 )でしょうか? DXライブラリが対応しているバージョンと、使用される Live2D SDK のバージョンが一致していないと 正常に読み込むことができませんので、もしどちらかが最新バージョンではありませんでしたら 最新バージョンで試してみてください m(_ _)m ( 因みに最新バージョンでは Live2D_SetCubism3CoreDLLPath の 3 が 4 になって Live2D_SetCubism4CoreDLLPath となっています )
メンテ
Re: Live2Dのモデル読み込み時にエラーとなってしまう ( No.2 )
名前:ひら 日時:2020/05/19 10:09

お返事ありがとうございます。 DXライブラリを最新版に上書きして、Live2DのSDKのバージョンがCubism 4 SDK for Native R1 であることを確認しました。 (DX.Live2D_SetCubism3CoreDLLPath関数 から DX.Live2D_SetCubism4CoreDLLPath関数に変更しました。) それでも、-1の値を返して正常に読み込むことができませんでした.... 他に考えられる原因は御座いますでしょうか? 念のためソースコードをGithubに上げさせていただきます。 よろしければ参考にしていただければ幸いです。 ttps://github.com/Hira844/Live2D/tree/master/Live2D/Live2D 何卒、よろしくお願いいたします。
メンテ
Re: Live2Dのモデル読み込み時にエラーとなってしまう ( No.3 )
名前:にこよう 日時:2020/05/19 13:14

Live2D_SetCubism4CoreDLLPath()はDxLib_Init()の前に呼ぶ必要があります あと一つ気になったのですが、Dxlibのログは起動時に自動で毎回クリアされます 出力したくないのであれば以下の設定で出力しなくなります SetOutApplicationLogValidFlag(FALSE); ご存知でしたらすみません
メンテ
Re: Live2Dのモデル読み込み時にエラーとなってしまう ( No.4 )
名前:ひら 日時:2020/05/19 14:36

にこようさん お返事有難うございます。 Live2D_SetCubism4CoreDLLPath()とDxLib_Init()の位置を修正しました。ご指摘ありがとうございます。 それと、自動でクリアされることは知りませんでした。ありがとうございます。 コードを修正させていただきます。 (実行してもまだ-1の値を返してきました。)
メンテ
Re: Live2Dのモデル読み込み時にエラーとなってしまう ( No.5 )
名前:管理人 日時:2020/05/20 03:56

> それでも、-1の値を返して正常に読み込むことができませんでした.... > 他に考えられる原因は御座いますでしょうか? 私も手元で『デスクトップマスコット「琴葉茜」』を読み込むプログラムを組んでみたところ、 16384x16384というとても巨大な画像が使用されていたため、32bitアプリ( x86アプリ )設定では メモリが足りず読み込みに失敗しました 64bitアプリ( x64アプリ )設定では正常に読み込めましたので、もしC#のプロジェクトの起動設定が x86 設定になっていましたら、x64 設定にしてみてください また、搭載されているグラフィックスデバイスが 16384x16384 のサイズのテクスチャに 対応していない場合も読み込みに失敗すると思います こちらが原因の場合は作者の方に使用する画像を小さくしていただくしかありません… あと、デフォルトの Any CPU 設定の場合はOSが32bit版の場合 32bitアプリとして起動しますので Live2D_SetCubism4CoreDLLPath で設定する dll は以下のように 32bit起動の場合と 64bit起動の場合で分ける必要があります if (System.IntPtr.Size == 8) { // 64bit起動の場合 DX.Live2D_SetCubism4CoreDLLPath("x86_64/Live2DCubismCore.dll"); } else { // 32bit起動の場合 DX.Live2D_SetCubism4CoreDLLPath("x86/Live2DCubismCore.dll"); }
メンテ
Re: Live2Dのモデル読み込み時にエラーとなってしまう ( No.6 )
名前:ひら 日時:2020/05/20 22:41

管理者様 お返事ありがとうございます。 > また、搭載されているグラフィックスデバイスが 16384x16384 のサイズのテクスチャに > 対応していない場合も読み込みに失敗すると思います 本当に無知で申し訳ないのですが、 グラフィックスデバイスが対応しているテクスチャのサイズを確認する方法を どうか、教えていただけないでしょうか? 少し調べてみましたが、正確かどうかよくわかりませんでした.... デスクトップを右クリック → 画面の解像度 → 解像度 というもので合っているのでしょうか? 本当に無知で申し訳ございません。
メンテ
Re: Live2Dのモデル読み込み時にエラーとなってしまう ( No.7 )
名前:管理人 日時:2020/05/21 01:37

DXライブラリを使用したプログラムを実行すると作成されるログファイル( Log.txt )の 以下の『最大テクスチャサイズ』と書かれている行でグラフィックスデバイスが対応している テクスチャの最大サイズを確認することができます 825: 最大テクスチャサイズ 幅:16384 高さ:16384 > デスクトップを右クリック → 画面の解像度 → 解像度 > というもので合っているのでしょうか? いえ、こちらは画面の解像度なので、最大テクスチャサイズとは関係ありません
メンテ
Re: Live2Dのモデル読み込み時にエラーとなってしまう ( No.8 )
名前:ひら(解決済み) 日時:2020/05/21 20:58

Live2D_SetCubism4CoreDLLPathを 32bit起動の場合と64bit起動の場合で分けた結果、 正常に読み込むことができました。 回答してくださった皆様、本当にありがとうございました。
メンテ

Page: 1 |

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

   クッキー保存