トップページ > 記事閲覧
シャドウマップで、スフィア設定したモデルの影が表示されない
名前:しろ 日時: 2015/02/13 23:23

いつも有難く使用させていただきております。 スフィアが設定されているpmd/pmxのモデルを使用し、 ライブラリのシャドウマップ関数で表示した際、 影が上手く表示されませんでした。 検証を行い、同モデルでスフィアの設定のみを外したデータを使用すると、シャドウマップの影が表示されることを確認しております。 3Dの仕組みには疎く、不具合なのか、仕様であるのかの判断もつきませんでしたので、 一度ご確認いただけますと幸いです。 使用したモデルは、自分が作成したものでない為、 ここでの記載は一旦、控えさせていただきます。 ※リファレンスのMakeShadowMap項目に記載されていたコードを元に、 該当のモデルと、任意の地形用のモデルのみを表示して、確認を行っております。
メンテ

Page: 1 |

Re: シャドウマップで、スフィア設定したモデルの影が表示されない ( No.1 )
名前:管理人 日時:2015/02/15 04:17

ご指摘ありがとうございます、お使いのバージョンは暫定最新版( DxLibVCTest.exe 等 )でしょうか? 手元の環境でMakeShadowMapのサンプルプログラムにスフィアマップを使用したpmdモデルを 使用してみたところ、輪郭線の影は表示されたのですが、本体の影が表示されないというバグがあったので修正しました ただ、修正したバグは公開されている Ver3.13d には無いもので、最近の暫定最新版にのみあるバグなので、 もしお使いのバージョンが暫定最新版ではないのでしたら別の原因かもしれません・・・ とりあえずバグを修正したものをアップしましたので、 よろしければこちらをお試しになってみてください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_DevCppTest.exe // Dev-C++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
メンテ
Re: シャドウマップで、スフィア設定したモデルの影がひょう ( No.2 )
名前:しろ 日時:2015/02/15 14:07

ご対応ありがとうございます。 検証に使用した「DxLib.h」のバージョン記載を確認した所、「3.13d」となっておりました。 最近、暫定最新版を入れた覚えはありませんが、 色々と試行錯誤(ライブラリ自体の改造はしていません)を行っていたので、記憶が曖昧であることは否定できません… ですが、発生した現象は、 ご返答内容の通り、輪郭のようなものしか表示されていない状態であり、 修正版を導入することで、影が表示されることを確認いたしました。 シャドウマップについては解決なのですが、 暫定版を導入後、GetUseDirect3DDevice9()の戻り値が"0x00000000"になるようになりました。 暫定版であるために発生している可能性もありますが、 一応、ご報告させていただきます。
メンテ
Re: シャドウマップで、スフィア設定したモデルの影が表示されない ( No.3 )
名前:管理人 日時:2015/02/16 00:04

DxLib.h のバージョン記載が 3.13d でしたら、暫定最新版ではないです ( 暫定最新版は 3.13e なので ) 私の環境では 3.13d でも影が表示されましたので、どうもしろさんの環境では 正常に動作しないようになってしまっているようです・・・ > シャドウマップについては解決なのですが、 > 暫定版を導入後、GetUseDirect3DDevice9()の戻り値が"0x00000000"になるようになりました。 > 暫定版であるために発生している可能性もありますが、 > 一応、ご報告させていただきます。 暫定最新版では Direct3D 11 が使用できる環境では Direct3D 11 を使用するようになっているので、 GetUseDirect3DDevice9 の戻り値は NULL( 0x00000000 )になります( Direct3D 9 を使用していないので ) GetUseDirect3DDevice9 をお使いでしたら、DxLib_Init の呼び出しの前に SetUseDirect3DVersion( DX_DIRECT3D_9EX ) ; という記述を増やしてください、使用する Direct3D のバージョンが Direct3D 9Ex になり、 GetUseDirect3DDevice9 の戻り値も NULL ではなくなります ( また、もし Direct3D 9Ex でも不都合で、Direct3D 9 を使用したい、ということでしたら SetUseDirect3DVersion( DX_DIRECT3D_9 ) ; と記述してください ) ただ、Direct3D 9Ex を使用した場合は暫定最新版でもスフィアマップ使用モデルは影が表示されないかもしれません・・・
メンテ
Re: シャドウマップで、スフィア設定したモデルの影が表示… ( No.4 )
名前:しろ 日時:2015/02/19 23:12

おっしゃる通り、 SetUseDirect3DVersion( DX_DIRECT3D_9EX )を入れることで、GetUseDirect3DDevice9は動作いたしましたが、 影が輪郭だけになりました。 それでも選択の幅が広がったので、 プログラムを進めながら、取捨選択していきたいと思います。 ありがとうございました。
メンテ
Re: シャドウマップで、スフィア設定したモデルの影が表示されない ( No.5 )
名前:管理人 日時:2015/02/21 02:05

うーんやはり Direct3D9 では輪郭のみになってしまいましたか・・・ もしよろしければ SetUseDirect3DVersion( DX_DIRECT3D_9EX ) ; を入れて実行した際に 作成される Log.txt の内容をこちらの掲示板に貼り付けていただけないでしょうか?
メンテ
Re: シャドウマップで、スフィア設定したモデルの影が表示… ( No.6 )
名前:しろ 日時:2015/03/07 10:39

すこしドタバタしてしまい、 確認が遅れてしまいました…… Log.txtの内容は以下通りとなっております。 ----- 0:システムの情報を出力します 0: DXライブラリ Ver3.13e 0: 論理プロセッサの数 : 4 0: OS Windows7 ( Build 7601 Service Pack 1 ) 100: 現時点のCPU動作速度:大体3.16GHz 137: MMX命令を使用します 138: SSE命令が使用可能です 139: SSE2命令が使用可能です 139: CPUベンダ:GenuineIntel 142: CPU名: Intel(R) Core(TM) i5-3570 CPU @ 3.40GHz 143:COMの初期化... 成功しました 149:メモリ総量:3552.45MB 空きメモリ領域:1470.77MB 150:タイマーの精度を検査します 151:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 152: パフォーマンスカウンターを使用します タイマー精度 : 3320.380000 KHz 154: ソフトの二重起動検査... 二重起動はされていませんでした 156:ウインドウクラスを登録します... 登録に成功しました 157:ウインドウモード起動用のウインドウを作成します 195:ウインドウの作成に成功しました 195:ウインドウを表示します 230:IMEを無効にしました 232:ウインドウスタイルをウインドウモード用に変更します... 完了 254:DirectInput関係初期化処理 255: XInput DLL の読み込み中... 成功 261: DirectInput7 の取得中... 成功 277: 引き続き初期化処理... 初期化成功 279: ジョイパッドの初期化... 286: ジョイパッドの初期化は正常に終了しました 287: マウスデバイスの初期化... 初期化成功 288: キーボードデバイスの初期化... 初期化成功 290:DirectInput 関連の初期化は正常に終了しました 292:DirectSound の初期化を行います 293:DirectSound インターフェースの取得を行います.... 成功 298:引き続きインターフェースの初期化処理... 成功 386: DirectSound デバイスを列挙します 387: モジュール名: ドライバ記述:プライマリ サウンド ドライバー 388: モジュール名:{0.0.0.00000000}.{952ada32-e4d1-4fb5-8c08-a3d5e27382ed} ドライバ記述:スピーカー (VIA High Definition Audio) 389: モジュール名:{0.0.0.00000000}.{5f454b7f-0fb1-46f8-8805-ebf3f2e24731} ドライバ記述:SPDIF Interface (TX1) (VIA High Definition Audio) 389: モジュール名:{0.0.0.00000000}.{8e9bdf74-5522-45bd-9734-f0766b155ca7} ドライバ記述:HD Audio HDMI out (VIA High Definition Audio) 391: 最大サンプリングレート:200.00KHz 最小サンプリングレート:0.10KHz 392: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB 393: 利用可能サンプリング精度 394: プライマリ 16bit = OK 8bit = OK 395: セカンダリ 16bit = OK 8bit = OK 396: 利用可能チャンネル 397: プライマリ MONO = OK STEREO = OK 397: セカンダリ MONO = OK STEREO = OK 399:DirectSound の初期化は正常に終了しました 403:DirectDraw オブジェクトの取得を行います.... 成功 408:引き続き初期化処理... 初期化に成功しました 442:IDirect3D9Ex オブジェクトを取得します.... 成功 445:IDirect3DDevice9Ex オブジェクトを取得します.... ハードウエア頂点演算を使用します 714:成功 716:Driver:nvd3dum.dll Description:NVIDIA GeForce GT 430 717:画面のフォーマットは D3DFMT_X8R8G8B8 です 717:16bit Zバッファフォーマットは D3DFMT_D16 です 718:24bit Zバッファフォーマットは D3DFMT_D24X8 です 719:32bit Zバッファフォーマットは D3DFMT_D24X8 です 719:16bit カラーフォーマットは D3DFMT_R5G6B5 です 720:32bit カラーフォーマットは D3DFMT_X8R8G8B8 です 721:アルファ付き 16bit カラーフォーマットは D3DFMT_A4R4G4B4 です 721:アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 722:アルファテスト用 16bit カラーフォーマットは D3DFMT_A1R5G5B5 です 723:アルファテスト用 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 723:DXT1テクスチャフォーマットはD3DFMT_DXT1 です 724:DXT2テクスチャフォーマットはD3DFMT_DXT2 です 725:DXT3テクスチャフォーマットはD3DFMT_DXT3 です 725:DXT4テクスチャフォーマットはD3DFMT_DXT4 です 726:DXT5テクスチャフォーマットはD3DFMT_DXT5 です 727:描画用 16bit カラーフォーマットは D3DFMT_R5G5B5 です 727:描画用 32bit カラーフォーマットは D3DFMT_X8R8G8B8 です 728:描画用アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 729:描画用ABGR整数16ビット型カラーフォーマットは D3DFMT_A16B16G16R16 です 729:描画用ABGR浮動小数点16ビット型カラーフォーマットは D3DFMT_A16B16G16R16F です 730:描画用ABGR浮動小数点32ビット型カラーフォーマットは D3DFMT_A32B32G32R32F です 730:描画用1チャンネル整数8ビット型カラーフォーマットは D3DFMT_L8 です 731:描画用1チャンネル整数16ビット型カラーフォーマットは D3DFMT_L16 です 732:描画用1チャンネル浮動小数点16ビット型カラーフォーマットは D3DFMT_R16F です 732:描画用1チャンネル浮動小数点32ビット型カラーフォーマットは D3DFMT_R32F です 733:描画用2チャンネル整数8ビット型カラーフォーマットは D3DFMT_A8B8G8R8 です 734:描画用2チャンネル整数16ビット型カラーフォーマットは D3DFMT_G16R16 です 734:描画用2チャンネル浮動小数点16ビット型カラーフォーマットは D3DFMT_G16R16F です 735:描画用2チャンネル浮動小数点32ビット型カラーフォーマットは D3DFMT_G32R32F です 736:一度に描画できるプリミティブの最大数:16777215 737:対応している最大頂点インデックス:16777215 738:同時にレンダリングできるバッファの数:4 738:最大テクスチャサイズ 幅:8192 高さ:8192 739:テクスチャステージテンポラリレジスタ:使用可 740:減算合成のハードウェア対応:ネイティブ 740:ハードウェア頂点シェーダーバージョンコード:300 741:エミュレーション頂点シェーダーバージョンコード:エミュレーション無し 741:ピクセルシェーダーバージョンコード:300 748:バックバッファロック転送の時間:68nsec 一時的な描画可能バッファを使用した転送の時間:460nsec 769:バックバッファロックを使用します 770:Zバッファを作成します.... 成功 791:プログラマブルシェーダーを使用します 829:フォントの初期化を行います 831:フォントの初期化は正常に終了しました 832:文字コードバッファの初期化を行います... 完了しました 4782:ウインドウを閉じようとしています 4791:ウインドウが破棄されようとしています 4801:ソフトを終了する準備が整いました 4832:フォントの初期化を行います 4833:フォントの初期化は正常に終了しました 4840:Direct3DDevice9 の解放 2 4870:d3d9.dll の解放 1 4874:DirectInput 関連の終了処理... 完了 4914:DirectSound の終了処理は正常に終了しました 4947: 4947:Alloc memory dump 4948: Total size:0(0.000kb) Alloc num:0 4949: -----
メンテ
Re: シャドウマップで、スフィア設定したモデルの影が表示されない ( No.7 )
名前:管理人 日時:2015/03/08 04:32

Log.txt を貼り付けて頂きありがとうございます 拝見する限りではお使いの GPU は Direct3D 11 に対応している GeForce GT 430 なので、 当然 Direct3D 9EX にも完全に対応しているはずで、本件の現象が発生する原因が推測できません (・・;; 手元に GeForce GT 430 が搭載されたPCがあれば色々試して原因を突き止められると思いますが、 残念ながら手元にその環境が無いのでそれは難しそうです・・・ なので、申し訳ありません、Direct3D 11 と Direct3D 9EX のどちらを使用するか選択できるように する等の対応をしてください m(_ _;m あと、GPU のドライバが原因である可能性も僅かにありますので、もし最新のドライバを インストールされていませんでしたら、こちらのページから GeForce GT 430 用の 最新ドライバをダウンロードして、インストールしてみてください http://www.nvidia.co.jp/Download/index.aspx?lang=jp
メンテ
Re: シャドウマップで、スフィア設定したモデルの影が表示… ( No.8 )
名前:しろ 日時:2015/03/15 23:02

ドライバを更新し、試してみましたが、 見た目上、変化は見受けられませんでした。 自分に原因を特定できる知識や技術があれば良かったんですが、 力不足で申し訳ないです…… でも、プログラム自体は少しづつ進めているので、 もし何か分かることがあったら、また書き込みさせていただきます!
メンテ

Page: 1 |

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

   クッキー保存