マルチレイヤーの2Dタイルマップにライトとシャドウを実装するにはどうすればよいですか?


11

私は最初からアイソメトリックゲームを作成している最中です。ライトとシャドウを追加する方法や方法を知りたいのですが。

ここまでのコードはここにありますが、今のところ、マップはtrue / false値の単純な3D配列であることを知っていれば十分でしょう。これは環境のショットです:マルチレイヤータイルマップのスクリーンショット

それが単一レイヤーのタイルマップである場合、それは簡単です。必要な2dの簡単なレイキャスティングを理解できます。

ただし、私のマップには複数のレベルの高さと洞窟のような領域があるため、そのために説得力のある影を作成する方法がわかりません。おそらく、ブロックごとのソリューションが唯一の現実的な方法ですか?


プリベイクまたは動的に生成されたライティングをお探しですか?プレイヤーが入った場合、「洞窟のような領域」は切り取られて表示されますか、それとも、光も天井を考慮する必要がありますか?各タイルはバイナリライト/ダークであると予想されますか、それとも何らかの小数値があると予想されますか?
Anko

1
@Anko私は0-1.1(爆発などの明るすぎる領域の場合)のような分数を好みますが、実際の補間やそのようなものはなく、単にブロックベースである可能性があります。私は本当にそれが動的で、複数のライトをサポートすることを望んでいます。そして、「洞窟のような」/屋根のある領域が切り取られて表示されますが、アルゴは光を計算するときに表示されていないブロックを考慮する必要があります。たとえば、家の中を歩くと、屋根のブロックは消えますが、内部はまだ日陰になっているはずです。
Danie Clawson

洞窟と高さでそのような解決策を探す場合、2Dは何もないようです。カメラが常に北45度の方向を向いている場合でも、おそらく完全な3Dソリューションを探しています。ステンシルシャドウなどの技術を確認する必要があります。
Adrian Maire

@AdrianMaireの2番目に、適切な3D計算を行う必要がありますが、「タイル」の面を横切る補間がない場合は、いくつかのショートカットを作成します。補間を行わない場合は、おそらくレイを使用できます。
NeomerArcana

今のところ、それを解答に要約するためのマインドスペースはありませんが、このブログ投稿でハイトマップ地形の見通し線の決定について偶然見つけました。それはあなたが探しているもののように聞こえます。
Anko、2015

回答:


1

アバターが現在オンになっているレベルだけの場合でも、最初に2Dシャドウを機能させることをお勧めできますか?その方法でコードを調べ始めると、それを機能させるのが簡単になります。

2Dタイルマップにいくつかの方法でシャドウを実装しました。MicrosoftでEric Lippertが説明したシャドウキャスティング方法の1つは、非常にうまく機能します。

そして、私が最初にこの種のことを見たときに行ったもう1つの方法は、表示されているタイルとタイルエッジを直角にスイープし、最も少ないエッジ数でシーンを表すエッジ(およびおそらくコーナーiirc)を生成することでした。次に、壁の少しを表示したい場合は、非表示のエッジを間引いて、埋め込みシャドウなどのカスタムシャドウ機能を形成できます。次に、シャドウジオメトリ(投影シャドウキャスト?)を作成し、上部にレンダリングします。

しかし、そのアイデアを3Dに取り入れようとすると、3Dで行うほうが簡単になります。Eric Lippertが説明した方法は、おそらく3Dに変換できます。しかし、3Dで実行するとコストがかかることに気付くでしょう。おそらくブローグのソースコードも見てください。2D可視性/シャドウキャストのより効率的な実装がある場合があります。

幸運を。

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