web-dev-qa-db-ja.com

ポリゴンの代わりに何兆もの「原子」をレンダリングしますか?

私は、出版社が「3Dの発明後の次の主要なステップ」と呼んでいるものについて ビデオ を見たところです。その中で話す人によると、彼らはポリゴンではなくcloudsにグループ化された大量のatomsを使用して、レベルに到達します無制限の詳細

彼らはビデオをレンダリング技術の知識がない人にも理解できるように、または他の目的でエンジンがどのように機能するかについてすべての詳細を省くために最善を尽くしました。

彼らのビデオの細部のレベルは私には非常に印象的に見えます。

  • 現在のハードウェアでポリゴンの代わりにカスタムアトムを使用してシーンをレンダリングするにはどうすればよいですか? (速度、メモリに関して)
  • これが本当なら、なぜ今まで誰もそれについて考えさえしなかったのですか?

私はOpenGL開発者として、これに本当に困惑しており、専門家の意見を聞きたいと思っています。したがって、私はこれが安価な広告のようになりたくないので、コメントセクションに、要求された場合にのみビデオへのリンクを含めます。

9
Baring

それは簡単です。 Octtreeを使用すると、必要な詳細レベルに到達するまで、世界を次第に小さなピースに分割するだけです。これは例えば砂粒のサイズかもしれません。 Minecraftを極端に考えてみてください。

次に何をレンダリングしますか?ディテールが十分に小さい場合は、ブロック(オクトツリーのリーフノード)のレンダリングを検討できます。その他のオプションには、球体や幾何プリミティブさえ含まれます。色と法線は各ノードに保存でき、LODの場合、ツリーの上位レベルに複合情報を保存できます。

どのようにして多くのデータを管理できますか?ツリーが実際のデータ構造の場合、テクスチャを再利用するのと同じように、複数のポインタが同じサブツリーを参照できますが、ジオメトリも含まれています。トリックは、すべてのレベルでできるだけ多くの再利用を取得することです。たとえば、四面体配置の4つのオクタントをすべてのレベルで同じ子ノードにすべて接続すると、ほとんどメモリを使用せずに非常に大きな3Dシェルピンスキーフラクタルを作成できます。もちろん実際のシーンはもっと大きくなります。

問題は、実際のアニメーションではフレームごとにすべてのデータを操作する必要があるため、静的なジオメトリに対してのみ機能することです。ただし、特に変数LOD=の場合、レンダリングは問題ありません。

そのようなことをどのようにレンダリングするのですか?私はレイトレーシングの大ファンで、GPUの有無にかかわらず、この種の処理を非常にうまく処理しています。

もちろん、これはすべて推測です。あなたが話しているケースに関する具体的な情報はありません。そして今、関連しているが異なるものについて:

レンダリングされた大量のデータ

[〜#〜] edit [〜#〜]そして、これは私がやったものですが、私は意図的に法線を変更してボックスをより明確にしました:

ボクセルのスタンフォードバニー

そのフレームレートは、シングルコアIIRCのものでした。ツリーの深さを2倍にすると、フレームレートは通常半分になりますが、複数のコアを使用すると適切にスケーリングされます。通常、プリミティブ(三角形など)はオクトツリーに保持しますが、にこにこのために、この場合はツリー自体の葉ノードをレンダリングすることにしました。もちろん、特定の方法を中心に最適化すると、パフォーマンスが向上する可能性があります。

Ompfのどこかにボクセルを使って作られた車があり、それは静的ですが、本当に素晴らしいです。見つけられないようです...

11
phkahler
  • 現在のハードウェアでポリゴンの代わりにカスタムアトムを使用してシーンをレンダリングするにはどうすればよいですか? (速度、メモリに関して)

ビデオを見ても、特別なハードウェアが使用されたことを示すものは何もありません。実際、私が何かを見逃していない限り、これはソフトウェアで20fpsで動作すると言われています。

おそらく、レイトレーシング、ボクセルレンダリング、表面スプラッティングなどのさまざまなテクノロジーを使用したリアルタイムレンダリングに多くの発展があったことを知って驚かれることでしょう。このケースで何が使われたかを言うのは難しいです。 (興味がある場合は、優れたリアルタイムレイトレーシングフォーラムの http://igad2.nhtv.nl/ompf2/ をご覧ください。または http:// www .atomontage.com / 興味深いボクセルエンジン用。Googleは、そのトピックに関するいくつかの優れたリンクのための "表面スプラッティング"を実行します)

映画を見ると、すべてのジオメトリが静的であり、詳細ではありますが、オブジェクトの繰り返しが非常に多く、インスタンス化のヒントになる場合があります。

そして、多くの場合、積極的なカリング、詳細レベル、およびスペースの分割が行われます。

(幾何学的な複雑さではなく)視覚的な品質を見ると、それほど印象的ではありません。実際、それはかなり平らに見えます。表示されているシャドウイングはデータに組み込まれており、リアルタイムで評価されない場合があります。

アニメーション化されたジオメトリと動的なライティングを使ったデモを見たいです。

  • これが本当なら、なぜ今まで誰もそれについて考えさえしなかったのですか?

私が完全に間違っていない限り(そして、私が初めてではないでしょう)、私の最初の答えは、おそらくこのデモを作成するために最適化および拡張された既存のテクノロジの(おそらく非常に賢い)使用を示唆します。しかし、それを実際のゲームエンジンにすることは、それを含む静的なジオメトリのレンダリング以外のすべてのタスクで、まったく異なる球技です。

もちろん、これはすべて純粋な推測です(これは私にとってとても楽しいことです)。私が言っているのは、これは必ずしも偽物ではないということです(実際、私はそれを考えていませんし、まだ感銘を受けています)が、おそらくそれを鳴らすほど画期的ではありません。

6
Bart

これらのアトムは、実際には現在のグラフィックスハードウェアにとってそれほど魔法/特別/異質ではありません。これは、一種の点群またはボクセルベースのレンダリングです。したがって、三角形の代わりにポイントやボックスをレンダリングしますが、現在のハードウェアでは何も実現できません。

それはすでに行われており、すでに行われており、スーパー発明ではありませんが、多分彼らはそれを行うためのより多くのメモリと時間効率の良い方法を考え出しました。見た目と音はかなり面白そうですが、この動画は塩味のあるものにしてください。完全にテクスチャ化されたポリゴン(既に画面上で数ピクセルしか占めていない)の代わりに100,000ポイントをレンダリングしても、グラフィック品質は100,000倍向上しません。

ちなみに、idソフトウェアもGPUアクセラレートされたボクセルレンダリングを試用していると聞きましたが、このビデオのスピーカーよりもジョンカーマックに少し信頼しています:)

それは投資詐欺でした。

アイデアに関しては、現在の非専用ハードウェアでは実現できません。何かを近くで見るときにギャップを避けるために必要なポイントの量は、今日のRAMで埋めることができるポイントの量をはるかに超えています。たとえデモに示されているパフォーマンスに近いデータ構造や検索アルゴリズムについては知りません。そして、ifであっても、リアルタイムでこれらのポイントを検索することは可能でした。

提示された方法ではなく、そのような画像がリアルタイムで実現できないことは疑いません。私の推測では、デモはボクセルでレンダリングされました。ボクセルは何十年も使用されており、リアルタイムでかなり高い詳細をすでに生成できます: http://www.youtube.com/watch?v=BKEfxM6girI http://www.youtube.com/watch?v=VpEpAFGplnI

2
Hannesh

私が見たところ、単純なポリゴンシェイプではなくパラメトリックシェイプを使用しているようです。つまり、必要な解像度に応じてジオメトリを変更しています。

これは、ジオメトリシェーダーやパーリンノイズなどの手法を使用して行うことができます。

別の可能性は、GPGPU(CUDAなど)を使用して、非ポリゴンを含むシーンをレンダリングし、レイトレーシングを実行することです(Zオーダーとシャドウの場合)。もう1つの可能性は、三角形ではなく数式をレンダリングするカスタムハードウェアです。

1
Danny Varod

私は彼らの主張をすべて思い出します。メモリの圧縮は誇張のように見えます。RLE圧縮のようなものが大きな影響を与えていることが理解できました。結局、このシステムには多くの「長所」がありますが、レイトレーシングやマーチングキューブを使用した等値面レンダリングのように、多くの「短所」があると思います。

「兆」の原子をレンダリングする限り;彼らがそう言っているとは思いません。彼らが代わりに行っているのは、W * H原子を検索することです。つまり、画面上の1ピクセルあたりatom)です。これは、多くの遅い困難な方法で実現できます。 KD Trees、BSP Trees、Octreesなどですが、結局のところ、並べ替えられるのは大量のデータであり、そのデモでは1440x720の原子が1つのフレームあたり1回以上並べられているようです。デモは素晴らしいです。

0
ninjacocoa