ゲームで「水中の視界」を防ぐ方法


19

プレイヤーが水中に行くことができる多くのゲームでは、画面の上半分が空中にあり、画面の下半分が水の中にあるように見えるとき、それはほとんど水が存在しないようで、プレーヤーは...水の音でゆっくりと飛んでいますか?

ここに画像の説明を入力してください

これを解決する論理的な方法はありますか?アルゴリズム?多くのゲームがまだこれを持っているので、解決策がまだ登場していないようです。同じ間違いをしたくありません。


4
現代のゲームには、水中と水中で異なるシェーダーがあります。確かに最近はこのようには見えません。Crysisはかなり高度な水中レンダリングを行っていると思います:youtube.com/watch
v

9
@ sm4:このゲームにもこの機能があると思います。しかし、問題は、カメラが水面下ではなく、その上にあり、クリッピングに近いために下を見ることができることです。
鬼丸

@Kikaimaruなるほど、質問が完全に理解できませんでした。ただし、Crysisにはこの問題はないようです。
MartinTeeVarga

2
でも、川の底に真珠があるかどうかは他にどのように見ればいいの?(長老の忘却):D
Singular1ty

1
キャラクターの「頭」がカメラではなく水中にあるかどうかを確認し、キャラクターが水中にいる場合を除き、カメラを水中に移動させないようにすることができます
ルークB.

回答:


16

この状況を単純に許可しないのはどうですか?

ゲームの作り方がわかりませんが、ビューの一部が水中になることを検出した場合、カメラを水面より上に強制的に移動できます。ビュー全体が水面より下になる場合にのみ、水中ビュー。

方法によっては、これは、ダイビングを開始した瞬間から、実際に水面下からシーンを表示するまでに追加の遅延があることを意味します。これは実際にはUXの観点からは良いことかもしれませんので、自由に実験してください。

別の関連するノートで、なぜほとんどの水中シーンがクリスタルクリアにレンダリングされるのか疑問に思います...頭を水中に置いた場合、あなたの目は水中視界のために設計されていないため、すべてがぼやけているように見えます。実際に水中をはっきりと見るにはゴーグルを着用する必要があります。

さらに、水中では物が見た目(および聞こえる)が水中とは大きく異なります。水は空気よりもはるかに速く光を吸収するため、光が遠くに進むほど、目に届く光は少なくなります。これは、深く行くほど青いものが見えることを意味します(赤い光はエネルギーが少ないため、青い光よりも簡単に吸収されます)。実際、わずか12メートルの水中では、血は赤ではなく黒に見えます。

私はまだ水中環境を正しくしようとする特殊なゲームを見たことはありません...


5
多くのゲームが水中の光と音を変えます。上記のコメントにリンクされているCrysisビデオを参照してください。完全に現実的ではないと確信していますが、(a)ほとんどの人は深い水中環境の直接的な経験がなく、(b)あなたが水中にいるゲームでは、おそらく見ることができ、ゲームをプレイする必要があります。
ネイサンリード

ほとんどのゲームは、何も見ないと水中に行きたがらないので、これをしないと思います。または、すべてのゲームのメインキャラクターがMokenの人々によって訓練されたかもしれません!news.nationalgeographic.com/news/2004/05/...
MartinTeeVarga

1
ゲーム開発では、この種の「医者、これをやると痛い」という解決策が通常最適です。
トレバーパウエル

1
@TrevorPowell:あなたのコメントを何十回も読みましたが、まだあなたの主張を理解していません。たぶんあなたは詳しく説明したいと思いますか?
パンダパジャマ

2
謝罪!古いボードビルのジョークへの参照です。ジョークは次のようになります: 患者:「医師、これをやると痛い!」 医者: 「そんなことしないで!」ゲームでは、問題を解決する最も簡単な方法は、問題を解決しなければならない状態にゲームを移行させないことです。(例:「ニアクリップ面が水面と交差するとき、グラフィックスが間違って見える」修正する最も簡単な方法は、「水面交差ニアクリップ面を聞かせていない」である)
トレヴァー・パウエル

7

あなたが言及している問題は、カメラのビューボリュームが水面を切り抜けていることに関係しています。典型的な「水中効果」は、フルスクリーンのポストプロセスエフェクトを介して行われ、ビューがこのようにクリップされると正しく表示されません(逆の問題になります)。

クリッピングケース(潜在的に難しい)を検出し、水中シーンのみに適用されるようにフルスクリーンの水中効果をはさみまたはクリップする(これは探索可能な解決策です)場合でも、実際の水上飛行機自体の問題。そこへの移行は、依然として耳障りな視覚的アーティファクトです。その平面を検出し、それを大きくぼかすことができます。これはおそらく、部分的に沈められたカメラレンズを通して見ることができるものの現実世界の類推に到達できる最も近いものです。

または、これが完全に起こらないようにします。プレーヤーが水面の「上」にある場合はカメラを水面下に、水面下にいる場合は水面上に置かないでください。これは、水面上/水面下に個別のプレーヤー操作モードがある場合にのみ実際に機能し、物理的なボタンまたはプレーヤーが「水面で泳ぐ」と「下で泳ぐ」の間の遷移のために行うことができる明確で明白なアクションがある場合に最もよく機能します表面。」

飛び込むための明示的なキーストロークの代わりに、カメラが「飛び込む」ことを意味するように十分にピッチダウンしている間に、前方への動きを解釈できます。その後、グラフィック効果(スプラッシュなど)を使用して、通常は交差できない水面を通るカメラの遷移を非表示にできます。

ギルドウォーズ2では、このような手法を使用しました。


3

ゲームは通常、カメラが水中にあるときに、ある種の効果、主に青い霧をオンにします。ニアプレーンが水面をクリップする状況を処理するには、カメラが水面に近づいたときにフォグシェーダーをオンにしますが、それに対応するニアプレーン上のポイントを計算するコードをピクセルシェーダーに追加しますそのピクセルは、そのポイントが水面下にある場合にのみフォグをアクティブにします。

フォグがフルスクリーンパスをレンダリングすることにより後処理として行われる場合、これは特に簡単です-ニアプレーン上のフルスクリーンクワッドまたはトライアングルの各頂点のワールド空間位置を計算するだけですビュー/投影マトリックス)、およびこの値をピクセルシェーダーまで補間します。次に、その垂直成分を確認し、水上にあるか下にあるかを確認できます。

ボーナスポイントでは、同じ手法を使用して数ピクセルの厚さのテクスチャを追加し、水面のメニスカスを表すことができるため、シャープなラインのようには見えません。


(水面は偉大一般的な答えはまだメッシュですが、場合の問題点を持っている)
ウィル

0

2つの方法があります。1つはシェーダーを使用し、もう1つはGUIを使用できます。どちらも同じように起動します:

「簡略化」- If, Object(Camera) is in 3d Space(Water bounding box/whatever you choose) trigger a shader/GUI.

シェーダーはよりリアルになり、このような歪みを適用できます

霧のようなコム。少年は、GUIを介して適用できると述べました。部分的に透明な写真を作成し、カメラビュー全体でGUIとして使用します。あなたが提供した写真のために、私は茶色を試します。

これは、Drea D Outと呼ばれるホラーゲームで使用されています。プレイヤーがゴーストに近づくと、画面が霧に変わります。水の下では使用されませんでしたが、同様の効果がありました:)

常に両方の方法を選択するか、色を変更するシェーダーを作成できます。

http://media.indiedb.com/images/games/1/21/20833/Demo_update_SS01.png

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