<< 2024/04 >> | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
|
ライティングしてみました。
09/12/15 03:58 / ゲーム開発
少し本業も落ち着いて・・・はいないのですが、また発作が起こって OpenGL で放置していたライティングのコードを書いています。
取りあえずライトを設定してなんとなくライティングされるようになったのですが、なんかおかしいです。 きちんとライティングされるポリゴンとされないポリゴンがあります。きっとパラメータがおかしいんだなと適当に変えていたのですが、改善される気配すらありません。 それどころかどんどんおかしくなります(^-^; レンダリング結果をまじまじと眺めて推測すること1時間。 ライトパラメータじゃありませんでした。そう法線です。 (法線とは特定の面に対して垂直方向のベクトルの事です) そういや、glNormal なんとかって関数があったなぁ、とコードを見てみますと、なんか適当なマジックナンバーが設定されたままになっています。 きっと、ここを変えたら改善されるだろう。と適当に変えていたのですが、これまた改善される余地は無し。 そろそろ勘とフィーリングだけではダメなようです。 きちんと考えてみることにします。 今作っているのは、面に囲まれたボックスの中に視点があり、光源は視点の後方からスポットとして視点と同じ方向に向けてあります。 視点はボックスの中心点からずれています。 これは北を向いている場合は、南にずらしています。中心点から50ずれている場合は、中心点から半径50の位置を円を描くように移動するわけです。 光源は更に視点の後方ですので、視点と同じ中心で同心円を描くように移動します。 まぁ、ぶっちゃけると3Dなダンジョンの中に居るわけですね。 ライトのベクトルだけ変更出来るようにしてみると、ライトの向きはきちんと変更されますので、この点については正しく計算されているようです。 ここまではOKです。 次にライティングの結果ですが、北を向いている時は正常にライティングされますが、東西に向けると暗くなります。正確には光が当たっていない判定がされています。 そらそうです。glNormal で Z 軸に対して法線が「全て手前(南)」に向いているからです。 法線が南を向いていますので視点が北を向いている時は正しく処理されますが、左右の壁の法線も全て南を向いていますので光が当たらない訳です。多分。 茶色っぽい壁は正しくライティングされますが、下の床の法線は上を向いていませんので、おかしくなります。そこで図のように床の法線は上を向け、北の壁は南を向け、東の壁は西を向け、西からのぼったお日様は東へ向ける訳です。 サンプル書いたら期待通りのレンダリング結果になりましたので概念は理解しました。完璧です。多分。きっと。きっと? しかし、ここで問題が。 これまた自作のモデリングツールには法線なんて考慮していません。 そういや、某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] 記事へのコメント コメントはありません |
@AKISoftOfficialをフォロー
掲示板 サポートBBS PMailServer BBS アクセスの多い記事
最新記事(カテゴリ別)
PMailServer2 Version 2.53 をリリースしました。
04/08 00:50 フリー版からの製品版移行時の MTA 並列数について 02/17 23:52 メールサーバーの開発を始めて20年 02/07 21:46 PMailServer2 Version 2.52a をリリースしました。 12/26 14:02 PMailServer2 Version 2.52 をリリースしました。 10/01 10:48 PMailServer2 Version 2.51b をリリースしました。 09/19 01:43 PMailServer2 Version 2.51b(仮) Memo 09/12 00:33 PMailServer2 Version 2.51a をリリース、及び脆弱性についてのお知らせ 09/05 01:15 PMailServer2 Version 2.51a Memo 08/21 00:48 アドレスV125(K5)のスターターリレーの交換 08/04 10:10 最新コメント
コメントはありません
UUアクセス数
今日は 8回
昨日は 501回 トータル 306425回 3ヶ月記事別ランキング
プロフィール
Z80から68系、8086系を経由して
Pascalに移行。現在は Delphiをメインに C/C#も囓ってみたり。 「無い物は作れ」の精神で年がら年中なにかを作っています。 すぐ自前で作りたがるので無駄に工数が上がったりして自爆してみたりもします。 好きな物は麺類とお煎餅 Blom内検索
BLOM Version 1.39 ©2007-15 A.K.I Software all rights reserved. |