3Dテクスチャとは何ですか?


31

Googleは私を失敗させた、私は有益な何かを見つけることができなかった。だからおそらくGameDevは:)。

  • 3Dテクスチャとは何ですか?
  • いつ使用されますか?
  • パフォーマンスコストは?
  • それらはどのように保存されますか?

あいまいなアイデアはたくさんありますが、「決定的な」定義はありません。

特に3Dテクスチャを介してパーティクルシステムをレンダリングする場合は、例やチュートリアルへの参照を歓迎します。


あなたが何を求めているのかはわかりません。「平坦な」領域の表面の変化をシミュレートするための法線とバンプマッピングを意味しますか?
-coderanger

2
彼の言うことはGL_TEXTURE_3Dなどのようなものだと思う
-Luker

1
また、この質問を参照してください:UVWテクスチャマッピングはどのように機能しますか?(およびその回答)。
ジョージダケット

回答:


34

3Dテクスチャは、通常のテクスチャのように機能します。しかし、それは本当に3Dです。2DテクスチャにはUV座標があり、3DテクスチャにはUVWがあります(適切に使用する必要がありました)。テクスチャ座標は単位立方体です(0-1、0-1、0-1)。

可能な使用法

  • ゲームの体積効果(火、煙、光線、リアルな霧)
  • リアルタイムのグローバルイルミネーション(たとえば、CryEngine)のキャッシュライト
  • 科学的(MRI、CTスキャンはボリュームに保存されます)

パフォーマンス
通常のテクスチャと同じ-超高速(gpuで最も高速なメモリアクセス)。スレッド用にキャッシュされ、ニアスレッド(ピクセルシェーダー)がニア値を探している状況に最適化されています。

ポイントとして読み取ることも、線形サンプリングを使用することもできます(ネイティブ3線形補間。2DテクスチャでのEq bi-linear補間)。

これらは、2Dテクスチャの配列のようにメモリに保存されます。

3Dテクスチャのミップマッピング:
ここに画像の説明を入力してください


14

3Dテクスチャまたは「ボリュームテクスチャ」は、一連のカードのようなスライスとして配置された一連の通常のテクスチャです。これらは、CTスキャンなどの実世界のデータを取得して操作するボリュームレンダリングで使用されます。ゲームやグラフィックスでは、パーティクルシステムの柔軟性をボリュームテクスチャの固定コストと簡単な(そして簡単に並列化可能な)計算と引き換えに、煙のようなボリュームエフェクトを使用することがあります。ボリュームテクスチャでは、最近傍を見つけるのは非常に簡単ですが、これは問題になる可能性があります。これは、ルーズポイントで構成される従来のパーティクルシステムです。

また、いくつかの複雑なオブジェクトは、草などのボリュームテクスチャを使用することでメリットがあります。

Nvidiaの箱に入った煙は素晴らしい例です。

http://www.youtube.com/watch?v=9AS4xV-CK14

また、レンダリングするボリュームがある場合、光散乱のレンダリングは簡単です


7

既存の回答とは別に、ノイズやフラクタルのような3Dテクスチャをプロシージャルに作成する方法が好きです(実際には2Dプロシージャルテクスチャよりも理にかなっています)。投影モデル(UV、平面、円筒、球など)を選択します。

3D空間でビットマップレイヤーをサンプリングする代わりに、基本的なアルゴリズムを使用して3D空間の各ポイントに個別の値を取得します。これにより、基本的に無限のテクスチャ解像度が得られます。これは3Dの「テクスチャ」またはむしろ私にとっては表面シェーディングです^^

実際、ゲーム開発のビットマップテクスチャスナッフにかなりうんざりしています。宇宙船を汚したいとき、ノイズフォーミュラのいくつかのレイヤーを適用し、制限された解像度のビットマップをペイントする必要はありません。古い3Dバフは夢を見ることができます、彼はできません;)

今、これらの甘いオールドスクール3Dムービーサーフェスソリューションをカラー、通常、およびスペキュラーUVビットマップにプリベークすることは、私が得る唯一の楽しみであり、面倒に制限されているように感じます。デモシーンは(いつものように)リアルタイム3Dの手順でテクスチャを(事前に)生成する傾向がありますが、設計から実行時までこのワークフローをサポートする優れたツールを見つけるのは困難です。ほとんどのゲーム開発手順のアプローチは、メッシュ生成に関するもののようです。デプスマップ/遅延レンダリングの助けを借りたシェーダーパイプラインは、オールドスクールの3Dノイズアルゴをどの程度処理できますか?

...テクスチャ画像を形状の表面にパラメトリックにマッピングする方法を理解するのではなく、ノイズベースのテクスチャの体積特性により、ピクセルの(x、y、z)位置で単純に評価することができますシェーダー。このようにして、テクスチャを効果的にソリッドマテリアルから切り出すことができます。これは、合理的な歪みのないパラメトリックマッピングを実行するよりもはるかに簡単です。

これらの種類のボリュームノイズベースのプロシージャルテクスチャは、長編映画の主流であり、シェーダーはリアルタイムパフォーマンスを必要としません...今日のすべての特殊効果フィルムは、ノイズベースのプロシージャルシェーダーを多用しています... PixarのRenderManなどの言語で記述されたピクセルシェーダー内でのノイズ関数の広範な使用について。GPUでリアルタイムで使用できるノイズ関数の適切な実装により、デスクトップとコンソールの次世代のインタラクティブエンターテイメントに組み込まれた長編映画のエキサイティングなビジュアルアイデアを楽しみにしています。 http://http.developer.nvidia.com/GPUGems/gpugems_ch05.html


非常に興味深い読み物です!しかし、2番目の段落で何を意味するかを視覚化するのに問題があります。
減速

おそらく私は図を作成できます。私が意味するのは、ビットマップをサンプリングする代わりに、色(またはあなたが望むもの)は、代わりにノイズアルゴリズムによって単純に決定されるということです。そうすることで、ビットマップピクセル間の補間が不要になり(完全な1x1ピクセル位置でサンプリングする必要がないため)、理論的には解像度は無限になります。これは、特定のステップ/間隔(=ビットマップ解像度)がある事前に計算されたルックアップテーブルを使用する代わりに、実際に特定の金利の金利を計算するようなものです。
オスカーデューブボーン

参照した記事全体を読んだ後。私ははるかによく理解していますが、ref。画像は、両当事者に不利益とtl; drの利益をもたらします。:)
減速

0

3Dテクスチャパターンは、2Dテクスチャパターンが2Dポリゴンのピクセルに適用されるのとほぼ同じ方法で、ボリュメトリックボディのボクセルに適用されます。JavaScriptの3Dボリュメトリックテクスチャの例を次に示します(WebGLが必要です)。

http://kirox.de/test/Surface.html

[v]を押して、ボディを回転させ、生成されたテクスチャのグラデーションをマウスホイールで変更します

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