3D時のライト設定について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
えん

3D時のライト設定について

#1

投稿記事 by えん » 14年前

3Dモデルを表示させる時のライトの設定についてなのですが、
標準のライトのみでは影が濃すぎる(光源と反対方向からモデルを見るとすごく暗い)ので
別のディレクショナルライトを標準ライトと逆の方向に設定したところ、明るくなりすぎてしまいました。
DxLibModelViewerのようにまんべんなくモデルを照らしたいのですが、そうしたい場合はカメラが回転するたびにライトの照射向きも回転させる、といった方法で正しいのでしょうか?

また、モデルをアニメ調(影をはっきり出させない・色がくっきりしてる感じ)に表示させたい場合にDXライブラリで設定するべきことはありますか?
それともモデル作成の時点でテクスチャにいろいろ工夫する、といった方法をとった方がよいのでしょうか?

この二点をどなたか回答していただけるとありがたいです。よろしくお願いいたします。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: 3D時のライト設定について

#2

投稿記事 by ISLe » 14年前

前者はアンビエントカラー、後者はディフューズカラーのパラメータを弄ってみると良いのではないでしょうか。

本格的なセルアニメ調にするのなら、プログラマブルシェーダーを駆使することになるでしょう。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 3D時のライト設定について

#3

投稿記事 by softya(ソフト屋) » 14年前

ライトに関してはISLeさんの言われる通りで、アニメ調(トゥーンシェード)に関してはMMDモデルなどのトゥーンシェードには対応していますし、自分でトゥーンにも出来ます。

「DXライブラリ置き場 3D関係関数リファレンスページ」
http://homepage2.nifty.com/natupaji/DxL ... .html#R1N1

参考。
「PMDファイルを読み込むときのトゥーンレタリング表示」
http://hpcgi2.nifty.com/natupaji/bbs/pa ... ew&no=2518
「トゥーンと環境光について?」
http://hpcgi2.nifty.com/natupaji/bbs/pa ... st&no=1891
「トゥーンについて」
http://hpcgi2.nifty.com/natupaji/bbs/pa ... st&no=1676
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

えん

Re: 3D時のライト設定について

#4

投稿記事 by えん » 14年前

トゥーン調については紹介していただいたところなどでいろいろ調べてみます。ありがとうございました!

光をまんべんなくあてる方法ですが、
ご指摘の通り標準ライトのアンビエントカラーを色々いじってみましたが、思うようになりませんでした。
アンビエントカラーの値をSetLightAmbColor( GetColorF( a, a, a, 0.0f ) ) として、aを0から1の間で動かしてみましたが
光が当たっているところも陰で暗くなっているところもまとめて白っぽくor黒っぽくなってしまい、
カメラとキャラクターの延長線に光源があると最初と同じくキャラクターが灰色になってしまいました。

他にもデフューズカラーをすべて0にして同様にしてみたのですが、
こちらは影が出なくなった(光の当たる角度によって暗くなったりしなかった)のですが、bmp以外のテクスチャやDrawSphere3Dで描いた線などの色がすべて黒や灰色になってしまいました。

説明下手で申し訳ありませんが、こんな感じでどうしてもうまく表示できませんでした・・・

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: 3D時のライト設定について

#5

投稿記事 by ISLe » 14年前

3Dモデルのアンビエントカラーとディフューズカラーを調整してみてください。

えん

Re: 3D時のライト設定について

#6

投稿記事 by えん » 14年前

すごく遅くなりましたが、私の使っているテクスチャが原因で白く発光してしまっていたようで、ライトのアンビエントをいじれば大丈夫だそうです。
ご回答ありがとうございました!

閉鎖

“C言語何でも質問掲示板” へ戻る