トップページ > 過去ログ > 記事閲覧
printfDxで正常に描画されない
名前:ジュンヤ 日時: 2013/04/12 21:34

SetFullSceneAntiAliasingModeでフルスクリーンアンチエイリアスモードを設定した後に printfDxで文字を描画すると、全部描画されずに一部しか描画されません。 以下のプログラムでMV1LoadModelでわざと読み込めないファイル名を指定することで再現します。 SetFullSceneAntiAliasingModeをコメントアウトすると正常に描画されます。 MV1DrawModelで3Dモデルを描画せずに、DrawGraphで描画した時も同じ症状になるようです。 (こちらもSetFullSceneAntiAliasingModeを呼んだ時のみ) DXライブラリのバージョンは暫定最新版です。よろしくお願いします。 #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int ModelHandle ; ChangeWindowMode( TRUE ); SetFullSceneAntiAliasingMode( 4, 2 ); // DXライブラリの初期化 if( DxLib_Init() < 0 || SetDrawScreen( DX_SCREEN_BACK ) < 0 ) { // エラーが発生したら直ちに終了 return -1 ; } // 3Dモデルの読み込み ModelHandle = MV1LoadModel( "DxChara.x" ) ; if( ModelHandle == -1 ) { printfDx("モデルが読み込めませんでした"); ScreenFlip(); WaitKey(); return -1; } // 画面に映る位置に3Dモデルを移動 MV1SetPosition( ModelHandle, VGet( 320.0f, -300.0f, 600.0f ) ) ; while( !ProcessMessage() && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) { ClearDrawScreen(); // 3Dモデルの描画 MV1DrawModel( ModelHandle ) ; ScreenFlip(); } // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; }

Page: 1 |

Re: printfDxで正常に描画されない ( No.1 )
名前:管理人 日時:2013/04/14 16:23

ご報告ありがとうございます ただ、手元の環境では「モデルが読み込めませんでした」と全文が表示されました 一部しか描画されない場合はどのように表示されるのでしょうか?
Re: printfDxで正常に描画されない ( No.2 )
名前:ジュンヤ 日時:2013/04/14 21:11

ご返信ありがとうございます。 左上の一部しか描画されてないです。 ↓にキャプチャした画像をアップしました。 h t t p://w w w1.axfc.net/uploader/so/2868934.png OSはwindows7で、グラフィックカードはIntel(R) HD Graphics familyで、 VisualStudio Express 2012 for Windows Desktopを使用してます。
Re: printfDxで正常に描画されない ( No.3 )
名前:ジュンヤ 日時:2013/04/21 21:39

あれから色々試してみたのですが、画面に黒い横線が入るという症状が発生しました。 SetFullSceneAntiAliasingModeを設定して、フルスクリーンモード時のみで発生するみたいです。 ウインドモード時には正常に描画されます。 ただ不思議なんですが、お見せするために動画をキャプチャしたところ なぜかキャプチャした動画では正常に描画されてました。 SetFullSceneAntiAliasingModeありで、症状が確認できたプログラムとキャプチャした画像です。 h t t p://w w w1.axfc.net/uploader/so/2876581 キーワード dxlib キャプチャというファイルに症状が出ている画像を入れておきました。 スクリーンキャプチャでは真っ黒になってしまうので、携帯で撮ったもので申し訳ないですがよろしくお願いします。 念のためSetFullSceneAntiAliasingModeなしで正常に描画されている動画を以下にUPしました。 h t t p://w w w.youtube.com/watch?v=b-XZ6Dxqplk&feature=youtu.be 因みに正常版とそうでない物の違いはSetFullSceneAntiAliasingModeをコメントアウトするかどうかだけです。 それと物理演算を使用する際にリボンやネクタイなどが床に落ちて突き抜けてしまう現象がよく起きるので 良い対処方法があれば教えていただけますでしょうか。
Re: printfDxで正常に描画されない ( No.4 )
名前:ジュンヤ 日時:2013/04/23 20:14

上記の画面に黒い横線が入る症状は、SetGraphModeで適切な解像度を設定してやることできちんと描画されました。
Re: printfDxで正常に描画されない ( No.5 )
名前:管理人 日時:2013/04/30 00:24

アップしていただいたファイルを拝見致しました 私の環境ではテストプログラムで正常に表示されました 実際に Intel(R) HD Graphics family の環境で試したことは無いのですが、 こちらはグラフィックカードではなくチップセットに内蔵されたグラフィックス機能なので、 グラフィック処理専用カードに比べて性能・機能はかなり低くなっています なので、今回の現象は Intel(R) HD Graphics family の能力不足による可能性が高いです DxLibModelViewer.exe のメニューに「表示」→「アンチエイリアシングの使用」という 項目がありますので、よろしければこちらを有効にしてみて、アンチエイリアスが正常に 適用されるかどうかをご確認になってみてください ( 因みに DxLibModelViewer.exe ではアンチエイリアス付きの描画対象にできる画像を使用して アンチエイリアスを実現しているので、グラフィックスデバイスに求められるアンチエイリアス の機能は SetFullSceneAntiAliasingMode より敷居が高くなっています ) 物理演算でネクタイなどが破綻する現象についてですが、手元の DxLibModelViewer.exe で bkl.pmx を読み込んで再生したところ、ネクタイが破綻することはありませんでした バージョン3.06b のときに物理演算の精度を上げていて DxLibModelViewer.exe の方も 一緒に精度が上がりましたので、よろしければこちらの最新版の DxLibModelViewer.exe で mv1ファイルを作成し直してみてください // ビューアー http://homepage2.nifty.com/natupaji/DxLib/DxLibModelViewerTest.zip
Re: printfDxで正常に描画されない ( No.6 )
名前:ジュンヤ 日時:2013/05/03 12:56

> 実際に Intel(R) HD Graphics family の環境で試したことは無いのですが、 > こちらはグラフィックカードではなくチップセットに内蔵されたグラフィックス機能なので、 > グラフィック処理専用カードに比べて性能・機能はかなり低くなっています > なので、今回の現象は Intel(R) HD Graphics family の能力不足による可能性が高いです 了解しました。こちらの環境のせいでしたのに、お手数おかけして申し訳ありませんでした。 PCを新調した際にはまた試してみようと思います。 > 物理演算でネクタイなどが破綻する現象についてですが、手元の DxLibModelViewer.exe で > bkl.pmx を読み込んで再生したところ、ネクタイが破綻することはありませんでした 新しいバージョンのDxLibModelViewer.exe で作成してもこちらでは床まで貫通してしまっているのですが、 MV1SetLoadModelUsePhysicsModeがDX_LOADMODEL_PHYSICS_LOADCALCの時には MMMの物理演算焼きこみ機能を使えばなんとかなってます。 しかしDX_LOADMODEL_PHYSICS_REALTIMEを使用する際には、すごい状態になってしまいます。 説明するのは難しいので以下に動画をアップしました。 h t t p://youtu.be/z_u90ZPo0aQ 動画をとった際に使ったプログラムと実行ファイル一式をアップしておきました。 Zキーでジャンプ、Xキーでダッシュになってます。(ジャンプするとこちらでは事象がすぐに起きます) h t t p://w w w1.axfc.net/uploader/so/2888733?key=dxlib それと稀にですが、 Assertion failed File:..\..\src\LinearMathh/btQuaternion.h Line 188 Expression: s != b_btscalqr(0,0) の様な表示が出て急に落ちてしまうことがあります。 何度もお手数おかけして申し訳ありませんが、確認していただけますでしょうか。
Re: printfDxで正常に描画されない ( No.7 )
名前:管理人 日時:2013/05/04 18:03

> 新しいバージョンのDxLibModelViewer.exe で作成してもこちらでは床まで貫通してしまっているのですが、 > MV1SetLoadModelUsePhysicsModeがDX_LOADMODEL_PHYSICS_LOADCALCの時には > MMMの物理演算焼きこみ機能を使えばなんとかなってます。 すみません、リアルタイム物理演算の場合は貫通するかどうかは実行時に決まるので、私が想定していたのは DxLibModelViewer.exe の「読み込みオプション」→「PMD読み込み時に物理演算を適用する」を有効にした状態で pmxファイルを読み込み、mv1ファイルとして保存した場合でした DX_LOADMODEL_PHYSICS_REALTIME を使用してリアルタイムに物理演算を行う場合は、まずモデルの初期位置が 決定した時点で MV1PhysicsResetState を呼び出して物理演算の状態をリセットする必要があります アップしていただいたプログラムでは MV1PhysicsResetState を使用するようにしても少し動くとすぐに 物理演算が破綻してしまいますが、これは以下のようにすることで軽減できます  ・移動や回転の際は、必ず加速と減速の処理を設ける いきなりトップスピードで移動・回転をすると破綻する可能性が高くなります  ・移動のフレームレートを倍にして、物理演算の計算精度を高くする DXライブラリは「キャラの移動」「描画」「ScreenFlip」の順番で処理を繰り返すとフレームレートは モニタのリフレッシュレートに依存するので現在では大抵「秒間60コマ( 60fps )」になりますが、 計算精度を高めるためにこれを倍の120fpsにします( 併せてキャラの動作に関わる速度を全て半分にします ) ただ、描画は物理の計算精度に関係ないので、120fpsにするのは「キャラの移動」だけで、 「描画」「ScreenFlip」は 60fpsのままです なので「キャラの移動」「キャラの移動」「描画」「ScreenFlip」という処理の順番にします 「キャラの移動」の部分で MV1PhysicsCalculation( 1000.0f / ( フレームレート ) ) を実行するので、 計算の精度が上がり、破綻が軽減されます 尚、フレームレートが上がれば上がるほど破綻しにくくなるので、 「キャラの移動」「キャラの移動」「キャラの移動」「キャラの移動」「描画」「ScreenFlip」 と、「キャラの移動」を240fpsにすることで更に破綻しにくくなりますが、その分CPU負荷は高くなります ( あとフレームレートが上がると同じ経過時間でも物理の動きが若干変化します ) 上記二つの方法を使用すると破綻はしにくくなりますが、基本的には「非現実的な動きする」と破綻するので 「非現実的だけど格好良い動き」をさせることが多いアクションゲームとリアルタイム物理演算は相性が 良くありません・・・
Re: printfDxで正常に描画されない ( No.8 )
名前:ジュンヤ 日時:2013/05/05 09:43

教えていただいた通りの修正をしたところ、ほとんど破綻せず上記のエラーも起きなくなりました。 ありがとうございました! それと別件ですが、今回新しく配布していただいたDxLibModelViewer.exeで 文月カスタム Satan Angelのモデルを読み込んだところスカートが透けてしまうようです。 現在配布されてないモデルのため、送ったメールに添付させていただきました。よろしくお願いします。
Re: printfDxで正常に描画されない ( No.9 )
名前:管理人 日時:2013/05/12 03:09

物理の問題はほぼ解決した様で何よりです スカートが透けてしまう件ですが( メールを拝見致しました )、tgaファイルにオプションで 付けられる文字列が存在する場合に発生する問題でした( DXライブラリの tgaファイル読み込み プログラムがオプションの文字列を考慮していなかったため、文字列の長さの分画像として 読み込むアドレスがずれていました ) 修正したバージョンをアップしましたので、よろしければお試しください m(_ _;m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) // ビューアー http://homepage2.nifty.com/natupaji/DxLib/DxLibModelViewerTest.zip
Re: printfDxで正常に描画されない ( No.10 )
名前:ジュンヤ 日時:2013/05/13 22:24

ご対応ありがとうございました。こちらでも問題なく読み込むことができました。 ただ他にも読み込む際に不具合があるモデルがありました。 以下で配布してるモデルを読み込むと目のテクスチャが表示されません。 最初はテクスチャが張られてないのが原因かと思いましたが、顔のマテリアル部分を非表示にすると 顔は非表示になり、テクスチャは表示された状態になります。 h t t p://ch.nicovideo.jp/super_sierra/blomaga/ar109409 しえら式蓬莱人形NR、しえら式ゴリアテ人形Mk3、しえら式上海人形Mk3plusの3体のモデルで試して見ましたが すべて同様になります。 それと以下の【黒髪の美少女】 ver4.5.pmxと【黒髪の美少女】 水着 ver4.5.pmxのモデルが読み込めないようです。 その他の同梱モデルは正常に読み込めるようです。 h t t p://w w w.nicovideo.jp/watch/sm19674501 もう1つ不具合と言う程のものではありませんが、以下のモデルの髪の毛の色が照明をオンにすると まったく違う色になってしまいます。もしかしたら調整だけでなんとかなるかもしれませんが、 MMDでの見た目に近づけるためにはどうすれば良いでしょうか。 h t t p://bowlroll.net/up/dl8025 念のため所持してるMMDモデル120体程すべて読み込みテストを行いました。 その中でマテリアルとライトの調整でなんとかならなさそうなモデルはこれだけでした。 何度も申し訳ありませんがよろしくお願いします。
Re: printfDxで正常に描画されない ( No.11 )
名前:管理人 日時:2013/05/19 11:21

表示不具合のご報告ありがとうございます 修正版をアップしましたので、よろしければお試しになってみてください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) // ビューアー http://homepage2.nifty.com/natupaji/DxLib/DxLibModelViewerTest.zip > 以下で配布してるモデルを読み込むと目のテクスチャが表示されません。 MMDではマテリアル( 材質 )の番号が若い順にメッシュを描画しているみたいです DXライブラリでは不透明の部分を先に描画して、半透明の部分を後に描画しているのですが、 そうするとMMDとは描画の順番が違ってしまい、Zバッファの仕様を応用したモデルで意図した 描画結果が得られなかったようです PMD,PMXファイルの場合はマテリアル番号の若い順に描画することで正常に描画されるようになりました > それと以下の【黒髪の美少女】 ver4.5.pmxと【黒髪の美少女】 水着 ver4.5.pmxのモデルが読み込めないようです。 現在ダウンロードできる Ver5.0 は正常に読み込めてしまうようです・・・ > 以下のモデルの髪の毛の色が照明をオンにするとまったく違う色になってしまいます。 スフィアマップのテクスチャは指定されているけどブレンドの設定が「無効」になっている場合の処理を 書いていなかったのが原因でした(「乗算」として処理してしまっていました )「無効」に対応しましたので 髪の色も正常になりました
Re: printfDxで正常に描画されない ( No.12 )
名前:ジュンヤ 日時:2013/05/20 22:17

お忙しい中何度もご対応いただきまして、ありがとうございました。 おかげ様ですべて問題なく表示されることが確認できました。 > 現在ダウンロードできる Ver5.0 は正常に読み込めてしまうようです・・・ こちらでもVer5.0だと読み込めるようになってました。 長い期間お世話になりましたが、以上ですべての問題が解決できました。 ありがとうございました。

Page: 1 |