トップページ > 過去ログ > 記事閲覧
光学迷彩のサンプルについて
名前:ジャム 日時: 2012/07/16 17:03

いつもお世話になっております。 さっそく質問させていただきたいのですが、pmdファイルに光学迷彩のシェーダを適用したところ、背景になじむようなテクスチャの張られ方がされずに、メッシュごとにランダムに配置にしたような張られ方になってしまい、困惑しています。 しかも、そのテクスチャ自体もpmdの奥にある物体等が描画されたものでもないです。 同じシェーダプログラムを読み込み、Render_Processの部分と同じコードを使用したのですが、うまくいっていないように見えます。 fxファイルの座標をビュー法線方向に少し移動させる部分をなくし、完全に背景と同化するのかもテストしてみましたが、結果は同じでした。 フォグは使用していません。 なにかわかることがありましたら是非ご享受ください。よろしくお願いします。

Page: 1 |

Re: 光学迷彩のサンプルについて ( No.1 )
名前:いっち 日時:2012/07/16 23:18

以下のサンプルプログラムのシェーダーコードと Render_Process関数を ジャムさんオリジナルのコードとマージしてみたけどうまくいかないということなのだと思いますが、 まず念のためにそのサンプルプログラム自体がジャムさんの環境で正しく動作するかご確認下さい。 > ttp://homepage2.nifty.com/natupaji/DxLib/program/dxprogram_3DAction_OpticalCamouflage.html 事象の再現するコードとデータをご提供頂ければ私の環境でも確認してみます。 それと事象の説明が文のみですと分かり難いので画面のキャプチャーがあるといいと思います。
Re: 光学迷彩のサンプルについて ( No.2 )
名前:ジャム 日時:2012/07/17 10:59

いっちさん、回答ありがとうございます。 URLのファイルをダウンロードし、exeファイル、cppファイルをコンパイルして実行の両方とも正しく動作しました。 私が書いた描画時のコードは、(といってもコピペですが) // 描画先を光学迷彩処理用の一時画面へ変更 SetDrawScreen( TempDrawScreen ) ; // 一時画面をクリア ClearDrawScreen() ; SetCameraPositionAndTarget_UpVecY( Camera::Inst()->GetViewPoint(), Camera::Inst()->GetTargetPoint()) ; // カメラに移す映像のアスペクト比を変更して 640x480 と範囲描画するようにする SetCameraDotAspect( 480.0f / 640.0f ) ; // ステージモデルの描画 int st = Facade::Inst()->GetStageHandle(); MV1DrawModel(st); // 描画先を裏画面に戻す SetDrawScreen( DX_SCREEN_BACK ) ; // 再びカメラの設定を行う( SetDrawScreen でカメラ設定がリセットされてしまうので ) SetCameraPositionAndTarget_UpVecY( Camera::Inst()->GetViewPoint(), Camera::Inst()->GetTargetPoint()) ; // ステージモデルの描画 MV1DrawModel( st ) ; MV1SetUseOrigShader(TRUE); SetUseVertexShader(m_VsShader); SetUsePixelShader(m_PsShader); // 光学迷彩処理用の画面画像を使用テクスチャ0にセット SetUseTextureToShader( 0, TempDrawScreen ) ; MV1DrawModel(m_ModelHandle); // 光学明細書利用の画面画像を使用するテクスチャから外す SetUseTextureToShader( 0, -1 ) ; MV1SetUseOrigShader(FALSE); カメラとステージは別クラスで扱っています。 このへんの処理の前後が怪しいのかな、と思うのですが、思うように直ってくれません。 画面キャプチャを以下に張っておきましたので、ご参照のほうよろしくお願いします。 ttp://43.atpages.jp/hisashix/jhg.jpg ※URLの先頭にh、43と//のwを3つ入れてください。
Re: 光学迷彩のサンプルについて ( No.3 )
名前:いっち 日時:2012/07/18 18:38

ご使用のDXライブラリのバージョンはおいくつでしょうか? 差し支えなければ最新版(3.08c)をお試し下さい。 それと、TempDrawScreen のサイズは縦横共に2のn乗になっているかご確認下さい。
Re: 光学迷彩のサンプルについて ( No.4 )
名前:ジャム 日時:2012/07/18 22:41

現在DXライブラリの最新版を使用しております。 TempDrawScreen = MakeScreen( 512, 512, FALSE ) ; という風にサンプルどおりに記述しました。 ウインドウのサイズは640*480にしています。
Re: 光学迷彩のサンプルについて ( No.5 )
名前:いっち 日時:2012/07/19 00:15

となりますと、私では思い当たる点がありません。 プロジェクト全体をご提供頂ければ私の環境でも試してみます。
Re: 光学迷彩のサンプルについて ( No.6 )
名前:管理人 日時:2012/07/22 01:00

私も特に原因となりそうな点は見つけられませんでした DXライブラリにバグがある可能性もありますので、 よろしければ現象が確認できるプログラムとそれに必要なデータファイルを BQE00322(あっとまーく)nifty.com (あっとまーく) を @ に置き換えてください に送っていただけないでしょうか?
Re: 光学迷彩のサンプルについて ( No.7 )
名前:ジャム 日時:2012/07/22 11:38

原因が判明いたしました。 単純にシェーダの読み込みの際に変数へのハンドルの代入を忘れていただけでした。 こんな初歩の初歩のミスでお手を煩わせてしまい、非常に申し訳ありません。 いっちさん、管理人さんお付き合いいただき本当にありがとうございました。

Page: 1 |