title_parttitle_parttitle_part
静岡県浜松市であれこれソフトを開発している A.K.I Software のブログです。日々の開発日記やサーバー・セキュリティ関連の話題なども掲載。
<< 2024/04 >>123456789101112131415161718192021222324252627282930
《《《 ネットワーク機器の購入は Amazon で! 》》》
Powered by BLOM ライティングしてみました。
小さくも大きくも閉じたりもしません
09/12/15 03:58 / ゲーム開発

少し本業も落ち着いて・・・はいないのですが、また発作が起こって OpenGL で放置していたライティングのコードを書いています。

取りあえずライトを設定してなんとなくライティングされるようになったのですが、なんかおかしいです。
きちんとライティングされるポリゴンとされないポリゴンがあります。きっとパラメータがおかしいんだなと適当に変えていたのですが、改善される気配すらありません。
それどころかどんどんおかしくなります(^-^;

レンダリング結果をまじまじと眺めて推測すること1時間。

ライトパラメータじゃありませんでした。そう法線です。
(法線とは特定の面に対して垂直方向のベクトルの事です)

そういや、glNormal なんとかって関数があったなぁ、とコードを見てみますと、なんか適当なマジックナンバーが設定されたままになっています。
きっと、ここを変えたら改善されるだろう。と適当に変えていたのですが、これまた改善される余地は無し。

そろそろ勘とフィーリングだけではダメなようです。
きちんと考えてみることにします。

今作っているのは、面に囲まれたボックスの中に視点があり、光源は視点の後方からスポットとして視点と同じ方向に向けてあります。
視点はボックスの中心点からずれています。
これは北を向いている場合は、南にずらしています。中心点から50ずれている場合は、中心点から半径50の位置を円を描くように移動するわけです。
光源は更に視点の後方ですので、視点と同じ中心で同心円を描くように移動します。

まぁ、ぶっちゃけると3Dなダンジョンの中に居るわけですね。

ライトのベクトルだけ変更出来るようにしてみると、ライトの向きはきちんと変更されますので、この点については正しく計算されているようです。
ここまではOKです。

次にライティングの結果ですが、北を向いている時は正常にライティングされますが、東西に向けると暗くなります。正確には光が当たっていない判定がされています。

そらそうです。glNormal で Z 軸に対して法線が「全て手前(南)」に向いているからです。
法線が南を向いていますので視点が北を向いている時は正しく処理されますが、左右の壁の法線も全て南を向いていますので光が当たらない訳です。多分。

photo


茶色っぽい壁は正しくライティングされますが、下の床の法線は上を向いていませんので、おかしくなります。そこで図のように床の法線は上を向け、北の壁は南を向け、東の壁は西を向け、西からのぼったお日様は東へ向ける訳です。

サンプル書いたら期待通りのレンダリング結果になりましたので概念は理解しました。完璧です。多分。きっと。きっと?

しかし、ここで問題が。

これまた自作のモデリングツールには法線なんて考慮していません。
そういや、某3Dツールで面からぴょこぴょこと邪魔な垂直な線が出ていましたが、あれは法線を指していたのかと相変わらず間違ったアプローチから理解を深めています。

取りあえず多分理解はしたので、モデリングツールに法線のパラメータを入れ・・・るのは面倒なので本体側で無理矢理、3次元上の点から法線の向きを計算して処理するようにしました。きっと後から「あの時モデラーに入れておけば・・・」と後悔するんでしょうけど。

基礎知識って大切ですね。今更遅いですが。

しかし3D系アプリの開発者って凄いなぁ、としみじみ。
どんだけ頭がいいんでしょう。
かろうじて三角関数を使える程度な私は尊敬してしまいます。

[更新日付:2009/12/15 03:58:49]
トラックバックを見る(0)
Log Link [https://akisoftware.com/cgi-bin/blom.exe?akisoft+sl+bcfe835008c70d5d33a70c8ae76233cdd4decc20]
TB Link [https://akisoftware.com/cgi-bin/blom.exe?akisoft+tb+bcfe835008c70d5d33a70c8ae76233cdd4decc20]

記事へのコメント

コメントはありません

名前
コメントキー
 
コメントする時はキーを正確に入力して下さい
コメント
アドレスを含んだコメントはできません
© 2008-10 A.K.I Software all rights reserved.