16

最近、ランドスケープコードを作成し、シーンに拡散照明を追加しましたが、残念ながら、影はありません。私はOpenGLで影を付ける方法を探して何時間もウェブを見回しましたが、それらはすべてひどく複雑に見えました。独自のデモプログラムに非常にユニークです。

影を作る簡単な方法はありますか?

4

2 に答える 2

30

いいえ。ラスタライズはこれで非常に悪いです(最近のAAAゲームでさえ顕著な影のアーティファクトがあります)が、誰もがそれと一緒に暮らしています。

ソリューションには次のものが含まれます(最も簡単/最も貧弱なものから最も良い/最も難しいものまで):

  • 影はありません。単に暗い色での閉塞を説明してください。xNormalBlender
  • キャラクターのおおよその影が必要な場合は、透明でぼやけたテクスチャを備えた、地面にある単純なフラットポリゴンで十分です。たとえば、ゼルダのスクリーンショットを参照してください。最近のゲームでさえ、これを使用しています。
  • ライトマップ。静的ジオメトリのみですが、完全な照明(事前計算済み)。実装はかなり簡単です。多くのツールが存在します。
  • カーマックによって普及したシャドウボリューム。Pixelは完璧で、実装はかなり簡単で、かなり遅いです。いくつかのオブジェクトに適しています。ソフトシャドウはありません。
  • シャドウマップ。openGLを作成したことがない場合は、実装が少し難しいです。正しく理解するのは難しい。ピクセル化された影。たくさんのポリゴンを扱います。大きな世界を扱っていません。
  • 無数のシャドウマップのバリエーション。近年の多くの研究。現在のベストはカスケードシャドウマップです。難しいですが、見栄えを良くするのはまだ難しいですが、高速で、大量のポリゴンと巨大な世界を処理します。
  • レイトレーシングシャドウ:これは次世代の可能性があります。いくつかの研究論文を除いて、誰もそれを実際に使用していません。非常に複雑で、動的な世界では(まだ)うまくいきません。巨大な静的なシーンは問題ありません。予備のGPUの量に応じて、ピクセルパーフェクトまたはソフトシャドウ。いくつかの変種; 2014年の時点では、パフォーマンス上の理由から、これはどのゲームでも実現しませんでした。

したがって、通常のトリックは、美しいが静的なアプローチと動的であるがそれほど良くないアプローチを組み合わせることです。たとえば、ライトマッピングとシャドウマッピングに関するチュートリアルを参照ください

于 2010-10-03T14:48:32.540 に答える
6

いいえ。

私が知っている最も簡単な方法は、マルチテクスチャを使用して地形にオーバーレイされる、事前に生成されたシャドウテクスチャを使用することです。複雑な部分はこのテクスチャを生成することですが、指向性照明を使用しない場合は、通常、単純な「大きなぼやけたドット」が何もないよりも優れています。

于 2010-10-03T08:12:41.050 に答える