トップページ > 記事閲覧
サンプル"3Dアクション基本+深度値"についての質問
名前:おこた 日時: 2014/09/03 22:01

"3Dアクション基本+深度値を利用した影表現基本"を元に、影の表現を行ってみたのですが モデルのサイズが、サンプルプログラムに比べかなり小さい(サンプルのモデルが大きすぎる?)ため、 SetupCamera_Orthoの引数が、サンプルのままの"13050.0f"のままだと、影が非常に粗く表現されて しまいます(ほぼ四角)。 これを回避するために、SetupCamera_Orthoへの引数を小さくすると、徐々にサンプルと同じ形の影に なるのですが、サンプルと同じぐらい鮮明な影を表現しようとすると"250.0f"ぐらいまで小さな値に する必要があります。 しかし、この値だとシェーダの描画範囲(?)が小さく、シェーダの効果を受けずに描画されるところが 出てきてしまいます。 SetupCamera_Orthoの引数、"1500.0f"ぐらいでモデルの影を鮮明に表現するにはどのようにすれば よいでしょうか?
メンテ

Page: 1 |

Re: サンプル"3Dアクション基本+深度値"についての質問 ( No.1 )
名前:管理人 日時:2014/09/04 00:34

モデルのスケールが小さい場合はサンプルのシェーダープログラム DirLight_DepthShadow_Step2PS.fx の以下の箇所 // テクスチャに記録されている深度( +補正値 )よりZ値が大きかったら奥にあるということで輝度を半分にする if( PSInput.LPPosition.z > TextureDepth + 25.0f ) { DefaultOutput.rgb *= 0.5f; } の、25.0f という数値も小さくする必要があるかもしれません よろしければ 25.0f の値を小さくしてから ShaderCompile.bat を実行してシェーダーをコンパイルして試してみてください
メンテ
Re: サンプル"3Dアクション基本+深度値"についての質問 ( No.2 )
名前:おこた 日時:2014/09/04 01:15

素早い、お返事ありがとうございます。 > の、25.0f という数値も小さくする必要があるかもしれません > よろしければ 25.0f の値を小さくしてから ShaderCompile.bat を実行してシェーダーをコンパイルして試してみてください 上記を試してみたのですが、残念ながら、地面に表示される影の粗さは変化しませんでした。 コンパイル自体ができていない可能性を考えて、if文をコメント化、また、"25.0f"の値をでたらめに大きくしてみると、 if文をコメント化すると、全体的に地面が暗くなり、でたらめに大きな値に変更すると、影が表示されなくなると言う 変化が現れたので、シェーダのコンパイルができていないと言う可能性は低いと考えています。 やはり全体的に、大きく作るのが無難なのでしょうか?
メンテ
Re: サンプル"3Dアクション基本+深度値"についての質問 ( No.3 )
名前:管理人 日時:2014/09/04 01:22

基本的にはモデルのサイズが小さくなることによって深度画像が荒くなるということはありませんので、 あと考えられるのは光の角度がサンプルと異なる、等でしょうか・・・ 鮮明さを上げる方法としては DepthBufferGraphHandle の解像度を上げるというというものありますが、 サンプルで既に 4096x4096 なので、その上のサイズとなると 8192x8192・・・あんまり現実的ではないかもしれません・・・
メンテ
Re: サンプル"3Dアクション基本+深度値"についての質問 ( No.4 )
名前:おこた 日時:2014/09/06 13:06

お返事ありがとうございます。 > 基本的にはモデルのサイズが小さくなることによって深度画像が荒くなるということはありませんので、 > あと考えられるのは光の角度がサンプルと異なる、等でしょうか・・・ なるほど、モデルの大小は関係ないですか。 今更ながら、自分の説明がへたで聞きたいことが正確に伝わってない部分があるような気がしたので、 以下に今回の事象の画像をアップしました(Bmpのため少し重めです)。 画像は、SetupDepthImage関数のカメラタイプ変更箇所の描画範囲が以下のようになっています。  左上:SetupCamera_Ortho(13050.0f);  右上:SetupCamera_Ortho(1500.0f);  左下:SetupCamera_Ortho(750.0f);  右下:SetupCamera_Ortho(250.0f);  http://www.blackbox.ne.jp/susr/test/shadow.bmp  禁止ワードのため、すべて全角にしてます。
メンテ
Re: サンプル"3Dアクション基本+深度値"についての質問 ( No.5 )
名前:おこた 日時:2014/09/06 18:15

新しいスレッドを立てた方がよいのかもしれませんが、もう1つ質問させてください。 配布されてる、DxLibModelViewerのプログラムは公開されているのでしょうか? と、言うのも、「表示」→「ブラー効果」を実装させたいと考えています。 物理演算を行う際に、「ブラー効果」の設定をはずすとバク転のような回転動作を行う際に 髪の毛がすごい勢いで伸びていくためです。ブラー効果の箇所だけでもよいので可能なら よろしくお願いします。
メンテ
Re: サンプル"3Dアクション基本+深度値"についての質問 ( No.6 )
名前:管理人 日時:2014/09/07 12:50

画像を拝見しました 正確に伝わっていると思います、私の想像していた通りの違いです > 配布されてる、DxLibModelViewerのプログラムは公開されているのでしょうか? 公開していません、ソースを整理して公開できるようにするのが大変なので非公開となっています (- -; ブラー効果は1フレームを何分割にもして描画した結果を合成しています 例えば秒間の描画コマ数が60の場合は1フレーム辺り0.017秒です ブラー効果の場合はこの0.017秒を4分割して、まずゲーム時間( ビューアーの場合はアニメーション時間 )を 0.00425秒進めた後に一回画面全体を描画してその結果を取っておきます、 次に再度0.00425秒進めて一回画面全体を描画したものをまた取っておきます、 これを計4回行って得られた4枚の画面全体画像を、半透明描画で合成します これがビューアーのブラー処理の方式です( 因みに市販されているゲームではこんな単純で 処理が重い実装方法ではなく、1回の描画でブラー効果が得られるような方式を使っています ) ブラー効果をONにすると物理が破綻しない理由は、恐らく「少しづつ時間を進めている」からだと思います なので、現在仮に秒間60コマでゲームを動かしているとしましたら、秒間120コマで 動かしたり、秒間180コマで動かしたりすれば同じ効果が得られると思います ( 尚、単純にコマ数を増やすとゲームの動作速度が2倍、3倍になってしまいますので、 そうならないようにキャラの移動速度やアニメーション速度をコマ数増加に合わせて 2分の1、3分の1にします ) 因みに物理が破綻しない効能に描画は関係ありませんので、仮に秒間120コマにしたとしても 描画は2コマに1回にすれば描画負荷は秒間60コマと同じになります よろしければお試しください
メンテ
Re: サンプル"3Dアクション基本+深度値"についての質問 ( No.7 )
名前:おこた(解決) 日時:2014/09/14 16:54

> 因みに物理が破綻しない効能に描画は関係ありませんので、仮に秒間120コマにしたとしても > 描画は2コマに1回にすれば描画負荷は秒間60コマと同じになります 教えていただいたように、上記のように処理することで、物理演算の破綻がなくなりました。 ブラー効果については、物理演算の破綻と関連性がないということで実装は見送りました。 いろいろと、教えていただきありがとうございました。
メンテ

Page: 1 |

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

   クッキー保存