トップページ > 記事閲覧
影とSetUseLighting
名前:名無三 日時: 2022/03/25 16:13

何度もすいません、現状標準の影機能はSetUseLighting(FALSE)によって描画されなくなりますが、これをライティングと切り離すことはできますでしょうか?
メンテ

Page: 1 |

Re: 影とSetUseLighting ( No.1 )
名前:管理人 日時:2022/03/26 05:20

すみません、『ライティングと切り離す』というのは具体的にはどのような意味でしょうか?
メンテ
Re: 影とSetUseLighting ( No.2 )
名前:名無三 日時:2022/03/26 06:47

現状、SetUseLighting(FALSE)とした場合にはライト処理と影処理がどちらも行われなくなりますが、影はそのままにライト処理だけ行わなくする設定があれば… という形です。 ゲーム内にて草をはやそうとしている際に井形に組んだ影ができてしまうため、ライティングを切って標準ライトによる陰をつけないようにしていたのですが、 それだと影の効果を得られない為影の処理を切り離すことはできるのかと考えました。
メンテ
Re: 影とSetUseLighting ( No.3 )
名前:管理人 日時:2022/03/27 07:51

> 現状、SetUseLighting(FALSE)とした場合にはライト処理と影処理がどちらも行われなくなりますが、影はそのままにライト処理だけ行わなくする設定があれば… > という形です。 影処理はライト処理の一部なので、影処理はそのままにライト処理を行わなくする、というのは難しいです ( 仮にそれを実現しようとすると、シェーダーコードの容量が倍になります… ) > ゲーム内にて草をはやそうとしている際に井形に組んだ影ができてしまうため、ライティングを切って標準ライトによる陰をつけないようにしていたのですが、 > それだと影の効果を得られない為影の処理を切り離すことはできるのかと考えました。 草の影を( 地面などのモデルに )表示しつつ、草のライティングを行わないようにしたい、ということでしょうか? それでしたら草を描画する際にだけ SetUseLighting(FALSE) を実行すれば実現できそうですが、 それでは名無三さんの意図する処理にはならないのでしょうか?
メンテ
Re: 影とSetUseLighting ( No.4 )
名前:名無三 日時:2022/03/27 11:34

難しい点承知しました。 すいません、草に落とす影についてでした。 こちらがライトなしの草で drive.google.com/file/d/1bhLl6Bll7fi3SVGWZugdhuo_2_xi2I0o/view?usp=sharing こちらがライトありの草です。 drive.google.com/file/d/1luEdr9XqzT4HHFZ_53ltmbHpx1nv7UJC/view?usp=sharing 草に影を落とし、なおかつライトなしのようにシェーディングの利かない状態としたいと考えています。
メンテ
Re: 影とSetUseLighting ( No.5 )
名前:管理人 日時:2022/03/29 02:42

なるほど、草に影を落としたいということだったのですね 現状の機能で名無三さんが希望する処理を実現する方法を考えてみたのですが、思いつきませんでした なので変な機能ではあるのですが 『ライト処理でライトの方向とポリゴンの向きの角度差による明るさの減衰を行うかどうかを設定する関数』 を追加しました よろしければその関数を追加したバージョンをダウンロードしてください m(_ _)m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.3 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい) 追加した関数は以下の関数です // 3D描画のライティング計算で角度減衰を行うかどうかを設定する // UseFlag TRUE:角度減衰を行う( デフォルト ) FALSE:角度減衰を行わない int SetUseLightAngleAttenuation( int UseFlag ) ; ライト処理がONの場合に草が向きによって暗くなってしまうのは、草の向きがライトの向きと完全に 対面になっていない場合、対面の角度からずれているほど暗くなるからであるわけですが、 この『ライトの向きとポリゴンの向きがずれていたら暗くする』処理を行うかどうかを SetUseLightAngleAttenuation で設定することができます 要は草の描画の前に SetUseLightAngleAttenuation( FALSE ); を実行すると、 草の向きに関わらず明るさが最大で描画されるようになります( ライトの向きと草の向きが完全に 対面だった場合の明るさで描画されます ) こうすることで擬似的にライト無しの場合と同じような見た目になると思いますので、 よろしければお試しください m(_ _)m ( 草の描画が終わった後は SetUseLightAngleAttenuation( TRUE ); を実行して設定を元に戻してください )
メンテ
Re: 影とSetUseLighting ( No.6 )
名前:名無三(解決) 日時:2022/03/29 22:09

ありがとうございます、期待通りの描画を行うことができました
メンテ

Page: 1 |

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

   クッキー保存