3Dシェーディング/ライティングのサポートが必要


8

3Dゲームでシェーディングをどのように処理しますか?私は立方体で作られた木の片側を遮光する指向性光源を持っています。残りの3辺はすべてアンビエントシェーディングのみを取得します。したがって、アンビエントシェーディングされた2つの側面を見ると、3D効果は失われます。何か不足していますか?光源から最も遠い側をさらに暗くする必要がありますか?私はフォールアウト3を見てみましたが、これは彼らが何をしているように見えますが、Minecraftは2つの反対側のライトと残りの2つの反対側のダークでグラスマウンドをシェーディングし、2つのライトに2つの指向性ライトがあるという効果を与えます。シェーディングされたサイドと暗いシェーディングされたサイドのアンビエントライト。

回答:



5

あなたの問題は、あなたの周囲の光が一定の色であることです。光は通常上から来るため、実際には、環境光は上からは明るく、下からは暗くなる傾向があります。

これを修正するためにできることはたくさんあります。少なくとも、「上部アンビエントカラー」、「下部アンビエントカラー」、および「上部アンビエント方向」の頂点シェーダー定数が必要です。

頂点シェーダーで、「上部アンビエント方向」と頂点法線のドット積を取り、その結果を使用して「上部アンビエントカラー」と「下部アンビエントカラー」の間を行き来します。

float value = dot( vertex_normal, top_ambient_direction ) * 0.5 + 0.5;
ambient_color = lerp( bottom_ambient_color, top_ambient_color, value );

これはアンビエントの見栄えを良くする最も簡単な方法の1つで、PS2およびXBOX1ゲームでよく使用されていました。現代のゲームは、「アンビエントキューブマップ」または「アンビエント球面調和係数」を使用してさらに進んでいます。


3

これは複雑なトピックであり、私はそれについて話す資格がほとんどありませんが、試してみるつもりです。多くのゲームは、複数のサーフェスで跳ね返る光を考慮に入れて事前にベイクされたライトマップを使用し、それをダイナミックライティングと組み合わせて、高速で現実的で見栄えの良い環境を作成します。おそらく、リアルタイムで軽い跳ね返りをする最新のゲームがあるでしょう。

覚えておくべきことは、光は距離とともに減衰するということです。ランプが表面に対して傾いている場合、近い方の端が遠い方の端よりも明るくなります。ランプが斜めにではなくまっすぐに照らしている場合、物事は非常に偽物に見える傾向があります。

Minecraftの照明は特別です。それは、光が世界全体に拡散する熱のように扱われる奇妙なシステムを使用しているためです。http//www.minecraftwiki.net/wiki/Lightこれは、簡単に汎用ソリューションに拡張されていないです。

私が見た中で最もクールに見える効果は、アンビエントオクルージョンと呼ばれています。これは高価であり、通常はプリベークされたソリューションでのみ使用されますが、壁が周囲の光を遮るので、部屋の隅がどのくらい暗いかを考慮に入れます。壁の中央には、半球相当の光が当たっていますが、3つのサーフェスが交わる角には、半球半球(1/8球)相当の光しかありません。https://secure.wikimedia.org/wikipedia/en/wiki/Ambient_occlusion

照明システムについては、膨大な量の書き込みがあります。周りを検索すると、おそらくあなたに役立つでしょう。


0

ライティング/シェーディングは、バイナリの決定よりも高度である必要があります。ブロックはライトによって完全に点灯または消灯していないのではなく、部分的に点灯している場合があります。時々、顔は完全に光沢があるはずです。その場合、それは直接光に当たっています。周囲の光がまったく影響を受けない場合は、周囲の光だけが必要な場合があります。ただし、部分的に覆い隠されている場合は、完全に照らされた状態と完全に照らされていない状態の間に明るい値を与える必要があります。

標準の基本的な照明方法は、入射光線と照明している顔の表面法線との間の角度の差に基づいて、ゼロライトから最大ライトにシフトします。

サーフェスの法線が等しい(または、見方によっては反対)場合は、最大の明るさになります。入射光と表面法線の間の角度が大きくなると、その光からその面に届く光が少なくなります。

このように、2つのライトがある場合、各面は、各ライトがその角度に基づいて各面に与える明るさの組み合わせの明るさを受け取る必要があります。

これは、単一の顔が照らされているかどうかを判断しようとするよりもはるかに自然なはずです。サーフェスがライトから遠ざかるにつれて自然なグラデーションができ、複数のライトの影響を受けるサーフェスのバランスが取れます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.