ゲームのジオメトリックLODの最新技術とは何ですか?


15

現代のゲームは、キャラクター、地形、葉などのオブジェクトメッシュのジオメトリの詳細レベルをどのように行いますか?私の質問には2つの部分があります。

  1. 資産パイプラインはどのように見えますか?アーティストは、後にデシメーションされるハイポリモデルを作成しますか?もしそうなら、どのデシメーションアルゴリズムが最も人気がありますか?LODメッシュは時々手作業で行われますか?
  2. 実行時にエンジンは異なるオブジェクトLOD間でどのように移行しますか?スムーズまたはプログレッシブトランジションはありますか?

答えは「スタジオごとに異なるテクニックを使用する」かもしれません。その場合、最も一般的な慣行をいくつか特定してください。特定の例をカバーするホワイトペーパー/スライドを教えていただければ幸いです。


1
リアルタイムレンダリングにおけるSIGGRAPH 2014の進歩は、コールオブデューティのサブディビジョンサーフェスに関する非常に興味深い講演です。あなたはそれをチェックアウトする必要があります。高ポリメッシュを低ポリにする代わりに、形状を分析的に定義し、必要に応じて三角形を追加しました
アランウルフ

LODアルゴリズムとデータ構造の最新技術についてはここで説明できますが、現代のゲームが具体的にどのようにそれを行うかについての質問であれば、gamedev.seでもっと運がいいかもしれません:gamedev.stackexchange.com
Pseudonym

3
私はそれを疑います。Game devは非常にグラフィックスが軽いです。それは主に単一でjavaの質問であり、いくつかのパス検索と固定フレームレートの質問がスローされます。
アランウルフ

1
@ Alan、Activisionは最先端のアルゴリズムを使用して、アイソメトリックスプライトベースではない本物の3D戦略ゲームを作成しました。少数のアセットを使用した初期レベルでさえも(私はIphone 5でのモバイルゲームについて話しています)。このようなゲームの作成を成功させるには、OpenGLESのエキスパート機能と基礎となるレイヤーを学ぶ必要があると思います。
イマン

私は彼らのコンソール版のコールオブデューティについて話しています。
アランウルフ

回答:


22

ジオメトリLODの場合、ほとんどのゲームでは、事前に定義された多数のLODメッシュを切り替えるだけです。たとえば、「Infamous:Second Son」は3つのLODメッシュ(Adrian Bentley-「inFAMOUS:Second Son engine postmortem」、GDC 2014)を使用し、「Kill​​zone:Shadow Fall」はキャラクターごとに7つのLODメッシュを使用します(Michal Valient-「Kill​​zone:Shadow fallデモの事後分析」、Devstation2013)。それらのほとんどは生成されますが、より重要なもの(メインキャラクターなど)は手作りです。メッシュは、よく使用されるSimplygonミドルウェアを使用して生成されることがよくありますが、お気に入りの3Dパッケージのグラフィックアーティストによって単純に生成されることもあります。

描画距離が大きいゲームでは、葉、樹木、高層ビルに偽装も使用します(Adrian Bentley-"inFAMOUS:Second Son engine postmortem"、GDC 2014)。また、一連のオブジェクトを1つに置き換える階層LODも使用します。たとえば、「Just Cause 2」ツリーでは、最初に通常のLODメッシュとして個別にレンダリングされ、次に偽者として個別にレンダリングされ、最後に単一のマージされたフォレストメッシュとしてレンダリングされます(Emil Persson、Joel de Vahl-「Populating a Massive Game World」、Siggraph2013)世界の「サンセットオーバードライブ」の遠い部分は、単一の自動的にオフラインで生成されたメッシュに置き換えられます(エランラスキン-「ストリーミングサンセットオーバードライブのオープンワールド」、GDC2015)。

LODシステムのもう1つのコンポーネントは、マテリアルとシェーダーの簡素化です。たとえば、「Kill​​zone:Shadow Fall」は、離れたLODの接線空間と法線マッピングを無効にします(Michal Valient-「Kill​​zone:Shadow fall demo postmortem」、Devstation2013)。これは通常、LODごとにシェーダー機能のセットをグローバルに無効にすることで実装されますが、アーティストがカスタムシェーダーを作成できるシェーダーグラフを持つエンジンの場合、これは手動で行う必要があります。

LODトランジションでは、一部のゲームはメッシュを単純に切り替え、ディザリングを使用してスムーズなLODトランジションを行います。LODスイッチでは、2つのメッシュがレンダリングされます。従来のCPUプログレッシブメッシュ手法は、高価なメッシュの更新とGPUへのアップロードを必要とするため使用されません。ハードウェアテッセレーションはいくつかのタイトルで使用されますが、最も詳細なLODの改良にのみ使用されます。これは遅く、一般的な場合、事前定義されたジオメトリLODを置き換えることができないためです。

地形LODは、特定のプロパティを活用するために個別に処理されます。地形ジオメトリLODは通常、クリップマップを使用して実装されます(Marcin Gollent-「REDengine 3での風景の作成とレンダリング」)。テレインマテリアルLODは、メッシュLODと同様に処理されるか、ある種の仮想テクスチャKa Chenを使用して処理されます。「ファークライ4での適応仮想テクスチャレンダリング」

最後に、実際のゲームのLODパイプラインをご覧になりたい場合は、最新のゲームエンジンのドキュメントを参照してください:Unreal Engine 4-「LODの作成と使用」CryEgnine-Static LODUnity-LOD


1
ゲームエンジンには通常、事前定義されたメソッドのセットがあり、実際にLODアルゴリズムを変更することはできません。私は正しいですか?OpenGLまたはSpriteKitフレームワークで自分でゲームを書いている場合について話していましたが、UnityまたはUnrealでLODのアルゴリズムをカスタマイズできるかどうかはわかりませんが、可能ですか?
イマン

3

LOD(詳細レベル)とは、異なる表示スケールでオブジェクトを管理することを意味し、2つの部分に分けられます。ただし、それらのいずれかを使用してもかまいませんが、ほとんどの場合はこれで十分です。

  1. 大きさ(表示スケール)に応じて、レイヤー(同じタイプのオブジェクトのグループ)を表示/非表示します。

  2. 一般化(ポリゴンを単純化するアルゴリズム)と呼ばれる代数幾何ベースの方法。次の写真を見てください

    一般化

ポリゴンメッシュを一般化(単純化)するための最も有名で効率的な方法は、デカルト-オイラー多面体定理として知られています(本を参照する場合は式4.5で申し訳ありませんが、それが最善でした)。ほとんどの空間データベースで使用されています。たとえば、PostgreSQLのPostGISモジュール。ポリゴンの小さい辺を削除し、非常に丸い辺を作成します(上記の図)。

ゲームにLODを実装するには、ズームイン/アウト操作中にマップ(シーン)の縮尺を保存および管理する必要があります。スケールはゼロから無限に変化し、これを特定の範囲に分割する必要があります。たとえば次のようなものです。

  1. 1 /ゼロ=無限から1/50
  2. 1/50から1/100
  3. 1/100から1/1000
  4. 1/1000から1 /無限= 0

次に、上記の各範囲でどのタイプのオブジェクト(レイヤー)を表示または非表示にするかを定義する必要があります。たとえば、消火栓のような小さなタイプのオブジェクトは、ユーザーが4番目の範囲にいるときは、そのスケールでは非常に小さく、識別できないため、表示しないでください。画面。

したがって、ユーザーがズームインとズームアウトを使用して倍率を変更すると、上記の制限をある範囲から別の範囲に移動し、ゲームはこれらの表示スケールを使用して、シーン上のオブジェクトを表示または非表示にして詳細レベルを管理します。これにより、ズームアウト操作中にオブジェクトが突然フェードするという個別のソリューションが作成されますが、表示スケールと拡大範囲は慎重に定義されているため、ユーザーは何も感じません。

上記の4つの範囲のグループは単なる例であり、試行錯誤によって自分のケースに最適なものを見つける必要があります。そのためのルールはありません。

時々、ゲームは独自のLODメソッドを使用します。SubwaySurferは、テクスチャを持たない小さな長方形を表示して建物を遠くに示し、突然近づくとテクスチャを取得し、ゲーマーはそれを感じます。あなたは非常に重要な投影システムについて話さなかったし、あなたがどのようなゲームを作っているのかについても話さなかった。

ただし、openGlで完全な3Dゲームを実装していて、グラフィックハードウェアに転送する前にいくつかのメッシュをフィルターしたい場合、バッファーオブジェクトと頂点配列(VBO、VAO)のバインド/アンバインド操作を減らすのに役立つと確信していますOpenGlを扱う。

レイヤー管理のみを使用するか、オイラーの一般化を実装する

ほとんどの場合、一般化アルゴリズムを実装する必要はなく、オブジェクトのフィルタリングは機能し、必要な効率(リフレッシュレート)に到達しますが、場合によっては完全に異なります。ポリゴンの小さな辺を削除するだけの簡単なアルゴリズムですが、大きさと定数の積であるしきい値を定義する必要があります。そのため、大きな辺はより遠くの視点でフィルタリングされます。

レイヤーの管理を忘れて、オイラーの一般化アルゴリズムのみを実装すると、非常にきちんとした継続的な方法が提供され、各辺と線を事前に定義されたしきい値に対してチェックし、画面上で識別できるほど大きい場合にのみ表示します。

PS:倍率は0より大きい浮動小数点数で、1 / scaleに等しく、スケールは通常1未満です。これは、1:1スケールはゲーム内の現実世界の長さを意味するためです。


まだ投票していない場合は、もう一度投票してください。コメントを残してください。ありがとう
イマン

私は下票しませんでしたが、私の一部は、ここの芸術の状態は何だろうと思いますか?だから私はどちらかを投票することはできません。
joojaa

1
読みづらく、ゲーム内のLODとは関係ないので、私はダウン票を投じました。再考した後、私はupwotingによって私のdonwvoteをキャンセルし、単に自分の答えを追加することにしました。
クシシュトフナルコヴィッツ

最先端技術は非常に優れた仕事を意味すると想定していますが、さまざまな方法はさまざまなケースで異なる結果になります。たとえば、Call of dutyにはレイヤー管理とミップマッピングがありますが、Dear haunting(DH 2014)は視差とバックグラウンドを使用し、事前に一般化されたミップマッピングテクスチャ。地下鉄のサーファーはまったく別の話であり、サブウェイサーファーは建物やその他の都市のオブジェクトを個別に描画したり、ズームやパン中にコールオブデューティが少し遅くなったりしますが、私はそれらすべてに最新技術を言います。私は彼らがすべてのケースで最高だと思います。
イマン

3

イマーンはすでに完全な答えを用意しましたが、何かを追加したいと思います

LODは2つの異なる方法で実行できます

  1. CLODと呼ばれ、ポリゴンメッシュの最適化であるContinous
  2. このグループに属すると見なされるポリゴンメッシュ最適化以外のほぼすべてのアルゴリズム。

たとえば、ミップマッピングは、上記のsecoundグループに属する、優れた高速で重いものです。

ここで、OpenGlを使用したミップマップと実装コードの適切な説明を見つけることができます。

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