3

ライティングを紹介するいくつかのチュートリアルでは、アンビエント、ディフューズ、スペキュラーの 3 種類のライトすべてで照らされた球体の例から始めます。次に、たとえば個々のライトをオフにすることで、周囲のライトがオブジェクトの均一な照明を担当し、拡散ライトが特定の方向から来て、鏡面反射光のおかげで表面の明るいスポットを観察できることを簡単に確認できます。 .

ユーザーが任意に回転できる立方体という、より単純な例で同じ手順を繰り返してみました。私が実際に期待していたのは、似たような写真でした: OpenGL は幾何光学の規則にある程度従う必要があり、光源とカメラの両方の位置が指定されている場合、どちらか一方に明るいスポットが 1 つだけあるはずです。立方体の面で、光源をカメラに直接反射する面です。

ただし、一様に照らされた顔しか得られず、明るいスポットは得られませんでした。それで、私の質問は、実際にそれを手に入れることは可能ですか?言い忘れていましたが、私は可能な限り単純な三角形分割を使用しました。面ごとに 2 つの三角形です。もう1つ、私はOpenGL ES 1.1を使用しているため、シェーダーはありません。

4

3 に答える 3

1

照明は、立方体の各面にある頂点の量に大きく依存します。シェーダーを使用していないため、ライティングは頂点ごとに計算されます。しかし、計算は面に対して垂直に方向付けられた面法線に依存し、面ごとに計算されます。これは 3 つの頂点を意味します。法線は面の各頂点で同じであるため、各頂点の光の強度も同じです。照明効果は見えません。法線を正しく計算すると、立方体のさまざまな側面の色に違いが見られるはずです。片側にスポットを当てるには、立方体の各面のグリッド解像度を上げ、スポット ライトの円錐に適切な角度を適用するか、スポットライトから立方体までの距離を最小限に抑える必要があります。

            n1         n2
           /          /
          /          /
        v1 ---------- v2
         |         / 
         |       /
         |  n3 /    
         | / /
         |//
         |
        v3            v4

この素敵なチュートリアルを見てください。基本的なメカニズムを非常にわかりやすい方法で説明しています: http://www.opengl-tutorial.org/beginners-tutorials/tutorial-8-basic-shading/

于 2014-01-19T08:35:02.320 に答える