Re: visual studioでpmxモデルが正しく描写されませ ( No.1 ) |
- 名前:PPM 日時:2018/10/06 18:36
DX.DxLib_Init() の前に
DX.SetZBufferBitDepth(24);
DX.SetCreateDrawValidGraphZBufferBitDepth(24); // 現時点では不要ですが、いつか要る日が来るのでつけておきましょう
の2行を追加しましょう。(モデルはダウンロードしたものでOK。改造不要です)
症状としてはDxLibはデフォルトでZバッファ深度を1ドットあたり16bitで作成しますが、最近のモデルは24bitくらい
ないと精度が足りない、といったところです。(Zバッファについては割愛します)
■補足
@DX.DxLib_Init() の前に
DX.SetFullSceneAntiAliasingMode(4, 2);
DX.SetDrawValidMultiSample(4, 2);
のように指定すると、ギザギザ感が減ります。
A上記解説サイトにしたがってモーションを追加すると、
サーバル.pmx
サーバル000.vmd
サーバル001.vmd
サーバル002.vmd
のようにファイルを用意することになります。やってみるとわかりますがロードが非常に遅いです。
DxLibには DxLib Model Viewerが付いており、サーバル.pmxを読み込ませると同じフォルダにあるVMDも
いっしょに読み込み、専用ファイル形式で保存することができます(サーバル.mv1)。
DX.MV1LoadModel()を サーバル.pmx から サーバル.mv1 に変更してください。
MV1が完成したら .pmxと.vmdは不要ですが、どっちみち改造が必要になるのでそのまま置いておきましょう。
BMiku Miku Dance本体のデータフォルダに toon01.bmp〜toon10.bmpがありますが、
モデルによってはこれらをPMX(MV1)のフォルダに一緒に置かないと色が変になるものも多いので
ご注意ください。(逆に、置くと色が変になるのもあるので注意)
※色、というか陰影
Cとはいえ、Pmx Editorで改造・修正が必要になるケースが多いです。
・まばたきしない⇒該当モーフがG(グループ)モーフになっている。DxLibではV(頂点)モーフしか対応していない
ようなので、Vモーフに修正する必要あり。(Pmx Editorの現バージョンでは、これが異様にやりにくくなった)
※もともとモーフが無いものもあります。
・ウィンクしない⇒モーフ名が ウインク / ウィンク / ウインク / ウィンク などバラバラ。モーションにあった
モーフ名に変更する必要あり
・ウィンクが逆⇒左と右が統一されていない。キャラ自体の左右か向かって左右か、が作者によってバラバラ。
・背の低いキャラにモーションを適用すると手足の振りが大きくなってかわいくない⇒Pmx Editorで
読み込ませるときに1.2倍とか1.5倍とか適当に拡大して読み込んでそのまま保存し、プログラム上でちょっと
縮小表示するというやり方を私はしています。
・リボンとかがビヨーンと伸びたままになる、スカートや胸が異様にバタつく、足首が変に回転する、足の動きが
気持ち悪い、艦これモデルで艦装(パーツ)が体についてこない、など。
艦装については簡単に直せることが多いですが、あとは試行錯誤が必要です。今回も、サーバルが下りてくる
ときにビヨーンとなります(降りてきたら直る)。
DMMDモデルには『Miku Miku Dance以外の使用は一切禁止。自作アプリも禁止』というのが結構ありますので
ReadMeは最新版を常に確認しましょう。
|
Re: visual studioでpmxモデルが正しく描写されませ ( No.2 ) |
- 名前:みちお 日時:2018/10/07 14:59
丁寧な解答をしていただき本当に助かります。
しかし補足Aについて私の知識不足により理解できませんでした。文章最後に分からなかったところを書かせていただいております。
お時間がないようでしたら最後の 質問内容 のところだけ確認していただきたいです。
Zバッファを追加した所、症状は治りました。ありがとうございます。
Zバッファ深度というものがデフォルトだと足りないため起きていた問題、と理解しました
補足の
@について
ギザギザ感減りました。ありがとうございます。
Aについて
すみません。調べてみたのですが、理解できませんでした。
最後に改めて質問内容を書きます。
Bについて
ご忠告ありがとうございます。覚えておきます
Cについて
現在の私の知識では理解できない内容が多いため、進めていくうちに問題が発生したときに
改めて参考にさせていただきます。
Dについて
ご忠告ありがとうございます。今回使用させていただいているモデルについてはReadMeがついておらず、
ダウンロード元を確認したところ、再配布にのみ「禁止」の表示がありましたので、おそらく大丈夫ではないかと思われます
質問内容:
まず↓でモデルを読み込み、
modelHandle = DX.MV1LoadModel("Data/サーバル.pmx");//3Dモデルの読み込み
↓関数を使って .pmx があるフォルダに .mv1 を作成
MV1SaveModelToMV1File
それ以降のコードで、表示するモデルを .mv1 に全て変更
という流れでよいのでしょうか
もし合っているのだとしてもコードの書き方が分かりません
( 現在 modelHandle 変数では .pmx のモデルが指定されているから、
新しく .mv1 を入れるための変数を作るのか...?
となると private int modelHandle2; みたいなものも作っておかないといけないのか!?
そもそも保存をするための 変数 ってどう書くんだ... )
という感じで分からない事だらけです
重ねての質問になってしまい申し訳ありません
どうかよろしくお願いいたします
|
Re: visual studioでpmxモデルが正しく描写されませ ( No.3 ) |
- 名前:PPM 日時:2018/10/07 17:15
C#版というのを見落としていました。
プログラム上でMV1を作るということではなく、DxLib Model Viewerというツールを使って事前に作って
おくという意味です。
ただしC#版にはDxLib Model Viewer(や他のツール)が付いていませんので、150MB以上ありますがVisual C++版を
ダウンロードして展開します。Tool ⇒ DxLibModelViewer フォルダの中に32bit版/64bit版があるので、
どちらかをお使いください。
・サーバル.pmx、サーバル000.vmd、サーバル001.vmd、サーバル002.vmdというファイルはすでに準備済であるとします。
・DxLib Model Viewerを起動します。
・DxLib Model Viewerにサーバル.pmxをドラッグ&ドロップします
・しばらく待ちます(モデルやモ−ションによってはかなり)
・画面の左上に アニメーション という小さいボタンがあるのでクリックします
・3つのアニメーションが読み込まれているのを確認します
・再生速度を 30.0 にして、任意のアニメーション番号をクリックし、再生ボタンをクリックします
・アニメーションをチェックします(マウスでグリグリ)
・停止ボタンを押します。
・メニューからファイル ⇒ 上書き保存 をクリックし、サーバル.mv1として保存します
準備はここまでです。C#の方に戻って
modelHandle = DX.MV1LoadModel("Data/サーバル.pmx");
を
modelHandle = DX.MV1LoadModel("Data/サーバル.mv1");
に変更して終わりです。
|
Re: visual studioでpmxモデルが正しく描写されませ ( No.4 ) |
- 名前:みちお 日時:2018/10/12 01:42
C++版より DxLib Model Viewer を使わせていただきました。
指示通りにしたところ、今までの比にならないくらいロードが早くなりました。
発生していたた問題全て解決いたしました。
PPM 様のおかげで、原因がわかり、解決することができ、その結果が見れて、プログラムがすごく楽しいです。
本当にありがとうございました。
教えていただいたことに関してましては、少しでも重複質問が減るように、やり取りの中で出てきた
参考サイト様 ttps://qiita.com/massoumen/items/2985a0fb30472b97a590
にも、「Zバッファーの件、ギザギザ感を減らす方法、ロードを早くする方法」について、コメント致しました。
(ここへのリンクはつけてあります。)
もしご迷惑でしたら削除致します。
|