0

OpenGL を使用して 3D 迷路のプロジェクトを開発しています。プログラミングの知識が乏しいにもかかわらず、私はなんとかそれを構築し、テクスチャを追加し、マウスとキーボードで操作しました (ただし、ほとんどの部分はネットから盗みました)。今、私は照明にこだわっています。

私のアイデア (有名なゲーム SCP-087 に似ています) は、光の範囲が短いヘッドライトを作ることでした。私は OpenGL と法線のライティングについて多くのことを読みましたが、それでもライトは奇妙でランダムに振る舞います。

カメラの周りで私の世界を動かす(翻訳する)機能があります。Render() 関数で変換する前に、コードの先頭に light0 を配置すると、そのライトはカメラで「配置されたまま」であり、世界はそれらの周りを移動する必要があることを理解しています-それは簡単に聞こえます。しかし、うまくいかないようです。壁のほとんどは、横向きに立っていると明るくなります (壁を反対側に向けると完全に暗くなります)。

私の他の問題は法線です。私の法線がうまく指定されていないことは確かですが、どのように見えるべきかわかりません。私は壁に三角形のストリップを使用しています(理論的には効率を向上させるためですが、実際には私の気まぐれです)、三角形のストリップで作られたまっすぐな壁に法線を指定する方法をどこにも見つけることができませんでした(面に法線を付ける方法、実際には、1 つの面を定義する 2 つの頂点しかありません)。単純な四角形の 1 つの壁を作成し、1 つの面に対して 1 つの単位ベクトルの長さを 4 つの垂直に接続しても、改善は見られませんでした。

OpenGL ステート マシンのパラメータ、特に減衰を適切に処理できません。コードの変更は最終的な照明に影響を与えないようです。

私は現在、OpenGL の照明についてどこを検索し、何を読むべきかわかりません。追加のライブラリ (glu.h を除く) を使用せずに、非常にシンプルにしたいと考えています。この問題について手を貸してくれますか、または役立つ知識のソースを紹介してもらえますか (簡単な例が必要です...)?

4

0 に答える 0