2Dサイドスクロールゲームに歪み効果のような偽の3Dを実装する方法は?


14

私はそれが何らかの後処理効果であると想像しますが、検索する適切な用語やどこから始めるべきかさえ定かではありません。

私のようなゲームを見てきたアイワナがBoshyうあなた持って勝つゲーム(下の画像を参照)、それらに3D効果のようなものを与えるために、2Dのゲームの視点を変更するために管理します。Boshyは基本的にあなたがタワー(シリンダー)の中にいるように見せますが、ゲームに勝たなければならないので、古いCRTモニターで遊んでいるように見えるように画像をゆがめます。

  • この効果に用語はありますか?
  • この効果(用語)を実装するための標準的な方法は何ですか?
  • UnityやXNA / Monogameなどの高レベルのエンジン/フレームワークで、20,000フィートのビューからこのような効果を実装するにはどうすればよいですか?(詳細なコードは喜んで受け入れられますが、必要ではありません-実装の詳細は正確に異なる場合がありますが、何をする必要があるかについての高レベルの詳細は大歓迎です)

私はBoshyになりたい 私はBoshyになりたい

あなたはゲームに勝たなければなりません ここに画像の説明を入力してください


うん。テクニックの正確な用語を知りたいといつも思っていました。私は考えることができるベストは「古いテレビ画面効果」である
Tofu_Craving_Redish_BlueDragon

丁度!そして、それは後者の例のために働く
SpartanDonut

回答:


7

これは、後処理のような効果として実装できます。(Unity / XNA / Dx / OGL / ...を使用する場合)

ジオメトリ法

まず、達成しようとしている歪み効果に似たメッシュを作成します。(たとえば、半円柱(または円錐、球、立方体など)をモデリングし、テクスチャ座標を設定してください)。通常どおり2Dゲームをレンダリングしますが、最終結果をテクスチャにレンダリングします。次に、作成したテクスチャで歪みジオメトリをレンダリングします。ワールド/ビュー/投影を使用するか、実際のジオメトリ/テクスチャ座標を変更して、歪みの強さを制御できます。(画像1は通常の2Dゲームを示し、画像2は球に投影された同じテクスチャを示します)

ゲーム例 球体に投影された例(ブレンダーを使用)

歪み方法

画像処理ツールは、多くの場合、投影をエミュレートする可能性のある歪み効果を提供します(ビットのような錯視)。たとえば、画像3はPaint.Netのバルジフィルターを使用して生成されました

バルジ歪み

GPUImageプロジェクトからこの歪み効果の実装(OpenGL ES 2.0)を見つけることができます-GPUImageBulgeDistortionFilterを参照してください)

実装に応じて、どちらの方法でもより高速になるか、目的の結果によりよく一致する場合があります。両方の実装は非常に単純なので、両方を実装して、どちらが最適かを確認してください。


素晴らしい答え!
Tholle

1
どちらも同じ量の画像を処理する必要があります。投影はもしないよりも速くなることはなく、画像処理のコストはどちらの場合も同じです。-頂点の変換とラスタライズをスキップするため、「歪み」の方法が高速になります。また、ドライバーにピクセルを反復させる自由度が高くなります。ここで、ポリゴンアプローチは描画する順序をより具体的にします。意図した効果に関する情報が少なくなり、テクスチャフィルタリングハードウェアにストレスを与え、実際のフィルタの代わりに近似値を生成する一般的なソリューションに頼っています。
MickLH

@MickLH:このような後処理投影の頂点はオフラインまたはロード時に計算できるため、非常に安価なパススルー頂点シェーダーが生成されます。バルジフィルターの場合、フルスクリーンクワッドもレンダリングおよびラスタライズする必要があり(SpartanDonutが計算シェーダーなどにアクセスできる場合を除く)、すべてのピクセルに対して、補間ではなくオフセットを計算する必要があります。したがって、私は(利用可能なツールと実装に応じて)両方の方法が同等に高速になると信じています。ご意見をお寄せいただきありがとうございます。
ミクラス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.