Geometry Warsのようなゲームで見られるワープ効果を実現しようとしています。
ここで何が起こっているのかを誰かが説明できますか?プログラマーによってグリッドのz軸が何らかの方法で操作されているように感じますが、正しいワープ効果を実際に得るための既知の数式があるのでしょうか?
編集:具体的には、グリッドのゆがみを意味します。すべてが負のz軸に向かって引っ張られてバウンスする様子。
Geometry Warsのようなゲームで見られるワープ効果を実現しようとしています。
ここで何が起こっているのかを誰かが説明できますか?プログラマーによってグリッドのz軸が何らかの方法で操作されているように感じますが、正しいワープ効果を実際に得るための既知の数式があるのでしょうか?
編集:具体的には、グリッドのゆがみを意味します。すべてが負のz軸に向かって引っ張られてバウンスする様子。
回答:
単純なスプリングシステムの10分間の実装(または、 ブログでます)ます;))。このシステムは、複数のワープやその他のグリッドの歪みを処理できます。
いくつかのマイナーな追加の詳細を追加するために更新されました:
その他の詳細。かつてBizarre Creations Webサイトでホストされていたインタビュー(そのサイトは会社の閉鎖により消滅しました)から質問がありました。
Q:ゲームで最も印象的な新しいグラフィカル機能の1つは、「重力グリッド」プレイエリアです。どのようにしてこれをとてもクールに見せましたか。ゲーム内のすべてのオブジェクトは本当に独自の重力を持っていますか? グリッド自体は60,000ポイントで構成されており、各ポイントは近隣にわずかな力を加えています。シミュレーション自体は安定性の端にあり、ゲームオブジェクトの1つが小さなプッシュを与えると、シミュレーションが大きく揺れ動きます。少数のタイプのオブジェクトのみがグリッドに影響します。グリッドシステムは計算にかなり費用がかかるため、実際にはオーディオシステムと共に2番目のコアで実行されます(最初のコアはゲームプレイとパーティクル専用で、3番目はオーディオのレンダリングに使用されます)。
それを行うための「正しい」方法があるかどうかはわかりませんが、それはおそらく、距離から計算されたフォールオフを適用した、見た目に美しい線形変換です。
したがって、作業している要素については、次のようにします。
Iirc、Geometry warsはそれをいくつかの要素にゆがみゆがみとして適用しましたが、粒子のような他の要素はゆがむことなく「力」の影響を受けただけです。効果をスムーズにサンプリングするのに十分な頂点があると仮定して、頂点シェーダーで歪みを適用できます。または、最初にオフスクリーンバッファーに影響を与える必要のあるすべてのものをレンダリングし、次に、歪みのないきれいなテッセレーションされたクワッドに結果をレンダリングしてから、歪みのない要素をすべて上に追加します。
変換に関しては、スケーリングによって見栄えが悪くなります。記憶が正しければ、ねじれも生じていたので、少し回転するだけでした。
強度係数を計算することで、より洗練された効果を得ることができます。たとえば、要素が中心に対して相対的な角度(a)を計算し、それを考慮に入れることができます。cos(a)を使用すると、エフェクトに放射状の波を作成できます。あなたがしたいのは、必要な足場コードを設定し、さまざまな要因の組み合わせを試して町に行くことです。