Geometry Warsのワープ効果を複製するにはどうすればよいですか?


12

Geometry Warsのようなゲームで見られるワープ効果を実現しようとしています。

ワープ効果を含むジオメトリ戦争のスクリーンショット

ここで何が起こっているのかを誰かが説明できますか?プログラマーによってグリッドのz軸が何らかの方法で操作されているように感じますが、正しいワープ効果を実際に得るための既知の数式があるのでしょうか?

編集:具体的には、グリッドのゆがみを意味します。すべてが負のz軸に向かって引っ張られてバウンスする様子。


1
背景が曲がっているということですか?それのとおりジオメトリウォーズ、私は試してみて、あなたが言及したものを伝えるためにしばらくの間、私の頭に傷を付けてきたスクリーンショット、の混乱がたくさんあります。
グレースノート

はい、背景が曲がっています。
ジョーイグリーン

回答:


12

単純なスプリングシステムの10分間の実装(または、 ブログでます)ます;))。このシステムは、複数のワープやその他のグリッドの歪みを処理できます。

いくつかのマイナーな追加の詳細を追加するために更新されました:

その他の詳細。かつてBizarre Creations Webサイトでホストされていたインタビュー(そのサイトは会社の閉鎖により消滅しました)から質問がありました。

Q:ゲームで最も印象的な新しいグラフィカル機能の1つは、「重力グリッド」プレイエリアです。どのようにしてこれをとてもクールに見せましたか。ゲーム内のすべてのオブジェクトは本当に独自の重力を持っていますか? グリッド自体は60,000ポイントで構成されており、各ポイントは近隣にわずかな力を加えています。シミュレーション自体は安定性の端にあり、ゲームオブジェクトの1つが小さなプッシュを与えると、シミュレーションが大きく揺れ動きます。少数のタイプのオブジェクトのみがグリッドに影響します。グリッドシステムは計算にかなり費用がかかるため、実際にはオーディオシステムと共に2番目のコアで実行されます(最初のコアはゲームプレイとパーティクル専用で、3番目はオーディオのレンダリングに使用されます)。


1

それを行うための「正しい」方法があるかどうかはわかりませんが、それはおそらく、距離から計算されたフォールオフを適用した、見た目に美しい線形変換です。

したがって、作業している要素については、次のようにします。

  • ワープの中心までの距離を見つける(d)
  • 1-d /希望する効果の最大距離を計算します(強度はi)
  • [0-1]に固定する
  • lerp(identity、transform、i)によって要素を変換します

Iirc、Geometry warsはそれをいくつかの要素にゆがみゆがみとして適用しましたが、粒子のような他の要素はゆがむことなく「力」の影響を受けただけです。効果をスムーズにサンプリングするのに十分な頂点があると仮定して、頂点シェーダーで歪みを適用できます。または、最初にオフスクリーンバッファーに影響を与える必要のあるすべてのものをレンダリングし、次に、歪みのないきれいなテッセレーションされたクワッドに結果をレンダリングしてから、歪みのない要素をすべて上に追加します。

変換に関しては、スケーリングによって見栄えが悪くなります。記憶が正しければ、ねじれも生じていたので、少し回転するだけでした。

強度係数を計算することで、より洗練された効果を得ることができます。たとえば、要素が中心に対して相対的な角度(a)を計算し、それを考慮に入れることができます。cos(a)を使用すると、エフェクトに放射状の波を作成できます。あなたがしたいのは、必要な足場コードを設定し、さまざまな要因の組み合わせを試して町に行くことです。


クールな感謝私はこれを試してみます。あなたが説明するアルゴリズムは、基本的にスプリング効果ですか?
ジョーイグリーン

いいえ、時間の経過とともにどのように変化するかは説明しませんでしたので、春ではありません。歪み形状を取得する方法を説明しました。GWスタイルでアニメートするには、そこに別の要素を追加し、iを経時的に変調する必要があります。全体を実装してみてください。iをスケーリングして効果を緩和または強化できることが明らかになります。その変調値に正弦波を通過させるか、1Dスプリングのように跳ね返せば、全体が効果的に跳ね返ります。繰り返しますが、ひとたびハーネスの周りにたくさんの変数が浮かんできたら、実験があなたの友達になります。
クリススバジオ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.