部屋の中心にキューブと光源が1つあるメッシュ(ex。sphere)を作ってみましょう。どのようにしてを高速で簡単に作ることができますか? "標準"(固定)関数のみを使って、OpenGLでシャドウキャスティングをしますか?注:結果には、キューブと球のシャドウも含まれている必要があります。OpenGLでシーンに依存しないシャドウを簡単に作成する方法
答えて
球のシルエットを生成できる場合は、shadow volumesを使用できます。 nVidiaハードウェアも固定機能shadow mappingを公平にサポートしています。
シャドウボリュームには、非常に高い塗りつぶしの要件があるという欠点があります。陰影マップはより良いことができますが、余分なパスが必要です。
1台の平面に投影する場合は、単にproject the object on to a planeにする方が簡単です。
ポイントは普遍的なアルゴリズムを使用することです - 球のシルエットだけではない=)しかし、とにかく感謝! =) – shybovycha
申し訳ありませんが、もう少し2番目のリンクをクリックしていない...はい、あなたはそうだった、シャドウマッピングは十分であり、私は自分でそれを発見しました(愚かな私)=) – shybovycha
@shybovycha: ) – Goz
速くて簡単な方法はありません。それぞれに独自の賛否両論がある、異質の技術がたくさんあります。シャドウボリュームテクニック(http://iuiz.github.com/VolumeShadow/)を使って、非常に簡単なコードを使ってシャドウを作成するgithubでホストしているプロジェクトを見ることができます。しかし、それはJavaで書かれていますが、他の言語に移植するのは難しいことではありません。
シャドウを作成する最も重要な方法は、シャドウマッピングメソッドと呼ばれ、光源(シャドウキャストオブジェクトの光源にあるカメラで)をテクスチャにレンダリングします。 2番目のテクニックは、シャドウ・ボウルメ(Doom3で有名)メソッドです。
ありがとうございます、しかし私はすでにアイデアを得ました=)射影影は十分である=) – shybovycha
私はStencilBuffersを使用して1つの方法を見つけました。ちょっと混乱して、私はついにアイデアを得ました。これは、最も難しいのが各光源をループしてすべてのシーンオブジェクトを投影するということです。これは、テクスチャのシャドーイングよりも美しく見え、ボリュメトリックなシャドウよりも速く動作します。 hereとhereはいくつかのリソースであり、マトリックスの乗算のステップを理解するのに役立ちました(これは、私がディノのデモを見ているときに私を少し混乱させました)。私の場合、この方法は最も理解しやすく、使いやすいです。解くべき唯一の問題は、乗法行列の計算方法です。
この方法は、テクスチャas shown hereを使用して少し変更することができますが、
ありがとうございました! =)
BTW-「標準機能」は実際にあなたが探している表現ではありません。 「固定機能」はそれに似ていますが、シェイダーは今では数年前から「標準」になっています。 – Kos
うん、私は私の質問を構成するときにこれを呼び出す方法を考えていた。ありがとう! =) – shybovycha